① Verilog语言里如何调用函数
verilog中函数(function)都是有返回值的,在定义函数时如果你不声明返回值的类型和宽度,则默认为1个1位的reg型变量。
verilog中调用函数和C语言类似,格式为:函数名(实参1,实参2...)
例如你定义了一个函数die,此函数中声明为input的端口为a,b,实际调用时用到的变量为aa,bb,假设要把返回值赋给q,则调用语句为:
q=die(aa,bb);
需要注意的是不能把die(aa,bb)作为一条完整的语句,它实际相当于一个操作数。
——Medied.Lee
② Verilog程序中如何调用子模块
verilog在调用模块的时候(也称模块实例化),信号端口可以通过位置或名称关联,其形式如下面的例子:x0dx0ax0dx0amole and (C,A,B);x0dx0ainput A,B;x0dx0aoutput C;x0dx0a... x0dx0aendmolex0dx0ax0dx0aand A1 (T3, A1, B 1); //A1为调用and这个模块的一个加法器,在对A1进行实例化时采用位置关联,T3对应输出端口C,A对应A1,B对应B1。x0dx0aand A2(.C(T3),.A(A2),.B(B2));//在对A2实例化时采用名字关联,C是and 器件的端口,其与信号T3相连,A对应A2,B对应B2
③ verilog对 mif文件的调用
把.mif文件的路径写进自己设计的rom模块的相应代码中就可以啦。我用的max+plus
ii自建的rom,利用c语言生成的.mif文件,在rom代码中引用了.mif文件的路径,就把数据写进去啦。
④ Verilog 调用其他模块寄存器中的数据
把寄存器设为mod1的输出端口,或者赋值给 输出端口
⑤ verilog怎么函数调用
verilog函数调用实例。
mole comb15 (A, B, CIN, S, COUT);
input [3:0] A, B;
input CIN;
output [3:0] S;
output COUT;
wire [1:0] S0, S1, S2, S3;
function signed [1:0] ADD;
input A, B, CIN;
reg S, COUT;
begin
S = A ^ B ^ CIN;
COUT = (A&B) | (A&CIN) | (B&CIN);
ADD = {COUT, S};
end
endfunction
assign S0 = ADD (A[0], B[0], CIN),
S1 = ADD (A[1], B[1], S0[1]),
S2 = ADD (A[2], B[2], S1[1]),
S3 = ADD (A[3], B[3], S2[1]),
S = {S3[0], S2[0], S1[0], S0[0]},
COUT = S3[1];
endmole
⑥ verilog模块端口为二维数组如何调用
必须分解为一维数组,然后再端口上一一列出。所以这点不如VHDL。 x0dx0a其实你如果嫌麻烦,可以变通一下的,比如做个接口,将两者对接。举例如下:x0dx0a你需要调用一个128*64存储器,但是设计128个64位宽的线组/寄存器组,管理起来很不方便,比如x0dx0aa0[63:0],a1[63:0],a2[63:0]..............a127[63:0],在外界调用时还得设计一个查找表。x0dx0a因此,你可以设计一个如下的寄存器组aa[128*64-1:0],在外界调用时,将二维数组的两个地址相乘就行了。x0dx0amoudle jiekou(aa,a0,a1.......a127);x0dx0ainput [8191:0] aa;x0dx0aoutput [63:0] a0,a1.....a127;x0dx0aassign a0=aa[63:0];x0dx0aassign a1=aa[127:64];x0dx0a.,,,,,,,x0dx0aendmole
⑦ Verilog程序中如何调用子模块
verilog在调用模块的时候,信号端口可以通过位置或名称关联。
调用形式:mole and (C,A,B);input A,B;output C;... endmoleand A1 (T3, A1, B 1); //A1为调用and这个模块的一个加法器,在对A1进行实例化时采用位置关联,T3对应输出端口C,A对应A1,B对应B1。and A2(.C(T3),.A(A2),.B(B2));//在对A2实例化时采用名字关联,C是and 器件的端口,其与信号T3相连,A对应A2,B对应B2。