Quartus实现寄存器:同步复位+异步复位

这篇具有很好参考价值的文章主要介绍了Quartus实现寄存器:同步复位+异步复位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Visio图示

quartus无法实现复位操作,fpga开发
图1 寄存器输入输出引脚
quartus无法实现复位操作,fpga开发
图2 输入为高电平-例1

同步复位和异步复位都存在于时序逻辑中,与组合逻辑相比对毛刺有屏蔽作用。
quartus无法实现复位操作,fpga开发
图3 组合逻辑和时序逻辑的区别

当复位为高电平时,组合逻辑的结果是其输入,时序逻辑的输出需参考上升沿,此时红色虚线处的key_in为高电平,故时序逻辑的输出仍为高电平,这就解释了为什么时序逻辑与组合逻辑相比对毛刺有屏蔽作用。
quartus无法实现复位操作,fpga开发
图4 时序逻辑延迟一个周期
quartus无法实现复位操作,fpga开发
图5 输入为高低电平交错-例2

二、代码

1. rtl代码

代码如下(示例):

module flip_flop
(
input wire sys_clk,//时钟信号频率50MHz
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;//输出0
    else//复位信号高电平无效
        led_out<=key_in;//输入赋值给输出 */
//异步复位
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n==1'b0)//复位信号低有效
        led_out<=1'b0;//输出0
    else//复位信号无效
        led_out<=key_in;//输入赋值给输出
endmodule

同步复位:当时钟为上升沿时,如果复位信号是0,则低电平有效,此时输出为0;当复位信号是1,则高电平无效,此时输出与输入一致。
异步复位:当时钟为上升沿或复位为下降沿时,如果复位信号是0,此时输出为0;当复位信号是1时,此时输出与输入一致。

2.RTL Viewer

quartus无法实现复位操作,fpga开发
图6 同步复位RTL Viewer图示
quartus无法实现复位操作,fpga开发
图7 异步复位RTL Viewer图示

3.测试文件

代码如下(示例):

`timescale 1ns/1ns
module tb_flip_flop();
reg sys_clk;
reg sys_rst_n;
reg key_in;
wire led_out;

initial
    begin
        sys_clk=1'b1;
        sys_rst_n<=1'b0;
        key_in<=1'b0;//高低都行,这里是低
        #20//延迟20个时间单位,即20ns
        sys_rst_n<=1'b1;//复位信号低电平有效,先拉低,复位完成后再拉高,系统才能正常工作
        #210//在下降沿进行复位
        sys_rst_n<=1'b0;
        #40
        sys_rst_n<=1'b1;//观察同步复位和异步复位的区别
    end
        
always #10 sys_clk=~sys_clk;//每隔10ns反转一次,即一个时钟周期20ns,为50MHz

always #20 key_in<={$random}%2;

initial
    begin
    $timeformat(-9,0,"ns",6);
    $monitor("@time %t:key_in=%b,led_out=%b",$time,key_in,led_out);
    end

flip_flop flip_flop_inst
(
.sys_clk  (sys_clk),
.sys_rst_n(sys_rst_n),
.key_in   (key_in),
.led_out  (led_out) 
);
   
endmodule

三、仿真结果

根据上面的代码仿真出的结果比较全局,没有图5所示复位全是高电平,此时将测试文件中的key_in不设置取余,而设置为1’b1,即高电平即可。

quartus无法实现复位操作,fpga开发
图8 同步复位仿真结果

分析参考线,即229.95ns到270ns的情况:

同步复位:左侧参考线处复位信号为0,但此时时钟是下降沿,所以输出延迟到时钟在下一个上升沿时为0;右侧参考线处复位信号为1,此时时钟是下降沿,故输出延迟到下一个上升沿才与输入一致。

quartus无法实现复位操作,fpga开发
图9 异步复位仿真结果

异步复位:左侧参考线处复位信号为0,此时时钟是下降沿,但复位是下降沿,故输出立刻变为0;右侧参考线处复位信号为1,时钟是下降沿,复位信号是上升沿,故故输出延迟到下一个上升沿才与输入一致。文章来源地址https://www.toymoban.com/news/detail-768942.html

到了这里,关于Quartus实现寄存器:同步复位+异步复位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4.3 移位寄存器的实现和应用

    在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的以触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。这种移位寄存器是一维的,事实上还有多维的移位寄存

    2024年02月10日
    浏览(44)
  • Verilog基础之十一、移位寄存器实现

    目录 一、前言 二、工程设计 ​2.1 工程代码 2.2 综合结果 2.3 仿真结果     移位寄存器SRL在工程中属于使用频率较高个模块,可用于存储数据,实现串并转换;根据数据移动方向可分为左移寄存器,右移寄存器,左移是向数据高位移动,右移是向数据低位移动。  工程中包

    2024年02月11日
    浏览(45)
  • 使用FPGA实现桶形移位寄存器

    我给大家介绍的是逻辑/算术左移移位寄存器。实现的功能是根据输入信号shift将输入信号进行移位,高位移除,低位补0。我建立的工程是由3个独立的桶形移位寄存器组成的。 library ieee; use ieee.std_logic_1164.all; entity barrel is      port( inp : in std_logic_vector(7 downto 0);          

    2024年04月29日
    浏览(48)
  • 实验四 用集成移位寄存器实现序列检测器

    一、实验要求 用移位寄存器和与非门设计一个 1101 序列检测器。电路连续不停地工作,对 串行输入的序列进行检测,当连续检测 4 个码元符合检测码 1101 时,检测器输出 为 1 ,指示灯亮,其他情况下输出为 0 ,指示灯灭。 二、实验设备 1 . Mini-FPGA 开发板( Cyclone IV 系列

    2024年02月03日
    浏览(43)
  • 实验二 CPU 部件实现之 ALU 和寄存器堆

     1.1设计要求 理解和掌握 CPU 中的算术逻辑运算部件(ALU)和寄存器堆(Register File)的工作原理,并使用 Verilog 和 ModelSim 进行设计和仿真。 1. 使用 Verilog 完成 ALU 的设计,并编写测试仿真文件验证其正确性。要求: ALU 支持 16 位的加、减、与、或以及移位运算。 2. 使用 Veril

    2024年02月01日
    浏览(37)
  • Verilog 实现伪随机数生成器(线性反馈移位寄存器)

    参考文献1 不简单的进行移位,而是在移位的基础上加上异或门,如题目所示,这就相当于每进行一次移位,寄存器中的值会发生改变,一直移动,一直改变,就形成了伪随机数。

    2024年02月09日
    浏览(57)
  • 【Verilog编程】线性反馈移位寄存器(LFSR)原理及Verilog代码实现

    移位寄存器 :指若干个寄存器排成一列,每个寄存器中存放1bit二进制数据(0或1),每个时钟周期向左或向右移动一个bit。下图所示为一个向右移动的移位寄存器。 反馈移位寄存器(Feedback Shift Register,FSR) :每个时钟脉冲,移位寄存器向右移动一位,则移位寄存器的左左侧就

    2024年02月15日
    浏览(53)
  • m基于FPGA的桶形移位寄存器verilog实现,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1、桶形移位寄存器的基本原理 2.2、桶形移位寄存器的数学模型 2.3、桶形移位寄存器的实现步骤 3.Verilog核心程序 4.完整算法代码文件 本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera 6.6d  Starter Edition 其

    2024年02月04日
    浏览(53)
  • 【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令

    🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言: 你只管努力,剩下的交给时间! UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。 串口在嵌入式中用途非常的广泛,主要的用途有: 打印调试信息; 外接各种模块:GPS、蓝牙; 串口因为结构

    2024年02月05日
    浏览(44)
  • java集成mqtt、rabbitmq服务远程连接数dtu实现寄存器rtu数据读写

    数据采集及写入流程设计图 一、硬件设备 硬件设备与原有设备保持不变通过配置dtu设备进行mqtt穿透功能进行数据交互 1、dtu配置详解: 1.1 dtu工具 本项目使用塔石TAS-LTE-364支持4G无线dtu模块,下载安装塔石物联网厂家提供的串口测试程序Tool V2.7.1 D20220616.exe 1.2打开程序选择对

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包