FPGA和ASIC中的复位
数字电路中寄存器和RAM在上电之后默认的状态和数据是不确定的,如果有复位,我们可以把寄存器复位到初始状态0,RAM的数据可以通过复位来触发RAM初始化到全0。还有一种情况是逻辑进入到了错误的状态,通过复位可以把所有的逻辑状态恢复到初始值,如果没有复位,那么逻辑可能永远运行在错误的状态。因此复位功能是很重要的一个功能。
同步复位:
同步复位指的是当时钟上升沿检测到复位信号,执行复位操作,有效的时钟沿是前提。
always@(posedge clk)begin
if (rst_n==1'b0)
y<=1'b0;
else
y<=b;
end
优点:
(1)可以使设计的系统成为100%的同步时序电路,有利于时序分析,而且可综合出较高的Fmax。
(2)由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺。
缺点:
(1)复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑时钟偏移、组合逻辑路径延时、复为延时等因素,所以复位信号有时需要脉冲展宽,用以保证时钟有效期间有足够的复位宽度。
(2)大多数厂商的目标库内的触发器只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。
异步复位:
异步复位指的是无论时钟是否到来,只要复位信号有效,就对系统进行复位。当时钟上升沿检测到复位信号,执行复位操作。
always@(posedge clk or negedge rst_n )begin
if (rst_n==1'b0)
y<=1'b0;
else
y<=b;
end
优点:
(1)大多数目标器件库的DFF都有异步复位端口,那么触发器的复位端口就不需要额外的组合逻辑,这样就可以节省资源。
(2)异步复位信号产生和响应都很方便(电路在任何情况下都能复位而不管是否有时钟)。
缺点:
(1)最大的问题在于它属于异步逻辑,问题出现在复位释放时,而不是有效时,如果复位释放接近时钟有效沿,则触发器的输出可能进入亚稳态(此时clk检测到的rst_n的状态就会是一个亚稳态,既是0是1不确定的),从而导致复位失败。
(2)可能因为噪声或者毛刺造成虚假复位信号(比如系统正常工作时突然复位)。
(3)静态时序分析比较困难,静态时序分析一般是针对同步设计的,都是基于时钟周期来分析时序的。
(4)对于dft,如果复位信号不是直接来自于I/O引脚,在dft扫描和测试时,复位信号必须被禁止,因此需要额外的同步电路。
异步复位、同步释放:
异步复位同步撤离的目的是为了防止复位信号撤离时,可能产生的亚稳态。复位信号到来的有效与否与clk无关,而且复位信号的撤除也与clk无关,但是复位信号的撤除是在下一个clk来到后才起作用。
always@(posedge clk or negedge rst_async_n)begin
if (!rst_async_n)begin
rst_s1<=1'b0;
rst_s2<=1'b0;
end
else begin
rst_s1<=1'b1;
rst_s2<=rst_s1;
end
end
assign rst_sync_n =rst_s2;
always@(posedge clk or negedge rst_sync_n)begin
if (!rst_sync_n)
y<=1'b0;
else
y<=b;
end
FPGA和ASIC中的复位相关推荐
- FPGA开发中全局复位置位(GSR)
最近几天读了Xilinx网站上一个很有意思的白皮书(white paper,wp272.pdf),名字叫<Get Smart About Reset:Think Local, Not Globa ...
- FPGA开发中全局复位置位(GSR)简介
最近几天读了Xilinx网站上一个很有意思的白皮书(white paper,wp272.pdf),名字叫<Get Smart About Reset:Think Local, Not Glo ...
- FPGA 和ASIC开发的区别
FPGA和ASIC区别很多.ASIC的逻辑通常远远大于FPGA的,门数上有数量级的差别,运行时钟也远远高于FPGA.而且,ASIC只有一次机会,FPGA因为可以编程,所以coding的灵活性相对提高. ...
- (10)FPGA与ASIC区别
(10)FPGA与ASIC区别 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA与ASIC区别 5)技术交流 6)参考资料 2 FPGA入门与提升课程介绍 1 ...
- FPGA与ASIC:它们之间的区别以及使用哪一种?
FPGA与ASIC:它们之间的区别以及使用哪一种? FPGA Vs ASIC: Differences Between Them And Which One To Use? VL82C486 Sing ...
- 如何在FPGA设计环境中加时序约束 SDC (Z)
如何在FPGA设计环境中加时序约束 在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束.通常,在FPGA设计工具中都FPGA中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器, ...
- CPU、GPU、FPGA、ASIC等AI芯片特性及对比
1.前言 目前,智能驾驶领域在处理深度学习AI算法方面,主要采用GPU.FPGA 等适合并行计算的通用芯片来实现加速.同时有部分芯片企业开始设计专门用于AI算法的ASIC专用芯片,比如谷歌TPU.地平 ...
- FPGA或ASIC:我们应该怎么选?
来源:内容来自半导体行业观察(ID:icbank)编译自eejournal,谢谢. 土耳其伊斯坦布尔 ElectraIC 总经理兼管理合伙人 Ates Berna 最近在 LinkedIn 上发布了一 ...
- 入行IC | 一文读懂FPGA与ASIC的区别
IC行业的范围很广,有数字.模拟不同的研究方向,也有设计.制造.封测不同的产业环节.还有FPGA.ASIC等不一样的芯片领域. 遇到过很多想要入行.转行IC的同学,都有"选FPGA还是ASI ...
最新文章
- python OrderedDict 详解
- python试卷(有答案版本、个人答案不是官方答案)_python试卷(有答案版本,个人答案不是官方答案).doc...
- 学Java发展前景好的三个原因
- php sublime 插件安装教程,【图片】【Sublime Text 2神器教程】ST安装、插件及操作详解【php吧】_百度贴吧...
- 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截
- Android官方开发文档Training系列课程中文版:连接无线设备之网络服务搜索功能
- python绘制三维图散点图_python matplotlib模块——绘制三维图形、三维数据散点图...
- 对996最客观的描述,一叶知秋
- OpenShift 4 - 基于CPU负载和网络负载的HPA
- int main():声明指定了两个以上的数据类型
- error C2440: “<function-style-cast>”: 无法从“IplImage *”转换为“cv::Mat”
- Citrix为什么要兼容第三方服务器虚拟化平台
- 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配
- matlab三维网格绘图函数mesh、meshc、mesh、zmeshgrid、surf【matlab图行绘制五】
- 计算机网络什么是p2p,计算机网络-p2p(示例代码)
- 魔方机器人之SVM算法识别魔方颜色
- oracle实例恢复 redo,ORACLE不完全恢复之current或active状态redo损坏(二)
- 常见的电商直播模式有哪些,你都了解过吗?
- 工程管理系统源码-专注项目数字化管理
- 魔力宝贝 - 窗口分辨率修改
热门文章
- ld: symbol(s) not found for architecture i386 只在iPad模拟器上报错,其它模拟器上正常显示
- MATLAB与Baxter机器人通信---网络环境配置篇
- 含泪整理最优质窗帘 落地3d模型素材,你想要的这里都有
- C++代码:整数的个数
- 信息时代,为什么还读纸质书
- 最牛逼的自媒体平台今日头条申请秘籍,包过!
- Android 热修复技术浅析
- 测试人高中低音的软件,【精】Q3原车音箱35TFS调试测试与高中低音设置,放音乐调试结果附最后...
- 基于深度强化学习的长期推荐系统
- Kafka (阿里云 ECS)磁盘类故障修复操作文档