时序逻辑电路设计之D触发器

本文旨在总结近期复习的数字电路d触发器(边沿触发)的内容。
d触发器是一个具有 记忆功能 ,持有 两个稳定状态(0和1) 的信息存储器件,是数字电路初学者所能接触到最简单的 时序逻辑电路 , 也是多种时序逻辑的电路的基本逻辑单元。
边沿触发d触发器特点是可以在时钟脉冲到来时刻从一个状态翻转到另一个状态,其具有的存储特性也是时序逻辑的基本特征。
其内部结构可以由3个rs锁存器构成
将其绘制成一个模型,最简单的如下图表示,d为数据输入端,clk为时钟输入端,q为数据输出端口。
这种d触发器的功能也是相当简单的,就是当clk上升沿到来时,q的输出等于d,特征方程写为 q=d* (没有任何控制输入的情况下)。 波形图如下所示:
为了进一步具体得知其作用,接下来在fpga开发板上展示其功能,使用的办卡为德致伦的genesys2,芯片为kintex-7系列的xc7k325tffg900-2。
为了更加全面一些,在此为d触发器增加复位功能(按下按钮回到初始状态),此时可以有两种复位d触发器,一种是同步复位,一种是异步复位。
同步复位:按钮按下,上升沿到来时刻复位,复位动作和系统时钟同步。
异步复位:按钮按下立刻复位,复位无需看系统时钟的脸色。
下面给出本设计的模块框图:
说明一下各个端口的作用,sys_clk为时钟,sys_rst_n为复位,key_in为按键输入,即为触发器的d,led_out为输出,本demo会将其接到开发板的灯上,用灯的亮灭展示d触发器的效果。
首先展示同步d触发器的verilog代码和testbench以及仿真结果。
module flip_flop(input wire sys_clk,input wire sys_rst_n,input wire key_in,output reg led_out );always@(posedge sys_clk)if (sys_rst_n == 1'b0) led_out <= 1'b0;else led_out <= key_in;endmodule————————————————————testbench——————————————————————————————————`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// company: // engineer: // // create date: 2023/01/21 20:02:21// design name: // module name: tb_flip_flop// project name: // target devices: // tool versions: // description: // // dependencies: // // revision:// revision 0.01 - file created// additional comments:// //////////////////////////////////////////////////////////////////////////////////module tb_flip_flop( ); reg sys_clk; reg sys_rst_n; reg key_in; wire led_out; initial begin sys_clk = 1'b1; //时钟信号初始化为1 sys_rst_n <= 1'b0; //复位信号初始化,因为低电平有效,所以为0 key_in <= 1'b0; //输入信号的初始化 #20 sys_rst_n <= 1'b1; //20ns后,复位信号释放,因为低电平复位,所以变成高电平开始工作。 #210 sys_rst_n <= 1'b0; #40 sys_rst_n <= 1'b1; //复位40ns再次释放 endalways #10 sys_clk = ~sys_clk;always #20 key_in <= {$random}%2; //20ns产生一次随机数,比时钟周期大,利于波形观察flip_flop flip_flop_inst( .sys_clk(sys_clk), .sys_rst_n(sys_rst_n), .key_in(key_in), .led_out(led_out));endmodule仿真结果跑500ns:
可以发现,尽管系统已经处于复位释放的状态(复位键为高电平),时钟,数据和上升沿也都到来,但是输出会在时钟的下一拍进行变化。 **即:当时钟和信号在同一时刻变化时,我们以时钟的上升沿前一时刻采集的输入信号为依据来产生输出信号。 **
下面是异步d触发器的代码,区别是增加了复位下降沿到来时刻的敏感性(always语句),testbench和同步d触发器的一致。
module flip_flop(input wire sys_clk,input wire sys_rst_n,input wire key_in,output reg led_out );always@(posedge sys_clk or negedge sys_rst_n)if (sys_rst_n == 1'b0) led_out <= 1'b0;else led_out <= key_in;endmodule
可以观察到复位下降沿到来时刻,输出即刻置为0,经过综合之后的rtl电路如图所示,和设计(异步d触发器电路,同步d触发器电路多一个mux模块)的差不多。
然后分配管脚。
此次实验中出现的一个问题是,此次使用的fpga已经没有单端口时钟输出,所以需要调用pll的ip核合成输出一个单端口的时钟信号,这个准备下一篇再说。
实验设备(谢谢老板买的高级货,可惜许可证快到期了):

什么是QUIC,QUIC在MQTT通信场景中的应用前景
氮氧化物监测仪的应用领域及功能特点
魅族高通强强联手:Pro7将让小米华为等友商颤抖!
传导CE整改?CE传导发射整改?
世界上首个能够在飞行过程中变形的飞行机器人问世 可实现自我调整
时序逻辑电路设计之D触发器
如何正确认识AI伦理?人类对AI的偏见
吐槽智能手机上那些不爽的事
UI设计新起之秀Pixso斩获MVX年度创新金奖
谷歌 Pixel 6 拆解,FD-SOI首次被用于5G毫米波
针对FPGA的GTP信号 PCB设计过程中需要考虑到以下因素
自动驾驶计算平台发展趋势,自动驾驶专用芯片的生存之道
传中国银行涉足区块链 极力关注扩容问题
隔行如隔山 国内车载GPS市场中的行话
随着电池技术的发展,锂电池隔膜两极分化现象逐渐加剧
一起发明吧!FTC科技挑战赛(华北赛区)清华落幕
【功率放大器应用】超声导波的衰减特性
麒麟820 AI跑分公布 仅次于麒麟990 5G
变电站防雷接地故障的判断和处理方法
国有车企被逼着由内而外进行变革,国有车企们该何去何从?