Xilinx FPGA “打一拍”“打两拍”以及IOB含义

本次总结主要是参考网上的说法,最近在接触到异步时钟同步的时候了解到利用“非阻塞赋值<=”进行时钟同步,碰到有人说“打一拍”“打两拍”可以降低亚稳态问题,听起来有点糊,所以总结一下:

一、 “打一拍”“打两拍”的含义

关于FPGA中“打一拍”的含义,我们可以理解为**把某个信号延迟了一个时钟周期,推而广之:“打两拍”就是延迟两个时钟周期,“打n拍”就是延迟n个时钟周期。**通俗的讲,打一拍就是系统时钟对外部信号采样一次,把采样的结果数据做为下一步的控制状态!
“打一拍”的目的很简单,就是为了FPGA中时序的正确性!!!!

二、输入信号为什么要寄存

一般来说,在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间,保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。但是如果模块需要使用输入信号的跳变沿(比如帧同步信号),千万不要直接这样用哦。

三、所有信号都需要寄存两拍吗

如果这个输入信号来自异步时钟域(比如FPGA芯片外部的输入),必须寄存两拍。第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少(注意是减少)亚稳态带来的影响。
如果这个输入信号来自于同一时钟域且需要用到跳变沿,需要寄存一拍。否则时序报告多半会报clock skew > data delay,造成建立/保持时间的冲突。
总而言之,五条原则:
1.全局时钟的跳变沿最可靠。
2.来自异步时钟域的输入需要寄存一次以同步化,再寄存一次以减少亚稳态带来的影响。
3.不需要用到跳变沿的来自同一时钟域的输入,没有必要对信号进行寄存。
4.需要用到跳变沿的来自同一时钟域的输入,寄存一次即可。
5.需要用到跳变沿的来自不同时钟域的输入,需要用到3个触发器,前两个用以同步,第3个触发器的输出和第2个的输出经过逻辑门来判断跳变沿。

信号打拍的实现方法(包括Verilog代码)

将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存器中打一拍。因为,从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用内部其他寄存器就无法保证每次用的都是同一个寄存器且采用同样的布线。同时,为了使用输入输出延迟功能(Input / Output delay),也必须要求信号使用IOB里面的寄存器。
给出一个verilog代码模板:

always @ (posedge Clk) //不对输入信号进行寄存
begin
if (inputs)
begin
...
end
...
end
always @ (posedge Clk) //对输入信号寄存一拍
begin
inputs_reg <= inputs;
if (inputs_reg == 1'b0 && inputs == 1'b1)
begin
...
end
...
end
always @ (posedge Clk) //对输入信号寄存三拍
begin
inputs_reg1 <= inputs;
inputs_reg2 <= inputs_reg1;
inputs_reg3 <= inputs_reg2;
if (inputs_reg2 == 1'b1 && inputs_reg3 == 1'b0)
begin
...
end
...
end
五、FPGA IOB的含义

如下图所示,一个fpga主要是由可编程输入输出单元(图中的IOB模块),可编程逻辑单元(CLB模块),块RAM(图中的BRAM,也属于内嵌硬件),数字时钟管理(DCM,也属于内嵌硬件),还有一些内嵌的专用的硬件模块(DSP),IOB寄存器就在图中的IOB模块中。

IOB(Input output block)是可编程输入输出单元,是fpga与外界电路的接口部分。用于完成不同电气特性下对输入/输出信号的驱动和匹配要求。 IOB单元简称IO单元,是芯片与外部器件的接口部分,用于完成不同电气特性下对输入输出信号的的驱动和匹配要求。目IO口的频率越来越高,一些高端的fpga通过DDR技术可使数据率达到Gb/s.
为了让I/O使用IOB里面的寄存器,需要设定综合与MAP(对应于Xilinx的ISE工具)的相关属性。默认情况下,综合过程和MAP过程都是根据软件的分析自动判断是否要将I/O 的寄存器放入 IOBs中。如果需要强制指定,必须将Pack I/O Registe Into IOBs的默认属性修改成需要的值。对于XST,可以将I/O Pack Registers Into IOB属性由默认的Auto 修改为Yes或No。对于Snyplify,可以在Verilog代码的模块声明中添加属性:/* synthesis syn_useioff = 1 /。具体应用如下 module module_a(a,b,c) / synthesis syn_useioff = 1 */ ; 。MAP过程Pack I/O Registe Into IOBs属性可以设置成:Off,For Inputs Only,For Output Only,For Input and Output。需要特别注意的是,如果只在MAP过程中要求将I/O放入IOBs中,而在综合过程中没有强制要求,最终实现时I/O不一样会Pack Into IOBs。必须保证综合和MAP同时对该属性进行设定。
参考链接:https://blog.csdn.net/kebu12345678/article/details/80669549

Xilinx FPGA “打一拍”“打两拍”以及IOB含义相关推荐

  1. (35)FPGA打两拍、打三拍设计(第7天)

    (35)FPGA打两拍.打三拍设计(第7天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA打两拍.打三拍设计(第7天) 5)技术交流 6)参考资料 2 ...

  2. (04)VHDL实现打两拍

    (04)VHDL实现打两拍 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL实现打两拍 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate ...

  3. (42)Verilog HDL 打两拍设计

    (42)Verilog HDL 打两拍设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 打两拍设计 5)结语 1.2 FPGA简介 FPGA( ...

  4. (32)SystemVerilog语言编写打两拍

    2.02 SystemVerilog语言编写打两拍 2.2.1 本节目录 1)章节目录: 2)FPGA简介: 3)SystemVerilog简介: 4)SystemVerilog语言编写打两拍: 5) ...

  5. (2)verilog语言编写打两拍

    2.2.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写打两拍: 5)本节结束. 2.2.2 FPGA简介 FPGA(Field Programm ...

  6. (2)打两拍systemverilog与VHDL编码

    2打两拍systemverilog与VHDL编码 1 本章目录 1)FPGA简介 2)SystemVerilog简介 3)VHDL简介 4)打两拍verilog编码 5)打两拍VHDL编码 6)结束语 ...

  7. (24)打两拍verilog与VHDL编码(学无止境)

    2 打两拍verilog与VHDL编码 1 本章目录 1)FPGA简介 2)Verilog简介 3)VHDL简介 4)打两拍verilog编码 5)打两拍VHDL编码 6)结束语 2 FPGA简介 F ...

  8. 2 打两拍verilog与Systemverilog编码

    2 打两拍verilog与Systemverilog编码 1 本章目录 1)FPGA简介 2)Verilog简介 3)Systemverilog简介 4)打两拍verilog编码 5)打两拍Syste ...

  9. FPGA异步通信之间的数据打拍

    FPGA在通信的时候,经常会调用打拍函数对数据进行打拍,那么为什么要进行打拍呢? 其实数据打拍也不是随便打的,那么我们先来看看异步通信中的亚稳态. 由于FPGA设计中常常使用触发器,触发器工作时是有一 ...

最新文章

  1. 解决ros安装 使用roscore命令测试问题
  2. 致敬YOLO!华科提出YOLOS:基于视觉Transformer的目标检测
  3. linux修改网卡的mac地址
  4. win8.1 USB启动盘制作(不支持UEFI,不支持GPT分区)
  5. 如何绘制逻辑图 — 2.要素的属性
  6. Recoll:Unix和Linux桌面的文本搜索工具
  7. 比较字符串是否相同,比较大小
  8. Linux下grep、egrep及fgrep命令详解
  9. 腾讯自动驾驶新动作!与现代合作开发无人车系统
  10. centos7修改命令行或图形界面启动模式
  11. 新产品开发流程管理:以市场为驱动【笔记】(二)
  12. WAP加密和WEP加密比较
  13. 仿真软件有哪些测试,仿真怎么去仿?测试怎么去测?虽然是问答篇,干货也不少,不要错过了!...
  14. 【备忘】LAMP兄弟连李明老师讲Linux[更新完毕-共享完毕]
  15. Python链家广州二手房的数据爬取--数据爬取
  16. 深度学习-深度卷积神经网络发展
  17. python numpy 矩阵运算_NumPy向量和矩阵的运算
  18. 贪心高性能神经网络与AI芯片~学习笔记总计1
  19. 5G端到端网络切片进展与挑战分析
  20. zabbix监控RDS

热门文章

  1. 打造淘宝极简包的轻量化框架
  2. 程序员七夕特刊,绝无狗粮添加剂
  3. HDU - 2072 -- 单词数【set or 字典树】
  4. 刘涛代言的美丽田园冲刺港股:年内盈利2亿 突击分红1.2亿
  5. 阿里云服务器的购买以及使用
  6. 团队里不能留的三种人
  7. select 函数使用方法
  8. 利用urdf及RobCoGen生成运动学及动力学代码
  9. Revit二次开发之 自定义选项卡排在最前端
  10. matlab外推预测函数,时间序列模型 (五): 趋势外推预测方法