verilog语言
时间:03-14
整理:3721RD
点击:
求助
小弟乃verilog新手,以下这个程序不知道错误在哪,仿真就是不正确呢,表现为q的值始终为0,求各位大仙多多指教!
module zdws(q,clk,clr,plus,minus);
input clk,clr,plus,minus;
output[7:0]q;
reg[7:0]q;
always@(posedge clk or negedge clr)
begin
if(!clr) q<=8'h00;
else
case({plus,minus})
2'b10:begin//递增
if(q[3:0]==4'd9)
begin
q[3:0]<=4'd0;
if(q[7:4]==9)q[7:4]=4'd0;
else q[7:4]<=q[7:4]+1'b1;
end
else q[3:0]<=q[3:0]+1'b1;
end
2'b01:begin//递减
if(q[3:0]==4'd0)
begin
q[3:0]<=4'd9;
if(q[7:4]==0)q[7:4]=4'd9;
else q[7:4]<=q[7:4]-1'b1;
end
else q[3:0]<=q[3:0]-1'b1;
end
2'b11:q<=q;//暂停
default:q<=4'bx;
endcase
end
endmodule
小弟乃verilog新手,以下这个程序不知道错误在哪,仿真就是不正确呢,表现为q的值始终为0,求各位大仙多多指教!
module zdws(q,clk,clr,plus,minus);
input clk,clr,plus,minus;
output[7:0]q;
reg[7:0]q;
always@(posedge clk or negedge clr)
begin
if(!clr) q<=8'h00;
else
case({plus,minus})
2'b10:begin//递增
if(q[3:0]==4'd9)
begin
q[3:0]<=4'd0;
if(q[7:4]==9)q[7:4]=4'd0;
else q[7:4]<=q[7:4]+1'b1;
end
else q[3:0]<=q[3:0]+1'b1;
end
2'b01:begin//递减
if(q[3:0]==4'd0)
begin
q[3:0]<=4'd9;
if(q[7:4]==0)q[7:4]=4'd9;
else q[7:4]<=q[7:4]-1'b1;
end
else q[3:0]<=q[3:0]-1'b1;
end
2'b11:q<=q;//暂停
default:q<=4'bx;
endcase
end
endmodule
你的testbench中{plus,minus}是不是始终等于2'b11
这个要看你的仿真程序了。
是啊,要看你的testbench了
我用的是波形仿真,设置的值是plus始终为1,minus值始终为0.这个时候仿真结果q的值始终为0,怎么回事啊?
我用的是波形仿真,q 的值始终是0,怎么回事?
看看clean是多少。 另外看看逻辑关系对么。 看你的begin end块总觉得怪怪