verilog程序,敬请高人指点
时间:10-02
整理:3721RD
点击:
本人是初学者,编了个小程序,在muxplus ii中能够通过编译,但是在仿真波形时没有输入信号出现,敬请高人指点,谢谢。
module carry_lookahead(A,B,Sum,Cout);
parameter number=8; //define constant number
output[number-1:0] Sum;
output Cout;
input[number-1:0] A,B;
reg Cout;
reg[number-1:0] Sum;
reg[number-1:0] gen ,pro;// define two middle varible
reg[number-1:0] temp_Cout;//define cout's middle varible
integer N,M;
always @(A or B)
begin
for(N=0;N<number;N=N+1)
begin
pro[N]<=!A[N]&&B[N]+!B[N]&&A[N] ;
gen[N]<=A[N]&&B[N];
Sum[N]<=!pro[N]&&temp_Cout[N]+!temp_Cout[N]&&pro[N] ;
end
end
always @(A or B)
begin
temp_Cout[0]<=0;
for(M=1;M<number;M=M+1)
temp_Cout[M]<=gen[M-1]+pro[M-1]&&temp_Cout[M-1];
Cout<=temp_Cout[7];
end
endmodule
module carry_lookahead(A,B,Sum,Cout);
parameter number=8; //define constant number
output[number-1:0] Sum;
output Cout;
input[number-1:0] A,B;
reg Cout;
reg[number-1:0] Sum;
reg[number-1:0] gen ,pro;// define two middle varible
reg[number-1:0] temp_Cout;//define cout's middle varible
integer N,M;
always @(A or B)
begin
for(N=0;N<number;N=N+1)
begin
pro[N]<=!A[N]&&B[N]+!B[N]&&A[N] ;
gen[N]<=A[N]&&B[N];
Sum[N]<=!pro[N]&&temp_Cout[N]+!temp_Cout[N]&&pro[N] ;
end
end
always @(A or B)
begin
temp_Cout[0]<=0;
for(M=1;M<number;M=M+1)
temp_Cout[M]<=gen[M-1]+pro[M-1]&&temp_Cout[M-1];
Cout<=temp_Cout[7];
end
endmodule
小第也曾碰到过这问题,麻烦哪位高手帮帮忙.感激不尽!
你这个应该只是个设计的顶层。应该没有加过激励吧。
而且你的代码风格上应该问题不少。最好还是去找本coding rule一类的书先看一下。
代码中没有激励,自然没有仿真波形.
呵呵,随便找本verilog的教程看看吧
连INPUT都没有,哪有OUTPUT哦?
简单的说,你连A B是什么数都没有告诉代码,程序怎么动哦?
输入信号需要你在仿真的时候手工添加激励信号 或者写一个testbench文件来产生激励信号。
在编写可综合的verilog代码时最好不要用for循环。
