关注、星标公众号,精彩内容每日送达

来源:网络素材

关于复位

字电路中,电路通过复位来启动,复位犹如数字电路的“起搏器”,主要有下面三种方式:

1

无复位:天生就强壮着,上电就启动;

2

异步复位:好心人路过,随便踢了一脚,起搏了,这完全没有心理准备,随时都有可能复活啊;

3

同步复位:专业救援队,手按住胸口,不起博按住不放啊。直到听到“砰砰”声才离开,非常关键,必须要按住一会会

无复位

没见过这样写代码的,竟然没有复位,老师都说数字电路离不开复位的,没有复位,寄存器怎么赋初值啊?没有确定的初值,这电路怎么工作呢?

其实,不用担心,FPGA上电之后,寄存器初始值默认为“0”,当然,也可以人为的赋初值。下面为无复位的代码:

reg [7:0] my_register;

always @(posedge clk) begin

my_register <= data_in;

end

如果没有复位信号,省了很多资源,编译和布线时间也缩短不少,如果规模很大,对提高设计整体性能也是有帮助的。但是在数字电路设计中,我们很少不用复位电路。到是我们经常利用FPGA这个特性,自己产生内部复位电路。

异步复位

异步复位电路描述:在always语句中添加复位信号在敏感量列表中,即可实现异步复位。

reg [7:0] my_register;

always @(posedge clk, posedge rst) begin

if(rst)

my_register <= 8’h0;

else

my_register <= data_in;

end

异步复位的缺点:

异步复位对复位信号要求很严格的,不然随便一个毛刺就会把电路给复位掉的。

另外,异步复位信号依赖于FPGA内部的传导延时,因此,在微小的电压或温度差异下,设计都有可能输出错误,设计的可移植性也很差。上面不是说了嘛,这随便一脚提过来,有时候能感觉到,有时候感觉不到啊。冬天穿个大棉袄,就得使个大劲才能提醒。

正因为对不同寄存器延迟是不同的,所以容易引发间断性设计问题。怎么理解呢?

如图所示,2 bit的移位寄存器组成一个环,复位后,左边寄存器清零,右边寄存器置位,而且都在同一上升沿触发,所以,如果左边寄存器上升沿来的时候,复位信号已经释放掉了,但是右边寄存器还处于复位状态,这个时候数据就错误。

异步复位的优点:

异步复位不依赖于时钟。所以如果时钟是外部输入的,而且时钟有可能丢失,例如处于省电模式时,只能使用异步复位。

另外一个优势是设计更快的物理实现。相对于同步复位,异步复位有更宽松的时序约束。从而布局布线工具使用更少的时间便可达到约束条件。

同步复位

同步复位就是非常专业,不留一点马虎,和他的名字一样,只在时钟的有效沿发生,所以一个有效的同步信号,至少要维持一个时钟周期(把你叫不醒,是不会停的)。由于仅仅在时钟的有效沿有效,所以可以滤除复位信号上的毛刺,电路可靠性好很多。

reg [7:0] my_register;

always @(posedge clk) begin

if(rst)

my_register <= 8’h0;

else

my_register <= data_in;

end

所以,总结一下。其优点是“弥补了异步复位的所有缺点”,其缺点是“没有异步复位的优点“”。这个总结够简单吧。

总结

我们熟悉了3种复位方式,了解了他们的脾气,那就总结一下,在我们平时设计中如何使用他们。

尽量用同步复位,如果你的规模不是特别大,虽然占有布线资源多一点,但是对系统可靠性还是有帮助的。

规模很大的时候,可以考虑混和复位方式,在什么场合呢?比如说设计中有多个IP核和功能模块,要求有不同的复位方式,这个时候就要求混和复位方式,另外,还有电路延迟,大型电路中两个模块之间信号延迟可能超过10ns,如果时钟周期为3ns,需要3个时钟周期才能通过,所以,大型设计中完全同步是非常不容易的。如图所示为一个复杂的混和复位树。各种复位都用上了。

航空总线1553B接口设计相关推荐

  1. tms320vc5416c语言编程,TMS320VC5416与CAN总线的接口设计及软件编程

    [1]谈振藩,郭飞,李秋霞,等.数字式分罗经设计研究[J].应用科技,2008,35(10):24. TAN Zhen-fan,GUO Fei,LI Qiu-xia,et al.The design ...

  2. python 开发板 i2s_[Craftor原创] I2S总线接口设计(Verilog)

    本文有Craftor原创,转载请保留出处. I2S是数字音频的接口,这里不用多说,请读者自己查阅相关资料. 本文中要设计的是FPGA与数字音频芯片的I2S接口时序.简单点说,就是通过FPGA向音频芯片 ...

  3. PXI 1553B总线卡 航空总线卡 底板+功能子卡 架构 底板原理图+PCB 子卡原理图+PCB

    PXI 1553B总线卡 航空总线卡 底板+功能子卡 架构 底板原理图+PCB 子卡原理图+PCB ID:189999673456543125浪里个浪里个浪001

  4. pcie总线与cpci总线_基于通用PCI接口功能芯片和热插拔控制器实现CPCI总线控制的设计...

    CPCI总线简介 CPCI总线是一个开放式.国际性技术标准,由PCI总线工业计算机制造商组织PICMG(PCI Industrial Computer Manufacturer Group)负责制定和 ...

  5. 基于PCI9054和LTC4240的CPCI总线接口设计

    CPCI总线简介 CPCI总线是一个开放式.国际性技术标准,由PCI总线工业计算机制造商组织PICMG(PCI Industrial Computer Manufacturer Group)负责制定和 ...

  6. I2S音频总线学习(四)I2S接口设计

    I2S音频总线学习(四)I2S接口设计 一.数据发送端的设计 图1 发送端 随着WS信号的改变,导出一个WSP脉冲信号,进入并行移位寄存器装入DATA LEFT或DATA RIGHT,从而输出数据被激 ...

  7. 计算机总线接口规范协议,MIL-STD-1553B航空总线协议开发手册

    MIL-STD-1553B GJB289-87总线简介 1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是飞机内部时分制命令/响应式多路复用数据总线.1553B总线能挂 ...

  8. 连接CPU和计算机的总线,什么是计算机总线 总线和接口的区别

    什么是计算机总线 这个和计算机主机的构造有关系,首先,我们都知道计算机的cpu由两个部分组成,一个是控制单元,另一个是算术逻辑单元,cpu的控制单元负责计算机各个组件的协调与沟通,什么是沟通?就是数据 ...

  9. 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)

    脚  本:makefile 工  具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...

最新文章

  1. WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
  2. html中加session,Html中如何获取session中的值(如登录后显示XX欢迎您!)
  3. .NET Core 在中国的现状调研
  4. Java笔记-通过注解和插件自动生成get/set和toString方法,使代码结构清晰
  5. java题-如何递归遍历一个文件夹下的所有文件
  6. 无码系列-7-代码的语文修养_上篇
  7. wcdma系统随机接入过程的流程图_WCDMA终端的随机接入过程的射频测试
  8. Java之final关键字详解
  9. C# 3.0通过Linq、Lambda、匿名函数、代理函数实现数据查询
  10. 132. 分割回文串 II
  11. 2019年税收分类编码_您如何在2019年学习编码
  12. JavaWeb实现快递物流查询
  13. python3.8如何正确安装使用ExcelLibrary
  14. resultFul架构
  15. MATLAB中ANFIS的使用教程
  16. day08-----pytorch
  17. 【小程序】小程序组件-1
  18. 央企招聘:新华社2023年校园招聘公告
  19. excel添加列下拉框票价_在Excel中制作下拉列表的三种方法
  20. 理解JIT编译与优化

热门文章

  1. 什么是linux目录挂载,Linux-文件系统挂载:mount的用法
  2. android studio 扰码,Visual Studio 调试技巧 (三) -- 调试第三方组件代码
  3. SSM+栾城五中的图书管理 毕业设计-附源码171727
  4. IT大学生成长周报 | 第 7 期
  5. 混合云解决方案:统一化、简化、创新化
  6. 收钱吧-轻POS接口
  7. 我的世界java作弊怎么开_我的世界怎么开作弊模式 开启方法介绍
  8. Linux用户操作练习
  9. 游戏业务面试准备系列1-常见业务问题汇总
  10. 《离散数学》期末练习题