关于I/O buffer(原创)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
昨天后仿真四位加法器的时候,想比较一下,超前进位加法器和串行加法器的时候,特意比较了一下那个的延时少一些,居然发现超前进位加法器延时比串行加法器多,不知道为什么,于是做么一下是不是优化的问题。于是鼓弄了一下,在ISE——Synthesize(综合)右键——Properties
ISE内嵌综合工具——XST
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
就会出来综合选项,通过选择相应的选项,满足特定的要求。
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自动布线,你要先设好布线规则:电源线<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />5mm,信号线2.54mm,两孔间只能过一条线……如果不设好这些参数时,自动布线就将按照默认布,那就可能达不到你的要求。
FPGA综合好比把硬件描述语言(Verilog/VHDL)转换为与非门寄存器这些基本单元。
自动布局与布线就是把这些基本单元固化到FPGA的芯片上的连线布局。
后来我发现加法器之所以延时8.07ns这么慢,是因为在输入输出加了Buffer。于是我就不选这个选项。
好了,这下子延时好了很多,能综合,但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原语的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 知识求助
用户1678515 2013-8-12 15:47
用户377235 2013-2-19 11:43
不错!