verilog学习记录(3)——D触发器设计

这篇博客详细介绍了D触发器的基本原理、真值表和门级结构,并通过Verilog代码实现了一个D触发器,包括带清零功能的四位寄存器。还进行了RTL仿真和波形分析,探讨了毛刺信号的产生原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、门级结构描述

二、D触发器基本原理及真值表

2.1 SR触发器介绍

2.1.1 触发器介绍

2.1.2 SR触发器

2.1.3 SR触发器原理图

2.2 D触发器介绍

2.2.1 D触发器原理图

2.2.3 D型主从触发器原理图

2.2.4 门级结构描述D型触发器源码

三、代码编写及仿真

3.1 由触发器组成带清零四位寄存器

3.2 RTL仿真图

3.3 仿真测试文件

3.4 仿真波形


一、门级结构描述

        and          与门

        nand        与非门

        nor           或非门

        or             或门

        xor           异或门

        xnor        异或非门

        buf         缓冲器

        not        非门

门类型引用模式:        nand #10 nd1(a,data,clock,clear);

该例中nand表示与非门,#10是时间延迟,nd1是与非门名称,data,clock,clear输入信号,a输出。

二、D触发器基本原理及真值表

2.1 SR触发器介绍

2.1.1 触发器介绍

触发器是一种逻辑组合电路,其可存储一位二进制数,有两个稳定状态,SET(置位)和RESET(复位)。当输入信号发生改变并满足一定条件,输出信号随之发生改变。

2.1.2 SR触发器

作用:将输入信号转化为一个稳定输出。

SR触发器名称由来:S-SET设置,R-RESET复位。

2.1.3 SR触发器原理图

        触发器由两个交叉的与非门构成,其中一个与非门的输入是另一个的输出。其原理图如下:

真值表如下:

2.2 D触发器介绍

2.2.1 D触发器原理图

D触发器原理图如下:

2.2.2 D型触发器真值表

### Verilog 中 D 触发器的实现与用法 #### 使用 Verilog 编写基本的 D 触发器模块 为了创建一个标准的正边沿触发的D触发器,在Verilog中可以定义如下所示的一个简单模型[^1]: ```verilog module dff ( input wire clk, input wire reset_n, input wire d, output reg q ); always @(posedge clk or negedge reset_n) begin : proc_dff if (!reset_n) q <= 1&#39;b0; else q <= d; end endmodule ``` 此段代码描述了一个具有异步低电平有效的复位信号`reset_n`、时钟输入`clk`以及数据输入端口`d`的标准D型触发器。当检测到上升沿到来时,如果复位信号处于高电平,则将当前的数据输入值赋给输出寄存器;而一旦复位信号变为低电平状态,无论何时都会强制使输出清零。 #### 测试平台编写 对于上述所写的D触发器模块来说,可以通过构建测试平台来进行行为级仿真来检验其工作情况是否正常[^2]: ```verilog module tb_dff(); reg clk; reg reset_n; reg d; wire q; // Instantiate the Design Under Test (DUT). dff dut( .clk(clk), .reset_n(reset_n), .d(d), .q(q) ); initial begin $dumpfile("tb_dff.vcd"); $dumpvars(0, tb_dff); // Initialize Inputs. clk = 0; reset_n = 0; d = 0; // Add your stimulus here to toggle inputs. #5 reset_n = 1; #10 d = 1; #20 d = 0; // Finish simulation after some time. #30 $finish; end // Clock generation process. always #5 clk = ~clk; endmodule ``` 这段程序模拟了实际应用环境下的操作过程——先初始化各个控制线的状态,接着按照一定的时间间隔改变这些控制线上携带的信息直至完成整个仿真的周期结束为止。同时利用VCD文件记录下了所有节点的变化历史以便后续分析查看波形图。 #### 应用于分频电路的设计 除了单独作为一个存储单元外,多个D触发器还可以被组合起来构成更复杂的逻辑结构比如二分频器等频率除法装置。这里给出了一种基于两个连续连接在一起工作的D触发器组成的最基础形式的偶数倍率分频方案[^4]: ```verilog module div_by_two ( input wire clk_in, output reg clk_out ); reg temp_q; // First stage of flip-flop. always @(posedge clk_in) begin temp_q <= !temp_q; end assign clk_out = temp_q; endmodule ``` 在这个例子当中,每当外部提供过来的高频脉冲序列经过第一个内部暂态变量`temp_q`之后就会变成原来的一半速度再传送给下一个阶段直到最终形成所需的较低速率版本输出至外界使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱多多小姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值