
verilog请问在顶层模块里面如何实现底层模块之间的参数传递?谢谢。 20
请问在顶层模块里面如何实现底层模块之间的参数传递?谢谢。EG:moduleTop(clk0,sum0);inputclk0;output[3:0]sum0;wire[3:...
请问在顶层模块里面如何实现底层模块之间的参数传递?谢谢。
EG:
module Top( clk0, sum0 );
input clk0;
output [3:0] sum0;
wire [3:0] sum0;
wire [2:0] count0;
cnt u0(
.clk(clk0),
.count(count0)
);
add_cnt u1(
.clk(clk0),
.count(count0),
.sum(sum0) );
endmodule
module cnt( clk, count );
input clk;
output [2:0] count;
reg [2:0] count;
always @(posedge clk)
count <= 2'd2;
endmodule
module add_cnt( clk, count, sum );
input clk;
input count;
output [3:0] sum;
reg [3:0] sum;
always @(posedge clk)
sum <= count + 2'd1;
endmodule
整体调试的结果是sum=1;count=0;求解答。谢谢! 展开
EG:
module Top( clk0, sum0 );
input clk0;
output [3:0] sum0;
wire [3:0] sum0;
wire [2:0] count0;
cnt u0(
.clk(clk0),
.count(count0)
);
add_cnt u1(
.clk(clk0),
.count(count0),
.sum(sum0) );
endmodule
module cnt( clk, count );
input clk;
output [2:0] count;
reg [2:0] count;
always @(posedge clk)
count <= 2'd2;
endmodule
module add_cnt( clk, count, sum );
input clk;
input count;
output [3:0] sum;
reg [3:0] sum;
always @(posedge clk)
sum <= count + 2'd1;
endmodule
整体调试的结果是sum=1;count=0;求解答。谢谢! 展开
展开全部
在Verilog中,调用底层模块的语法结构为:底层模块名 实例名 参数定义。
比如在top_m里,如果已经全部源文件加到了同一个工程里,那么可以直接
bottom1_m bottom1_m(A,B,C)
注意 A,B,C这些参数的顺序,要和底层定义的是一致的。名字可以不一致。
如果没有加到同一个工程,可以使用
'include "bottom1.v"
可不可以综合,这个得看你代码怎么写的,和层次无关。
module uart_top(clk, nreset, rec, send, data);
input clk;
input nreset;
input rec;
output send;
parameter len = 16;
output [len:0]data;
uart_rec rec1( //底层模块1
.rec(rec),
.clk(clk),
.nreset(nreset),
.data(data)
);
uart_send send1(//底层模块2
.data(data),
.clk(clk),
.nreset(nreset),
.send(send)
);
比如在top_m里,如果已经全部源文件加到了同一个工程里,那么可以直接
bottom1_m bottom1_m(A,B,C)
注意 A,B,C这些参数的顺序,要和底层定义的是一致的。名字可以不一致。
如果没有加到同一个工程,可以使用
'include "bottom1.v"
可不可以综合,这个得看你代码怎么写的,和层次无关。
module uart_top(clk, nreset, rec, send, data);
input clk;
input nreset;
input rec;
output send;
parameter len = 16;
output [len:0]data;
uart_rec rec1( //底层模块1
.rec(rec),
.clk(clk),
.nreset(nreset),
.data(data)
);
uart_send send1(//底层模块2
.data(data),
.clk(clk),
.nreset(nreset),
.send(send)
);
展开全部
模块里面这么写
module XXX #(
parameter XXX1=XX,
XXX2=XX //XX是默认值
)
(
input XXX
...
);
顶层例化模块的时候
XXX #(.XXX1(XX), .XXX2(XX)) U_XXX(
...
)
------------------------------------------------
你这个传的不是参数,传的就是信号
cnt模块有问题啊,cnt <= cnt +3'd2;才对吧
而且你的add模块input count要声明位宽呀input [2:0] count;
add里面sum和count位宽也不匹配,不过你要是综合不报错这个也不用管就是了
module XXX #(
parameter XXX1=XX,
XXX2=XX //XX是默认值
)
(
input XXX
...
);
顶层例化模块的时候
XXX #(.XXX1(XX), .XXX2(XX)) U_XXX(
...
)
------------------------------------------------
你这个传的不是参数,传的就是信号
cnt模块有问题啊,cnt <= cnt +3'd2;才对吧
而且你的add模块input count要声明位宽呀input [2:0] count;
add里面sum和count位宽也不匹配,不过你要是综合不报错这个也不用管就是了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
module add_cnt( clk, count, sum ); input clk;input count;//这里位数不对output [3:0] sum;reg [3:0] sum;always @(posedge clk) sum <= count + 2'd1;endmodule
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
模块add_cnt里面定义的input count的位宽不对啦,修改一下就好,已经做过仿真了,ok的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询