1.寄存器
组合逻辑存在一个最大的缺点就是存在竞争与冒险,系统会产生不定态;使用时序逻辑电路就会极大的改善这种情况
寄存器具有存储功能,一般是由D触发器构成,由时钟脉冲控制,每个D触发器能够存储一位二进制码
D触发器工作原理:在一个脉冲信号(一般为晶振产生的时钟脉冲)上升沿或者是下降沿作用下,将信号从输入端D送到输出端Q,如果时钟脉冲的边沿信号未出现,即使输入信号改变,输出信号仍保持原来的值,且寄存器拥有复位清零功能,其复位又分为同步复位和异步复位.
2.FPGA设计
- KEY1控制LED6,按键按下,LED灯点亮;按键松开,LED灯熄灭
2.1 框图和波形图
- 时钟和复位信号
- n-表示低电平有效
2.2 同步复位的D触发器和异步复位的D触发器
同步复位
- 同步是工作时钟同步复位的意思,当时钟的上升沿或者下降沿到来时,检测到按键的复位操作才是有效的
同步复位理解:复位信号与时钟上升沿不同步,此时,输出不会随复位信号的变化立即变化,直到时钟上升沿采样到复位信号,才发生变化
异步复位
- 异步复位就是工作时钟不同步的意思,复位信号不关心时钟信号,当寄存器收到复位信号的时候,立即执行复位,不用管是不是时钟上升沿
时序逻辑过滤毛刺
使用按键控制LED灯,按键输入的信号输入给输出信号,假如在某个时钟周期内输入信号产生了毛刺:
*对于组合逻辑,输出也会有毛刺
- 对于时序逻辑电路,寄存器在时钟上升沿进行采样,采样之后,一个周期内都维持一样的值,两个上升沿之间的毛刺现象都可以被过滤掉,提高电路的可靠性
时序逻辑延迟打拍
- 组合逻辑电路,时钟和数据对齐,时钟上升沿采集到的是时钟上升沿对应的值
- 时序逻辑电路,时钟和数据对齐,默认采集到的是上升沿对应数据前一时刻的值
2.3 RTL
- 时钟,晶振输入,50MHz
- 复位信号,低电平有效,由板卡的复位按键输入
module filp_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)
let_out
- 创建quartus项目,添加文件,进行全编译
module filp_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)
let_out
推荐使用异步复位
2.4 Testbench
// 同步复位
`timescale 1ns/1ns
module tb_flip_flop();
reg sys_clk;
reg sys_rst_n;
reg key_in;
initial begin
sys_clk
- 加载仿真文件,进行仿真设置
同步复位
异步复位
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 《现代JavaScript高级教程》Performance API: 提升网页性能的利器
点击在线阅读,体验更好 链接 现代JavaScript高级小册 链接 深入浅出Dart 链接 现代TypeScript高级小册 链接 Performance API: 提升网页性能的利器 引言 在现代 Web 开发中,性能优化是一个关键的方面。用户期望快速加载…