|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我是小白自学Verilog一周,写了一个时序逻辑电路(电路图贴出来了)代码如下:
module D_latch_posedge(q,q_bar,data,clk);
output q,q_bar;
input data,clk;
reg q;
assign q_bar = ~q;
always @(posedge clk)
begin
q <= data;
end
endmodule
module BCD_tran_E3C(b_out,b_in,clk);
output b_out;
input b_in,clk;
wire q0,q1,q2,q0_bar,q1_bar,q2_bar;
wire D2;
assign D2 = ((q1_bar & q0_bar & b_in)|(q2_bar & q0 & ~b_in)|(q2 & q1 & q0));
D_latch_posedge M1(q0,q0_bar,q1_bar,clk);
D_latch_posedge M2(q1,q1_bar,q0,clk);
D_latch_posedge M3(q2,q2_bar,D2,clk);
assign b_out = ((q2_bar & ~b_in)|(q2_bar & b_in));
endmodule
检测上面那个D锁存器是没有问题的,问题应该在下面(BCD转余三码的电路)
测试代码如下:
module t_BCD_tran_E3C();
reg clk=0,b_in;
wire b_out;
BCD_tran_E3C M1(b_out,b_in,clk);
initial begin
#40 $finish;
end
parameter cnt = 10;
initial begin:inputclk
forever
begin
# (cnt/2) clk = 1;
# (cnt/2) clk = 0;
end
end
initial begin:inputdata
b_in = 0;
#20 b_in = 1;
#10 b_in = 0;
end
endmodule
modelsim里面测试结果总是不定状态,调了一天也想不明白问题在哪,求助大家!(图片是电路图和希望的仿真结果)
|
-
|