集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1099|回复: 0

关于I/O buffer(FPGA)(原创)

[复制链接]
羽蒙 发表于 2014-7-29 11:37:15 | 显示全部楼层 |阅读模式
关于I/O buffer(原创)

  昨天后仿真四位加法器的时候,想比较一下,超前进位加法器和串行加法器的时候,特意比较了一下那个的延时少一些,居然发现超前进位加法器延时比串行加法器多,不知道为什么,于是做么一下是不是优化的问题。于是鼓弄了一下,在ISE——Synthesize(综合)右键——Properties

  ISE内嵌综合工具——XST

ISE内嵌综合工具

点击看原图

  就会出来综合选项,通过选择相应的选项,满足特定的要求。

  Sythesis Options
  HDL Options
  Xilinx Specific Options
  由于我要做的是DDS,要求工作在100MHz的时钟下,所以对时序要求很高,我也就对综合选项都试了一下

  综合目标(Optimization)

  该参数用以指定优化的全局目标是面积(Area)优先还是速度优先(Speed)优先。由于时序要求一般来说比器件面积要求更重要,所以一般选择速度优先策略。

  尝试改变为Speed,但对加法器延时没变。

  综合难度(Optimization Effort)

  该参数用于指定综合器工作难度,如果设计时序和面积要求较高,选择难度指标为“Hight”。

  全局优化目标(Global Optimization Goal)

  该参数仅对FPGA有效,用于指定寄存器之间(ALLCLOCKNETS),输入引脚到首级寄存器之间(OFFSET_IN_BEFORE),末级寄存器到输出引脚之间(OFFSET_OUT_AFTER),输入引脚到输出引脚之间(INPAD_TO_OUTPAD)的优化策略。包括的优化属性有ALLCLOCKNETS、OFFSET_IN_BEFORE、OFFSET_OUT_AFTER、INPAD_TO_OUTPAD和MAX_DELAY。

  由于设计的加法器没有时钟信号,所以不必选择“ALLCLOCKNETS”,而选择“MAX_DELAY”,果然取得效果,延时从8.07ns,变为6.97ns,不过还是很长。可能这要定一个时序约束(我还不会L)。我理解的时序约束是,就像Protel自动布线,你要先设好布线规则:电源线5mm,信号线2.54mm,两孔间只能过一条线……如果不设好这些参数时,自动布线就将按照默认布,那就可能达不到你的要求。

  FPGA综合好比把硬件描述语言(Verilog/VHDL)转换为与非门寄存器这些基本单元。

  自动布局与布线就是把这些基本单元固化到FPGA的芯片上的连线布局。

  后来我发现加法器之所以延时8.07ns这么慢,是因为在输入输出加了Buffer。于是我就不选这个选项。

后来我发现加法器之所以延时8

点击看原图

  好了,这下子延时好了很多,能综合,但map的时候出现一大堆警告和一个错误:

  MapLib:701 - Signal ci connected to top level port ci has been removed.

  Pack:198 - NCD was not produced. All logic was removed from design.  This is usually due to having no input or output PAD connections in the design and no nets or symbols marked as 'SAVE'.  You can either add PADs or 'SAVE' attributes to the design, or run 'map -u' to disable logic trimming in the mapper.

  好像是所有输入输出都被删除了,这是怎么回事呢,要好好研究I/O Buffer

  i/o buffer 从功能上讲应该按照缓冲器去对待,不过实际的FPGA的I/O功能还要复杂很多,毕竟I/O模块内部还有各种控制保护电路与寄存器单元。

  IOBUF原语是单端双向缓冲期,其I/O接口必须和指定的电平标准相对应,支持LVTTL、LVCMOS15、LVCMOS18、LVCMOS25以及LVCMOS33等信号标准,同时还可通过DRIVE、FAST以及SLOW等约束来满足不同驱动和抖动速率的需求。默认的驱动能率为12mA,低抖动。IOBUF由IBUF和OBUFT两个基本组件构成,当I/O端口为高阻时,其输出端口0为不定态。IOBUF原语的功能也可以通过其组成组件的互联来实现。

  IOBUF原语的输入输出真值表如下表

IOBUF原语的输入输出真值表

  在综合结果分析时,IOBUF原语的RLT结构如下图:

IOBUF原语的RLT结构

  可见buffer是必须的,必须有。

  参考资料:

  1.《FPGA/CPLD设计工具 Xilinx ISE使用详解》

  2. http://www.eefocus.com/article/08-03/37457s.html Xilinx公司原语的使用方法1

  3. http://www.eetop.cn/bbs/thread-126287-1-8.html  I/O buffer 知识求助

  下面所说的“ISE布线时避免优化buf的方法”我也不知道什么意思,大家试试吧

  请在文本框输入文ISE布线时避免优化buf的方法:

  在这个BUF两端的信号线上加上下面的属性(Verilog HDL版本):

  wire bufin  /* synthesis syn_keep=1 xc_props="X" */;

  具体解释:

  1、syn_keep=1就是保留这个信号线,是它成为一个instance(synplify的),然后就可以对它添加XILINX的约束属性;

  2、xc_props=“”是synplify为XILINX保留留的约束属性,可以透传到ISE的实现中去,从而约束实现过程。

  3、“X”属性是在MAP时识别的KEEP属性,如果用XST综合就只需要在信号线的两端加上X属性就可以透传到MAP中去。但是synplify并不能识别,因此需要通过以上的方法将X属性透传到MAP中去。

  类似在 VHDL中也适用

  attribute syn_keep of temp01 : signal is true;

  attribute xc_props of temp01 : signal is "X";
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-6 10:30 , Processed in 0.059395 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表