hello,大家好,这里是xddcore。最近开始折腾FPGA,然后今天早上花了一个多小时的时间,搭建了一个D类触发器。为后面要做的BCD Genertor做一些前期工作。(关于 BCD Genertor的设计思路可以看我的这篇博客:https://blog.csdn.net/qq_36229876/article/details/107728996)

前言

什么是D类触发器?

D触发器(data flip-flop或delay flip-flop)由4个与非门组成,其中G1和G2构成基本RS触发器。电平触发的主从触发器工作时,必须在正跳沿前加入输入信号。D触发器在时钟脉冲CP的前沿(正跳变0→1)发生翻转,触发器的次态取决于CP的脉冲上升沿到来之前D端的状态,即次态=D。因此,它具有置0、置1两种功能。由于在CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。

应用

D触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等。在BCD Genertor中,我主要把它当作每次自增1的加法器用。

引脚定义

D, //数据输入
CLK, //时钟(上升沿有效)
SD, //复位(低电平有效),Q置1
RD, //复位(低电平有效),Q置0
Q, //输出端
QN //输出端Q取反

工作原理

如果要用文字来描述工作原理会比较复杂,但是用真值表的话,大家一看就明白了。

ps:CP=CLK,R=RD,S=SD,~Q=QN
一句话概述D类触发器工作原理:当RD=SD=1时,每当CLK上升沿,便将D上的电平状态赋值给Q,QN等于~Q
再来两句话进行补充说明:
1.当RD=0,SD=1时,D类触发器处于复位低电平保持状态,Q=0,QN=1
1.当RD=1,SD=0时,D类触发器处于复位高电平保持状态,Q=1,QN=0

Verilog程序编写

`timescale 1 ns/ 1 ns //时间单位/时间精度module data_flip_flop( //定义D类触发器模块D, //数据输入CLK, //时钟(上升沿有效)SD, //复位(低电平有效),Q置1RD, //复位(低电平有效),Q置0Q, //输出端QN //输出端取反);//===========================================================================
// 端口声明与寄存器定义
//===========================================================================
input D; //数据输入
input CLK; //时钟输入(上升沿有效)
input SD; //复位(低电平有效),Q置1
input RD; //复位(低电平有效)
output Q; //输出端
output QN; //输出端取反reg Q; //1bit的输出Q
reg QN; //1bit的输出QN//===========================================================================
// 主体逻辑
//===========================================================================    always @(posedge CLK) //CLK上升沿触发beginif({RD,SD} == 2'b11) //当RD,SD都为高电平时,每个CLK上升沿,把D的数据取到QbeginQ <= D; //非阻塞赋值QN <= ~D;endelse if({RD,SD} == 2'b01) //当RD=0,SD=1时beginQ <= 1'b0;QN <= 1'b1;endelse if({RD,SD} == 2'b10) //当RD=1,SD=0时beginQ <= 1'b1;QN <= 1'b0;endend
endmodule //模块结束        

TestBench

// Copyright (C) 2017  Intel Corporation. All rights reserved.
// Your use of Intel Corporation's design tools, logic functions
// and other software and tools, and its AMPP partner logic
// functions, and any output files from any of the foregoing
// (including device programming or simulation files), and any
// associated documentation or information are expressly subject
// to the terms and conditions of the Intel Program License
// Subscription Agreement, the Intel Quartus Prime License Agreement,
// the Intel FPGA IP License Agreement, or other applicable license
// agreement, including, without limitation, that your use is for
// the sole purpose of programming logic devices manufactured by
// Intel and sold by Intel or its authorized distributors.  Please
// refer to the applicable agreement for further details.// *****************************************************************************
// This file contains a Verilog test bench template that is freely editable to
// suit user's needs .Comments are provided in each section to help the user
// fill out necessary details.
// *****************************************************************************
// Generated on "08/04/2020 10:22:36"// Verilog Test Bench template for design : data_flip_flop
//
// Simulation tool : ModelSim-Altera (Verilog)
// `timescale 1 ns/ 1 ns
module data_flip_flop_test(); //模块名和vt文件名保持一致reg CLK;reg D;reg RD;reg SD;// wires                                               wire Q;wire QN;// assign statements (if any)                          data_flip_flop i1 (// port map - connection between master ports and signals/registers   .CLK(CLK),.D(D),.Q(Q),.QN(QN),.RD(RD),.SD(SD));initial //初始化                                           begin                                                                          CLK = 1'b1; //时钟线拉高D <= 1'b0;  //数据线拉低   RD <= 1'b1; //ban 0 resetSD <= 1'b1; //ban 1 reset$display("Running Data flip-flop testbench");                                                                    foreverbegin#60 D <= 1'b1;#22 D <= 1'b0; //模拟噪声#2 D <= 1'b1; //模拟噪声#2 D <= 1'b0; //模拟噪声#16 D <= 1'b0;end  endalways #20 CLK <= ~CLK; //生成周期40ns的clk信号endmodule

RTL仿真结果

结论

通过上述仿真结果,可以看出,实现了D类触发器的工作效果。本次利用FPGA搭建D类触发器的任务目标实现。

FPGA学习之路(一)之D类触发器(Data Flip-Flop/Delay Flip-Flop)搭建相关推荐

  1. Cyclone V SoC FPGA学习之路第一章:综述

    Cyclone V SoC FPGA学习之路第一章:总体了解 关键词: adaptive logic modules – ALM 自适应逻辑模块 logic array block --LAB 逻辑阵 ...

  2. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  3. FPGA学习之路—应用程序—基于Verilog设计单总线8位ALU

    FPGA学习之路--基于Verilog设计单总线8位ALU 定义 ALU(arithmetic and logic unit) 算术逻辑单元,简称ALU,是计算机的数学运算核心,也就是负责运算的组件, ...

  4. FPGA学习之路—接口(3)—SPI详解及Verilog源码分析

    FPGA学习之路--SPI详解及Verilog源码分析 概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线. 优点 支持全 ...

  5. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析

    FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...

  6. FPGA学习之路—接口(1)—URAT Verilog程序设计

    FPGA学习之路--URAT Verilog程序设计 UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是广泛使用的异步串行数据通信协议 ...

  7. Cyclone V SoC FPGA学习之路第二章:硬件篇

    Cyclone V SoC FPGA学习之路第二章:硬件篇(内部资源) 前言 上一章了解了<cycloneV device datasheet>,其中数据手册里重点介绍了电源要求,时序参数 ...

  8. typescript学习之路(三) —— ts定义类的方法(包含es5以及es6的定义类)

    提起类,不得不说一下,强类型编程语言,如php,java,c++等都有类的概念.而js作为一门弱类型语言,是没有类这个概念的,虽然也能模拟类的实现,但总归不是类.so,ts也只是模拟类而已,使得更贴切 ...

  9. FPGA学习之路—Vivado与Modelsim联合仿真

    Vivado与Modelsim联合仿真 笔者在学习FPGA过程中遇到了如何使用Vivado和Modelsim进行联合仿真的问题,特此记录. 首先确定版本 笔者Vivado用的是2018.3版本,先是随 ...

最新文章

  1. 头条面试官:NIO 是不是就是I/O多路复用?我:不是
  2. 802.11ac和SD-WAN有什么联系?
  3. 数据结构二分法算法的步骤_数据结构与算法之算法思想:二分法搜索实现(python)...
  4. Linux系统编程之--守护进程的创建和详解【转】
  5. SringBoot+Redis整合
  6. ITK:扩张灰度图像
  7. 服务器虚拟网络设置,虚拟化服务器网络设置
  8. 生成验证码的流程分析.
  9. 【 HDU - 1215 】七夕节(数论,约数和公式)
  10. 编译生成的Apk安装到手机提示应用未安装,需给apk签名
  11. 长跑常用必知的关键字及100条跑步的建议
  12. 视频教程-C++ 编写WebService服务实战-C/C++
  13. php新年倒计时源码,2020年-新年倒计时HTML源码
  14. 计算机命令提示符开热点,将win7电脑变身wifi热点操作方法_电脑怎么开热点win7...
  15. 如何恢复移动硬盘数据?
  16. 创业实践案例课程答案
  17. win10下如何为jdk配置环境变量
  18. win7 计算机名称 ip6,Win7系统提示ipv6无网络访问权限的两种原因及解决方法
  19. 用JAVA写一款自己的小游戏
  20. [石进-夜的钢琴曲]

热门文章

  1. Python基础知识入门PartII
  2. linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优
  3. 希尔排序大详解,保证10分钟内学会希尔排序(进化版插入排序)
  4. ClassFormatException:Invalid byte tag in constant pool: 18
  5. python中pip安装、升级包用法详解
  6. PAD智龙迷城(puzzle and dragon)辅助转珠算法思路和python实现
  7. layui数据表格操作栏,根据条件改变显示操作的按钮
  8. Q3全球太阳能企业融资规模达30亿美元 环增76%
  9. php斯芬克斯,斯芬克斯猫
  10. 答题卡的计分方式_如何建立信用风险模型和记分卡