[FPGA 学习记录] 时序逻辑的开始---寄存器

本文围绕FPGA开发中寄存器展开,先介绍寄存器理论知识,包括其构成、工作原理、复位类型等。接着通过按键控制LED灯实验进行实战演练,涵盖设计规划、波形绘制、代码编写、编译、逻辑仿真和波形对比等环节,对比了同步复位和异步复位的差异。
时序逻辑的开始---寄存器


在前面几小节当中,我们重点使用 Verilog 语言,实现了几种简单的组合逻辑。目的是让大家熟悉一下语法,学会设计的思想方法和步骤。那么从本小节开始,我们就进入到时序逻辑的设计。

那么时序逻辑的设计,必不可少的就是我们的寄存器。那么寄存器的讲解可以分为两个部分:同样是理论部分和实战部分。

在理论部分我们会对寄存器的相关知识做一个讲解,在实战演练部分,我们会通过实验向大家展示时序逻辑的设计。下面就是第一部分:理论部分的学习

1 理论学习

学过数电的我们都知道,组合逻辑有一个最大的缺点就是存在竞争冒险,那么竞争冒险的相关知识,大家可以参考前面推荐的数字电路相关的书籍,这里不再进行过多的解释。

竞争冒险这个问题,在电路之中是非常危险的,它会使我们的电路处于一个不稳定的状态。然而如果我们使用时序逻辑就可以极大的避免这种问题,提高系统的稳定性。

1.2 寄存器

那么时序逻辑最基本的单元就是寄存器,寄存器它具有存储功能,一般是由 D 触发器构成,由时钟脉冲控制。每个 D 触发器,能够存储一位二进制码。那么 D 触发器,它的简化图就像这样

image-20231029174506048

它有一个时钟输入端口 CLK(clock的缩写),然后会有一个输入信号 D,还有一个输出信号是 Q,同时它还有一个复位信号 CLR(clear的缩写)。

D 触发器的工作原理就是,在脉冲信号 CLK(这个脉冲信号,在 FPGA 当中一般是晶振产生的时钟脉冲),在脉冲信号的上升沿或者下降沿的作用下(一般我们使用的是上升沿),在脉冲信号的上升沿将信号从输入端送到输出端。也就是说,输入端 D 输入的信号,在时钟 CLK 的上升沿就赋值给输出端 Q 了,然后 Q 一直会保持这个值,保持到什么时候呢?保持到检测到下一个上升沿,就会将新的输入端的信号,再次赋值给 Q。如果说时钟脉冲 CLK 的边沿信号一直没有出现(也就是说 CLK 没有时钟沿变化),即使输入信号改变,输入信号 D 怎么样改变,我们的输出信号依然保持原来的值。而且它具有复位清零功能,就是 CLR 信号,它的复位又可以分为同步复位和异步复位,那么同步复位和异步复位的知识,我们在后面会提到。

以上就是寄存器理论部分的讲解,那么接下来就开始实战演练。

2 实战演练

2.1 设计规划

2.1.1 实验目标

在点亮 LED 灯那个小节中,我们设计并编写了,使用按键控制 LED 灯的工程。那么在本小节当中我们同样使用这个例子,虽然最后的实验效果是相同的,但是在本次实验当中,我们使用 D 触发器来进行控制。这种方式和之前使用的组合逻辑控制方法是有所区别的,那么实验功能怎么实现呢?

2.1.2 硬件资源

同样使用按键,使用按键 KEY1 控制 LED 灯 D6。按键未按下,灯处于熄灭状态,按键按下灯被点亮,和之前的实验效果是相同的

Pinout

在开始程序设计之前,同样是文件体系的新建,这一部分大家应该很熟悉了

20231027161528_j9UXledLZX

2.2 波形绘制

那么文件体系建立完成之后,打开 doc 文件夹,同样的是新建一个 Visio 文件,用来绘制我们的模块框图和我们的波形图

2fJYW1VesE

那么波形工具箱加载完成,开始模块框图的绘制。找到我们的圆角矩形 拖拽出来,先给模块取一个名字

20231027162134_Bcwtx00VzR

接下来就是分析我们的端口信号,那么 D 触发器能够正常工作,一定要有时钟,每当时钟的沿(上升沿或者下降沿)来到时,我们采集到稳定有效的数据。

那么第一个信号肯定是时钟信号,时钟信号命名为 sys_clk

20231027162349_Wousyx3fdP

为什么这样命名呢?sys 代表系统,clk 代表时钟,sys_clk 这表示系统时钟。

除了时钟信号之外,还需要一个复位信号。复位信号的作用是:让触发器回到初始状态将数据清零。那么复位信号它的命名是 sys_rst_n

20231027162627_Zk9yTmCBA7

sys 同样代表是系统,rst 代表复位信号,后面的 _n 表示这个信号是低电平有效。如果说这个信号是高电平有效的,是不加后缀的,那么如果是某个信号是低电平有效的,我们习惯加一个下划线加 n,表示这个信号是低电平有效。

因为我们使用的是按键控制 LED 灯,所以说输入端还需要一个按键控制信号,按键控制信号命名为 key_in

20231027162834_WZjIiD2Zw5

最后,就是有一路输出信号到我们的 LED 灯,输出信号命名为 led_out

20231027163006_KlzSreIctp

那么这样模块框图就已经绘制完成了,下面可以开始波形图的绘制。

因为我们前面已经提到了,我们的 D 触发器有两种:一种是同步复位的 D 触发器,另一种是异步复位的 D 触发器。在这里我们会结合波形图,介绍一下这两种 D 触发器的异同。

那么首先,先来讲解一下同步复位的 D 触发器,我们结合一下我们的波形图。那么时钟信号的波形,我们直接使用 理想clk,选中 理想clk 将它拖拽出来,而且它自带参考线,方便我们图形的绘制

20231027163416_qcyGTSUsvk

然后是复位信号

20231027164003_cqiIIIMKcE

那么这样,我们完成了时钟信号和复位信号的波形绘制。

那么 D 触发器的同步复位,它说的同步是工作时钟同步的意思。也就是说当时钟的上升沿或者下降沿到来时,检测到按键的复位操作才是有效的,否则无效。那么这句话什么意思呢?我们使用波形图来表示一下

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值