-
高手。值得学习。
-
收藏, 谢谢。收下了。。。
-
上拉下拉电阻
pullup、pulldown的主要目的就是将悬空的管脚引导到确定的状态,避免未知的干扰。所以在悬空的管脚,确定输入的管脚以及三态管脚上用的比较多。要修改管脚的pullup、pulldown、float 属性,可以在BitGen的时候从Generate Programming File的属性中选择
保持电路
三态信号在没有驱动的时候悬空,为了防止悬空,有一个保持电路可以帮助信号保持在前一逻辑状态。具体使用方法- 使用 KEEPER 属性- 使用 KEEPER 库原语注意,如果使用了上下拉电阻,则该属性被重置,因为实现的功能是类似的。差异是上下拉将悬空信号拉回确定值,而KEEPER是保持回前一逻辑值。
电平转换速率 SlewRate
SlewRate用于设置IOB输出电平的切换速率。速率太低则很多接口时序得不到保障,因此有时候需要使用高速的切换速率。实现的方法就是加大驱动电流,从2mA到16mA,每2mA有一个选择。电流越大,当然驱动能力越强,相应的电平切换速率也更快。但是高速的切换会导致PCB电路的传输线效应,所以只要能满足应用,尽量采用低速的SlewRate
Bank内的IOB组织
S3E的四边各有一个IOB 的BanK。每个Bank可以有自己独立的Vcco和Vref,所以一般的,每个bank可以有自己独立的电平标准。有些电平标准有相同的Vcco,则在该Bank内可以支持多个电平标准。对于差分信号,每个Bank都可以支持下面三个差分标准中的任意两个- LVDS_25- MINI_LVDS_25- RSDS_25但是不能做到同时支持这三个标准
-
“级联”重定时特性——提高DDR的性能
在IDDR2和ODDR2的典型实现(图4图6)中,存在一个问题....
以IDDR2为例,
我们可以发现,在经典实现中,输出的两路数据分别与时钟的两个边沿对齐。
但是,强调一下,后端的系统中往往只有一个时钟,工作在上升沿。
那么对于下降沿对齐输出的数据,从下降沿开始到上升沿被采样,只有半个时钟的余量来稳定输出并满足setup。
由于FPGA系统比较复杂从IOB出来的数据要进入到下一个存储单元可能会经历非常漫长的逻辑和路由延迟。
要在半个时钟内完成,有很大的挑战性,尤其是在高速系统中,往往有很大的困难。
Spartan3E的解决办法是,利用相邻从属IOB的存储单元,对下降沿输出的数据马上做一次上升沿抽样。
由于两个IOB相邻,不存在复杂的逻辑和路由延迟,因此虽然余量也是半个时钟,但一般情况下甚至高速系统下也可以成功实现。
这样数据就回到了上升沿时钟域。
到了上升沿时钟域,则数据有一个时钟的时间余量,处理起来就和普通的情况一样了。
以上是关于IDDR2的讨论,对于ODDR2有着类似的情况,大家可以自己理解一下。参考图6图7即可。
想到一个资源守恒的公理,就是自然界普遍存在的trade off 现象。
如果添加一个寄存器抽样,则系统负担降低;反之如果想少使用资源,不使用这个抽样寄存器,则全系统的负担会提高。
这个例子告诉我们两个道理
1. trade off 普遍存在
2. 四两可以拨千斤
SelectIO 信号标准
S3E可以支持很多接口信号标准,比如最常见的 LVTTL、LVCMOS系列、PCI系列。
此外,还支持差分信号标准,典型的比如LVDS系列。
要实现指定的信号标准有两个必要条件:
1. 内在设置:在UCF文件中对指定pin设置IOSTANDARD属性,这样FPGA会自动切换指定IOB的信号标准;
2. 外在设置:每个信号标准都要求指定的Vcco(有些还要求指定的Vref),因此要在PCB板上提供相应的Vcco支持。
再来说说差分信号,他的优点是差分信号固有的噪声消除特性来提高数据的可靠性,从而提高单路数据的传输速率。
差分信号的命名有套规则,比如:
IO_L43P_3和IO_L43N_3就表示 Bank3里面第43对差分线的正负两根线。
差分信号的termination
差分信号一般传输速率较高,因此对信号的完整性有严格要求。
方法之一就是使用termination来防止信号反射。
为了减少用户的外部负担,S3E实现了内部的差分termination。
使用方法就是在UCF中加入下列语句。
INST
DIFF_TERM = "";
-
可编程输入延迟的设置
输入延迟的设置只能在Image配置的时候建立,在设备工作期间无法改变。
我想有两种方法可以改变输入延迟的设置:
1. 通过延迟原语在代码中设置;
2. 通过FPGA editor在P&R完成后在ngc文件中修改。
存储单元
存储单元可以配置为D触发器,就是我们常说的FF,Xilinx称之为FD;
也可以配置为锁存器,Xilinx称之为LD。
输出和三态通路各有一对寄存器外加一个MUX。
利用这种2+1的组合可以产生DDR操作,Xilinx称之为ODDR2。
每个存储单元都有6个接口信号:
时钟+时钟时能,数据输入+输出,置位复位+翻转输入
除了这些信号,存储单元还有一些属性设置:
- FF/Latch可以用来配置存储单元的类型;
- Sync/Async 配置置位复位的方式;
- SRHIGH/SRLOW 配置是置位(1)还是复位(0);
INIT1/INIT0 配置置位复位的初始值,一般置位(1)复位(0);
DDR支持
输入、输出、三态。这三个IOB通道都可以实现DDR支持。
输出和三态通道可以实现ODDR2原语,这个原语的实现原理可以参考p5的图3.
两个相差180度的时钟和两路信号进入一对寄存器并通过DDR专用MUX输出,即可得到DDR数据输出。
实现相差180度,有两种方法。
一种是通过DCM直接产生这两个信号。
另外的方法是同一时钟,但是连入寄存器的时钟端口时,一路取反。
输入通道则实现 IDDR2原语。
如果输出、三态通路实现的是DDR的调制的话,这一路其实就是DDR的解调,也就是1分为2。
当然,这里需要提供两路相差180度的时钟。
另外ODDR2还有一个重要用途,就是用于产生随路时钟。
只要把两路数据固定为1和0,这样产生的DDR数据其实就是0/1交叉的时钟信号了,这个一想就明白了吧。
这样做的好处是:数据和时钟都经过IOB寄存器处理,具有相同的延迟特性,从而实现了所谓的源同步
-
图:通过使能信号降低功耗。
另一种选择是在电路板上而不是在芯片上进行这种“数据使能”。以尽可能减小处理器时钟周期。此概念是使用CPLD从处理器卸载简单任务,以便使其更长时间地处于待机模式。
让我们来看一个在状态7和状态8之间频繁进行状态转换的状态机。如果您为该状态机选择二进制编码,将意味着对于每次状态7和状态8之间的状态转换,将有四位需要改变状态,如表所示。如果状态机采用格雷码而不是二进制码来设计,则这两个状态之间的转移所需的逻辑转换的数量将降至仅一位。另外,如果将状态7和8分别编码为0010和0011,也可以达到同样的效果。
时钟管理
在一个设计的所有吸收功耗的信号当中,时钟是罪魁祸首。虽然一个时钟可能运行在100MHz,但从该时钟派生出的信号却通常运行在主时钟频率的较小分量(通常为12%~15%)。此外,时钟的扇出一般也比较高——这两个因素显示,为了降低功耗,应当认真研究时钟。
如果设计的某个部分可以处于非活动状态,则可以考虑使用一个BUFG-MUX来禁止时钟树翻转,而不是使用时钟使能。时钟使能将阻止寄存器进行不必要的翻转,但时钟树仍然会翻转,消耗功率。不过采用时钟使能总比什么措施也没有强。
隔离时钟以使用最少数量的信号区。不使用的时钟树信号区不会翻转,从而降低该时钟网络的负载。仔细布局可以在不影响实际设计的情况下达到此目标。
对FPGA显然也可以使用同一概念。虽然FPGA不一定拥有待机模式,但使用一个CPLD中途栏截总线数据并有选择地将数据馈送到FPGA也可以省去不必要的输入转换。
CoolRunner-II CPLD包含一种称为“数据门控”的功能,可以禁止引脚上的逻辑转换到达CPLD的内部逻辑。该数据门控使能可通过片上逻辑或引脚来控制。
状态机设计
根据预测的下一状态条件列举状态机,并选择常态之间转换位较少的状态值。这样,您就能够尽可能减少状态机网络的转换量(频率)。确定常态转换和选择适当的状态值,是降低功耗且对设计影响较小的一种简单方法。编码形式越简单(一位有效编码或格雷码),使用的解码逻辑也会越少。
功耗估算工具
赛灵思提供了两种形式的功耗估算工具:一种叫做Web Power Tools的设计前工具和一种叫做Xpower的设计后工具。Web Power Tools可通过www.xilinx.com/cn/power 获得,它提供了根据逻辑利用率大概估计做出的功耗估算。利用它,您可以仅凭设计利用率估计就能获得功耗评估,而无需实际设计文件。
XPower是一种设计后工具,用于分析实际器件利用率,并结合实际的适配后(post-fit)仿真数据(VCD文件格式),给出实际功耗数据。利用Xpower,您可以在完全不接触芯片的情况下分析设计改变对总功耗的影响。
基于Web的功耗工具
基于Web的功耗估计是在设计流程的早期获得器件功耗情况的最快捷和最方便的方法。这些工具每个季度都会发布新版本,因此信息总是最新的,且不需要安装或下载,只需要拥有互联网连接和Web浏览器即可。您可以指定设计参数并保存和加载设计设置,免去了通过交互使用重新输入设计参数的麻烦。只要有对设计行为的估计并选定目标器件即可开始。
表:通过状态编码减少信号转换。
Xpower:集成的设计专用功耗分析
Xpower是所有Xilinx ISE设计工具的一个免费组件,您可以利用它对您的基于设计的功耗需求进行详细得多的估计。XPower是在映射或布局和布线后设计的基础上对器件功耗进行估计的。
对于成熟的投产的FPGA和CPLD,XPower计算出的功耗估计的平均设计批量误差(suite error)小于10%。它将把器件数据与您的设计文件结合起来综合考虑,并按照您的专门设计信息给出估计器件功耗的高精度报告。
XPower直接集成在ISE软件中,可提供层次化的详细的功耗显示、详细的总结报告和功耗向导,即使是新用户也可轻易上手。XPower可接受仿真的设计活动数据,并可以GUI模式和批处理模式运行。
XPower将考虑设计中的每个网络和逻辑元素。ISE设计文件提供准确的资源使用情况;XPower交叉参考布线信息以及特性化电容数据。于是物理资源针对电容进行特性化。设计特性化将对新器件持续进行,以给出最精确的结果。Xpower使用了网络翻转速率和输出负载。然后XPower计算功耗和结温,还可以显示单个网络的功耗数据。
结论
对更便宜和更简单的热管理以及与前沿FPGA不断提高的功耗需求相匹配的电源的不断增长的需求,将低功耗设计的概念提升到一个全新的高度。赛灵思最新器件Virtex-4 FPGA提供了90nm工艺技术的高性能,却避免了预想中静态功耗的显著增大。使用赛灵思功耗估算工具并遵循低功耗设计考虑事项,满足您的功耗目标将比以往任何时候都更加容易。
Arthur Yang
高级产品应用工程师
Xilinx
-
也想要
-
好东西,关注。
-
关注
-
上次也出现过,好像不影响使用。
-
ArchitectureWizard直接生成。 全局时钟资源的使用方法 1.IBUFG+BUFG的使用方法: IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。 2.IBUFGDS+BUFG的使用方法: 当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。 3.IBUFG+DCM+BUFG的使用方法: 这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。 4.Logic+BUFG的使用方法: BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最 小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。5.Logic+DCM+BUFG的使用方法: DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。使用全局时钟资源的注意事项全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFG DS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。 全局时钟资源的例化方法 全局时钟资源的例化方法大致可分为两种: 一是在程序中直接例化全局时钟资源; 二是通过综合阶段约束或者实现阶段约束实现对全局时钟资源的使用; 第一种方法比较简单,用户只需按照前面讲述的5种全局时钟资源的基本使用方法编写代码或者绘制原理图即可。 第二方法是通过综合阶段约束或实现阶段的约束完成对全局时钟资源的调用,这种方法根据综合工具和布局布线工具的不同而异。使用DCM,有两种方法。记住CLKFB的输入是CLK0进过一级BUFG处理后得到的信号
-
Xilinx ISE的流程
-
-
Spartan®-3E 现场可编程门阵列家族是为满足对成本敏感的消费电子大量应用的需要
而特别设计的。家族的5位成员提供密度范围从1万到100万系统门。
凭着它们突出的低成本优势,Spartan-3E FPGA很适合在广泛的消费电子产品领域中应用,
包括宽带接入,家庭网络,显示器/投影仪,还有数字电视设备。
Spartan-3E家族是取代掩膜编程ASIC的最佳选择。FPGA避免了高昂的初始成本,过长
的开发周期,和常规ASIC固有的不灵活。同样,FPGA的可编程能力允许现场进行设计升
级,不需要替换任何硬件,这是ASIC所不具备的
-
低优先级分区的实现为了创建低优先级的部分比特流,首先,您要创建含有这两个分区(即高优先级分区和低优先级分区)的完整FPGA设计的实现。从以前的实现中导入高优先级分区,从而保证其实现方法与原来的实现方法相同。对于Virtex-6器件而言,部分重配置(PR)流程可用于所有上述的实现。这样,就会自动得到针对低优先级分区的部分比特流。由于 Spartan-6器件 系列不支持PR流程,在实现针对Spartan-6设计的Fast Startup时,我们使用了针对差异化的部分重配置的BitGen选项,以获得低优先级分区的部分比特流。[5]图3给出了该工具流程的高层概览。
-
用过cp2102 ,usb还是比较稳定的。
-
Hardware ID: BBE61B62-E119
Name: TL
E-mail: sdjntl@yeah.net
-
好工具,谢谢了。
-
:) :)
-
很全,收藏。希望能用到。