文章目录
一、D触发器简介
D触发器是一种最简单的触发器,在触发边沿到来时,将输入端的值存入其中,并且这个值与当前存储的值无关。在两个有效的脉冲边沿之间,D的跳转不会影响触发器存储的值,但是在脉冲边沿到来之前,输入端D必须有足够的建立时间,保证信号稳定。
- D:输入信号
- CLK:时钟信号
- SET:置位信号,低电平有效
- CLR:清除(重置)信号,低电平有效
- 当控制信号SET和CLR中存在低电平时,输出信号 Q n + 1 Q^{n+1} Qn+1跟随CLR(清除信号)
- 当控制信号SET和CLR都为高电平时,如果CLK为上升沿,输出信号 Q n + 1 Q^{n+1} Qn+1跟随D;如果CLK为除上升沿的其他状态,输出信号 Q n + 1 Q^{n+1} Qn+1状态保持不变,依旧为 Q n Q^n Qn 时的状态
D触发器是上升沿触发
二、在 Quartus-II 中自己用门电路设计一个D触发器
1. 创建一个工程文件
如何新建一个工程文件,请参考:quartus II输入原理图及仿真步骤
2. 新建一个波形文件
① 选择nand2,二个输入的与非门,依次添加四个nand2和一个非门not
② 通过工具栏上面输入输出工具,以及连线工具,设计出以下的电路图
③ 保存电路图
④ 编译原理图文件
启动分析与综合,编译原理图文件
rtl viewer,查看硬件电路图(Tools ---> Netlist Viewers ---> RTL Viewer
)
3. 创建vwm格式波形文件,输入激励源
添加后,效果如下
编辑输入Clk,产生时钟信号
鼠标选择D,Q信号Q_n,,进行编辑
4. 时序波形仿真
运行时许仿真,可能会报如下错误:
解决办法
重新开始仿真
三、在 Quartus-II 中直接调用一个D触发器电路
1. 新建一个工程文件
2. 新建一个波形文件
添加D触发器(器件name为dff)
3. 编译原理图
编译后,查看硬件电路图如下:
4. 创建vwm格式波形文件,并时许仿真
编辑波形
时序仿真
四、在 Quartus-II用Verilog语言写一个D触发器
1. 创建一个工程文件
2. 编写Verilog文件
添加如下内容:
module dff(clk,clr,rst,d,q);//clr清0,rst复位
input clk,clr,rst,d;
output q;
reg q;
always@(posedge clk or posedge clr)
begin
if(clr==1'b1)q<=1'b0;
else if(rst==1'b1)q<=1'b1;
else q<=d;
end
endmodule
然后保存并编译
3. 查看硬件电路图
4.测试代码
module test03_tb;
reg clk,rst,clr,d;
wire q;
initial
begin
clk=1'b0;
forever #10 clk=~clk;
end
initial
begin
clr=1'b0;
rst=1'b0; d=1'b0;
#10 rst=1'b1;clr=1'b0;d=1'b0;
#10 rst=1'b1;clr=1'b1;d=1'b1;
#10 rst=1'b0;clr=1'b0;d=1'b1;
#20 d=1'b0;
#20 d=1'b1;
end
test03 U1(.clk(clk),.clr(clr),.rst(rst),.d(d),.q(q));
endmodule
具体仿真过程请参考:Modelsim SE版本的安装及使用方法
5. 仿真结果