繁体   English   中英

Verilog D触发器

[英]Verilog D Flip Flop

我正在尝试编写仅使用NOR门的D触发器的特定版本:

以下是门级图:

或非门D型触发器

我在Verilog中使用的代码:

module DFlipFlop(D,CLK,Q,QN);
    input D, CLK;
    output Q, QN;
    reg Q, QN, R, S;

always @(negedge CLK) begin
    R = ~(~(~(D|S)|R)|CLK);
    S = ~(~(D|S)|R|CLK); 
    Q = ~(R|QN);
    QN = ~(S|Q);
end

endmodule

然后,我将编译后的程序上载到PLD,它不是触发器,我也不知道为什么。 我已经尝试了许多不同的东西。

请注意,我必须在程序中将4个方程式用于R,S,Q和QN。

您的问题是以下行:

always @(negedge CLK) begin

电路实际上正在为RSQNQ分别创建一个单独的触发器,因为您已将tnis块声明为是边沿触发的 (这就是negedge CLK含义)。 如果要使用纯组合电路(如门级图所示),则应该使用always @(*)块。

注意,Quartus II有一个有用的工具,称为RTL Viewer工具-> Netlist Viewers-> RTL Viewer ),它显示了合成电路的模块级原理图。 如果您看一下,您会发现实际上是用代码创建了四个触发器(以及一些逻辑),而不是一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM