[D-VII] (数)晶体管2逻辑门2寄存器s

这篇博客详细介绍了如何使用Quartus II 13.1在CycloneV FPGA上实现寄存器,包括ey_register版和dffe版的暂存寄存器,以及串入串移和并入串移寄存器的设计。通过逻辑门和触发器的原理探讨,展示了从简单寄存器到复杂移位寄存器的构建过程,并提供了功能仿真结果。
摘要由CSDN通过智能技术生成

EDA:quartus II 13. 1

平台:CycloneV:5CSEMA5F31C6

阅读“《自己设计制作CPU与单片机》 ---- 姜咏江”

个人笔记中的文字表达极差。读书后为此次笔记对应的quartus II 13.1工程register的保存地址:to_registers


2015.06.05 – 06.08

ey_register版本寄存器来自笔记者手笔。dffe版本寄存器来自书本。还不能根据需求从0笔记到寄存器。

1 暂存寄存器

1.1 ey_register版

(1) ey_register的由来

【1】逻辑函数

1位暂存寄存器的功能大概是这样:


Figure 1. 1位暂存寄存器真值表

将具有这样功能的暂存寄存器别名为ey_register。根据真值表得到对应的逻辑表达式:qn+1= !e·qn + e·d。


【2】原理图

在quartusII工程中新建ey_register.bdf文件,用quartus II的库(~\altera\13.1\quartus\libraries\primitives\logic)中的逻辑门符号描述ey_register的逻辑表达式(已经是最简)。得ey_register的电路描述图:

Figure 2. ey_register寄存器门级描述图

在quartus II 中,导线若拥有相同的名字则表示它们是连接关系。保存ey_register.bdf文件,将其设置为顶层文件。在quartusII中编译ey_register.bdf(Processing>> Start Compile)直至通过。


【3】功能仿真

在quartus II工程中新建ey_register.vwf文件,作为ey_register原理图的功能仿真文件(认识FPGA Verilog HDL笔记中含有为原理图建立功能仿真的过程)。设置: e引脚的信号的周期为诸如120ns的值,d引脚的信号的周期为诸如60ns的值,在Edit >> Set end time中将仿真结束时间设置为诸如600ns的值。点击Simulation >> Run Functional Simulation对ey_register进行功能仿真,得到下图(前2个周期):

Figure 3. easy_register功能仿真

quartus II功能仿真模块证明了ey_register在理想情况下(不考虑器件延时等因素)的正确性。


(2) easy_register版n位寄存器

在quartusII工程中封装ey_register.bdf中的逻辑设计图:Project Navigator >> Files,选中ey_register.bdf文件。File>> Create/Update >> Create Symbol Files for current Files生成ey_register.bsf:

Figure 4. ey_register封装

ey_register.bsf为ey_register版本的1位寄存器的封装图(在工程根目录下保存有.bsf文件时quartus II才能发现工程其它目录下的.bsf文件)。


如果想要得到更多位的寄存器,如8位,用ey_register组合即可。8位寄存器中的每一位都可以是独立的,那么只需要为8个ey_register添加输入输出引脚即可。可以改善的一点是,8个ey_register的e端可以共用一个信号。在quartus II中新建ey_register8.bdf文件,可以这样表示ey_register版本的8位寄存器:

Figure 5.easy_register8位寄存器

将ey_register8.bdf设置为新的顶层文件,对其进行编译、功能仿真。


在quartusII中对ey_register版的8位寄存器进行封装,利用这个封装可以得到位数更多诸如32位的寄存器。


由ey_register得来的n位寄存器可用于简单的场景中。可将根据ey_register.bdf或ey_register8.bdf编译得到的二进制文件下载到FPGA(CycloneV:5CSEMA5F31C6)平台中进行验证(开关作为输入,LED灯作为输出,my_first_fpga DE1-SOCFPGA的流水灯笔记中含有针对FPGA平台的引脚分配的过程)。


1.2 dffe版

ey_register版的寄存器不具有“时钟控制”、“边沿触发”、“预置”等特色。用ey_register设计的寄存器不能被用到复杂的环境中(如CPU中)。若有一些简单的应用环境,被设计的寄存器也可能像ey_register一样简单。待环境逐渐变得复杂后,寄存器的结构由运行环境的需求而变得复杂。


dffe是quartusII库中(~\altera\13.1\quartus\libraries\primitives\storage)被设计好的一个基本的存储元件的封装。由dffe可以设计出常被念叨的16或32位寄存器。


(1) dffe版的n位寄存器

quartus II库中的dffe封装如下(原谅忽然冒出一个dffe):

Figure6. dffe 封装

dffe功能(简述):ENA= 1且CLK上升沿时,Q= D,否则Q保持不变。PRN和CLRN作预置(设定Q最开始的状态)Q状态之用,PRN为0时,Q输出1;CLRN为0时,Q输出为0。dffe具有1位暂存寄存器的功能。


根据dffe功能的简述,在quartusII工程中新建dffe_register8.bdf文件,在其中设计8位寄存器(每位独立,共用CLK,ENA,PRN,CLRN):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值