电子元器件论坛
直播中

HCPcry

8年用户 1198经验值
擅长:处理器/DSP
私信 关注

verilog写的门级d触发器做2分频用modelsim和ise仿真都无法出现波形?

我用门级描述verilog写了d触发器,然后链接了q非端和d断,把输出q连接到一个计数器想做2分频,但是因为没有初始状态,波形都是x。仿真器里可以设置初始状态么?
然后我给d触发器加了一个r端,使初始状态为0,但是那样我跑仿真之后仿真到第一个时钟上升沿就没有之后的波形了,可能是卡在哪个地方。
计数器模块单独仿真正常。
d触发器模块如果不把d和q非端连接起来的话功能也正常。
d触发器加了r段之后可以看到第一个时钟上升沿q从0变1,之后就卡住没有图形了。

代码如下:

//连接计数器和2分频电路
module counter2d(out,clk,reset,r);
output [7:0] out;
input clk,reset,r;
dff m1 (clk,q,r);
counter8 m2(out,q,reset);
endmodule

//d触发器原理2分频门级描述
module dff(clk,q,r);
output q;
input clk,r;
wire d;
nand g1 (w1,d,clk);
nand g2 (w2,w1,clk);
nand g3 (q,w1,d);
nand g4 (d,q,w2,r);
endmodule

//八位计数器
module counter8(out,clk,reset);
output [7:0] out;
reg [7:0] out;
input reset,clk;
always @(posedge clk)
begin
if (reset) out <= 0;
else out<= out+1;
end
endmodule

//测试testbench
module tbcounter2d;

reg clk,reset,r;

wire out;

counter2d i1(out,clk,reset,r);

initial
begin
clk=0;
forever #50 clk= !clk;
end

initial
begin
reset=1;
#110 reset=0;
end

initial
begin
r=0;
#30 r=1;
end

endmodule

回帖(1)

qjqb

2023-5-10 11:52:24
你是新手还是老手?如果是新手,先从RTL级开始吧,等你熟练了之后再学习门级的使用,一般用不到,reset是低有效,你一直让它为低时不行的,这样就一直处于复位状态了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分