[英]Verilog D Flip Flop
我正在尝试编写仅使用NOR门的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
电路实际上正在为R
, S
, QN
和Q
分别创建一个单独的触发器,因为您已将tnis块声明为是边沿触发的 (这就是negedge CLK
含义)。 如果要使用纯组合电路(如门级图所示),则应该使用always @(*)
块。
注意,Quartus II有一个有用的工具,称为RTL Viewer ( 工具-> Netlist Viewers-> RTL Viewer ),它显示了合成电路的模块级原理图。 如果您看一下,您会发现实际上是用代码创建了四个触发器(以及一些逻辑),而不是一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.