为FPGA设计添加复位功能的注意事项
本文将探讨在 FPGA 设计中添加复位输入的一些后果。
本文将回顾使用复位输入对给定功能进行编码的一些基本注意事项。设计人员可能会忽略使用复位输入的后果,但不正确的复位策略很容易造成重罚。复位功能会对 FPGA 设计的速度、面积和功耗产生不利影响。
在继续我们的讨论之前,有必要强调一个基本原则:FPGA 是可编程设备,但这并不意味着我们可以对FPGA 中的每个功能进行编程。这一基本原则将在本文的其余部分进一步阐明。
在添加复位输入之前仔细阅读详细信息
图 1 显示了 Xilinx 7 系列 FPGA 中可用的 D 型触发器 (DFF)。
图 1. Xilinx 7 系列 FPGA 的 FDRE D 型触发器。图片由赛灵思提供。
这种具有同步复位 (R) 和时钟启用 (CE) 输入的特定 DFF在 Xilinx 库指南中称为 FDRE ( F触发器,D型,同步复位,时钟启用)。该元素的逻辑表如图 2 所示。
图 2. Xilinx 7 系列 FPGA 的 FDRE D 型触发器的逻辑表。图片由赛灵思提供。
其中,R、CE、D、C为DFF的输入端,分别代表复位、时钟使能、数据输入和时钟。X代表“don't-care”,↑代表时钟上升沿。复位是同步的,因为它只能在时钟的上升沿复位输出。
这个 DFF 是一个设计元素,可以用作更大设计的构建块。我们可以用它来注册一个想要的信号。而且,我们可以根据需要自由使用 FDRE 的复位和时钟使能输入。
我们可以选择是否要使用构建块的可用功能。但是,我们不能向给定的构建块添加不受支持的功能。例如,考虑上面讨论的 FDRE 元素。此设计元素仅支持同步复位。如果我们同时需要异步和同步复位,我们将无法使用 FDRE 触发器。在这种情况下,综合工具将不得不使用其他资源,或者它甚至可能求助于使用可用构建块的组合来实现所需的设计。如您所见,FPGA 的低级特性是固定的,但是一旦配置了这些设计元素,我们就可以按照我们想要的方式将它们连接在一起并构建更大的设计。
作为 FPGA 粒度如何影响实现的一个更微妙的例子,请注意,根据上面的逻辑表,FDRE 的复位 (R) 输入相对于时钟使能 (CE) 输入具有更高的优先级(注意表的行表示当 R 为 1 时,CE 无关)。现在,假设我们的 HDL 代码使用具有复位和时钟使能输入的 DFF。而且,HDL 描述赋予 CE 输入更高的优先级,而不是 R 输入。同样在这种情况下,综合工具将不得不使用 FDRE 以外的资源,或者它必须使用可用构建块的组合来实现所需的功能。有关此示例的更多详细信息,请参阅Xilinx 白皮书。
上面的讨论表明,要获得高效的设计,我们必须仔细研究 FPGA 设计元素的细节,就像我们在使用分立元件之前研究其数据表一样。在本文的其余部分,您将看到此原则的一些其他示例。
移位寄存器查找表 (SRL16)
Xilinx 综合工具可以实现基于 LUT 的移位寄存器,比简单地级联一些 DFF 得到的结构更紧凑、更快。这些称为 SRL 的高效移位寄存器不支持复位输入。这就是为什么,如果您的移位寄存器真的不需要复位,您应该避免它,以便允许综合工具为移位寄存器推断一个有效的基于 SRL 的实现。如果您的代码描述了一个具有复位功能的移位寄存器,XST 将使用 DFF 实现设计,或者它将使用一些围绕 SRL 的额外逻辑来实现复位功能。SRL 可以从简单的串联运算符中推断出来(请参阅XST 用户指南第 154 页)。
块 RAM
与 SRL 的情况类似,我们无法使用显式重置来重置块 RAM 的内容。这就是为什么在将设计映射到块 RAM 时,我们不应该使用复位。您可以在此处找到更多详细信息。
乘数
与不支持复位的 SRL 或块 RAM 不同,某些模块(例如乘法器)对复位类型有限制。这些模块仅支持同步复位。对于给定的乘法器,用同步策略替换异步复位可以将操作频率提高两倍或更多。
总而言之,不正确的复位策略会阻止综合工具有效利用 FPGA 中可用的优化模块。这会对设计的面积、功率和速度产生不利影响。现在,让我们看一些示例,其中综合软件使用 DFF 的复位端口来执行一些优化。
使用设置/重置输入来优化实施
通常建议尽可能避免使用设置和重置输入。这有助于综合工具应用优化,其中检查 DFF 的设置/重置输入以简化实现。为了进一步阐明,假设我们要实现图 3 中所示的原理图。
图 3.可以通过综合软件优化的特定情况。图片由Advanced FPGA Design提供。
在图 3 中,当“信号 A”为逻辑高电平时,无论组合电路“梳状逻辑”的输出是什么,DFF 输出都将在时钟边沿变为高电平。这就是为什么如图 4 所示,综合软件可以消除或门并将“信号 A”应用于 DFF 的同步设置输入。现在,当“信号 A”为逻辑高电平时,DFF 将在时钟边沿设置为高电平。否则,输出将由组合电路“Comb Logic”决定。新设计提供了所需的功能,但现在取消了或门,设计的速度和面积都得到了改善。
图 4.图 3 中电路的优化形式。图片由Advanced FPGA Design提供。
有趣的是,有时,综合工具可能决定对上述优化进行反向操作,并实现图 4 的原理图,如图 3 所示!这是因为在 7 系列中,slice 中的所有 DFF 共享相同的 CK、SR(置位/复位)和 CE 信号。这意味着其 SR 输入连接到“信号 A”的 DFF 不能位于具有其 SR 输入连接到除“信号 A”以外的信号的 DFF 的同一切片中。如果控制信号,即 CK、SR 和 CE 不相同,则 DFF 必须放置在不同的片中。在使用许多低扇出复位信号的设计中,这会导致切片利用率低下。事实上,每个低扇出复位信号都会使用一个 slice 的几个 DFF,而该 slice 的剩余 DFF 将被浪费。在这种情况下,综合工具可以实现图 4 的原理图,如图 3 所示。此过程将导致 DFF 不使用其复位输入。因此,这些 DFF 可以共享相同的控制信号,并且可以放置在同一片中。因此,设备利用率将得到提高。
在图 3 和图 4 中,我们看到后跟 DFF 的或门可以替换为使用其设置输入的 DFF。同样,我们可以用使用其复位输入的 DFF 替换后跟 DFF 的与门(参见下面的图 5)。
图 5.图片由Xilinx提供。
在图 5 中,SRVAL 属性指定断言 SR 输入后 DFF 的输出值。因此,对于左侧中间的 DFF,SR 输入被指定为设置端口。但是,对于左侧下方的DFF,SR输入实际上是复位输入。上层 DFF 不使用复位输入。
左边的三个DFF不能放在同一个slice中,因为它们的控制信号不同。然而,通过上面讨论的转换,我们获得了三个具有相同控制信号集的 DFF。因此,我们可以将三个 DFF 放在同一个切片中。请注意,上述转换对异步置位/复位信号无效。这就是为什么我们通常建议使用同步设置/重置信号而不是异步信号。
为FPGA设计添加复位功能的注意事项相关推荐
- FPGA之道(18)FPGA设计的编译过程
文章目录 前言 FPGA设计的实现过程 编译概述 编译流程之综合 综合的输入 HDL代码 综合设置 综合的输出 综合的工具 编译流程之翻译融合 翻译融合的输入 翻译融合的输出 翻译融合工具 编译流程之 ...
- FPGA设计思想与技巧(转载)
题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...
- 高级FPGA设计结构实现和优化_(一)结构设计
高级FPGA设计结构实现和优化_结构设计 高速度结构设计 高流量设计 低时滞结构设计 时序设计 改进策略 添加寄存器层次 并行结构 展平逻辑结构 寄存器平衡 重新安排路径 面积结构设计 折叠流水线 基 ...
- FPGA设计心得(4)Aurora IP core 的定制详情记录
文章目录 写在前面 IP核定制页面预览 IP核定制详解 lane width Line Rate GT REFCLK (MHz) INIT clk (MHz) DRP clk (MHz) Datafl ...
- FPGA之道(20)FPGA设计的上板调试与项目总结
文章目录 前言 FPGA设计的上板调试 "实践是检验真理的唯一标准" 如何解决问题 如何找到问题 "时间是检验真理的第二标准" 项目总结.备份与后期维护 前言 ...
- FPGA设计的常用思想与技巧(转)
FPGA设计的常用思想与技巧 2007-04-30 16:54:51 大中小 本文讨论的四种常用 FPGA/CPLD 设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是 FP ...
- (29)基于FPGA实现看门狗功能(FPGA不积跬步101)
1 引言 微处理(ARM.单片机)在特殊的环境下,运行代码或程序会跑到非预期状态,也就是说系统可能会进入死循环,这种情况微处理器无法进行自我恢复,只能通过复位或者重启进行解决.看门狗就是解决这种情况 ...
- 防止FPGA设计中综合后的信号被优化
这不是一个新话题了,写这个也是当作自己的一个小小的笔记吧!觉得挺有用的. 一般在做前仿真(即功能仿真)时,不会考虑信号被优化的问题.最近做一个关于运算的小程序,前仿真的数据没有问题,但是实际出来的数据 ...
- 华为FPGA设计高级技巧xilnx篇-阅读笔记2
华为FPGA设计高级技巧xilnx篇-阅读笔记2 设计技巧 合理选择加法电路 串行进位与超前进位 使用圆括号处理多个加法器 IF语句和Case语句:速度与面积的关系. 减少关键路径的逻辑级数 通过等效 ...
最新文章
- bash读取txt文件, 并在浏览器中以表格形式输出
- enum in c language
- H5小游戏 - canvas涂鸦板
- 微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
- 精美js聊天窗口界面代码
- 正确安装adb工具,且常用的adb命令
- Labview笔记(十)---文件IO (中)---读写 配置文件,XML文件
- Three.js的人物动画与交互
- 《即兴演讲》学习总结
- HTML5期末大作业:餐饮文化网站设计——餐饮文化(8页) HTML+CSS+JavaScript 学生DW网页设计美食文化
- Office小技巧|Excel表格输入身份证数字就变了乱码怎么办?
- 汪华:未来三年的移动互联网创业
- vue 开发的微信公众号网页 添加背景音乐,以及音乐图标旋转动画
- 串口协议模板及其参数配置
- C++程序避免触发 Win7下的程序兼容助手
- Python-docx生成word文档
- 【数据结构】B树和B+树的笔记详细诠释
- windows下编程控制摄像头的详细介绍
- 对作用域、作用域链的理解
- jquery批量上传图片 java_简单多图片上传 jquery+java 代码
热门文章
- GoogleEarth二次开发平台指南(3) ---如何获取点坐标、绘制线路和区域、沿指定线路三维漫游
- MediaDevices html5,HTML5如何通过navigator.mediaDevices.getUserMedia调用手机摄像头
- nc65 linux环境搭建,NC65搜索服务器搭建
- 虚拟机没有网络还没有网络图标!!!
- oracle连接耗尽,linux熵池耗尽,导致oracle数据库连接失败
- 基于Oracle的SQL优化(崔华著)-学习笔记
- OTP升级(20.3到21.3)
- 人物专访 | Artifex Studio合成师兼统筹小姐姐不一样的经历
- 通过建站学运维(课时8)
- 日记侠:分享赚钱和分享快乐你如何理解?