tag 标签: 原语

相关博文
  • 热度 17
    2015-3-14 22:22
    1112 次阅读|
    0 个评论
      目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。   与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。   1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多种格式的IO标准。   2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。   3. BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。   4. BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。   5. BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。   6. BUFGP相当于IBUG加上BUFG。   7. BUFGDLL是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。   8. DCM即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DCM与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。   全局时钟资源的使用方法 全局时钟资源的使用方法(五种)   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或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。   全局时钟资源的例化方法   全局时钟资源的例化方法大致可分为两种:   一是在程序中直接例化全局时钟资源;   二是通过综合阶段约束或者实现阶段约束实现对全局时钟资源的使用;   第一种方法比较简单,用户只需按照前面讲述的5种全局时钟资源的基本使用方法编写代码或者绘制原理图即可。   第二方法是通过综合阶段约束或实现阶段的约束完成对全局时钟资源的调用,这种方法根据综合工具和布局布线工具的不同而异。
  • 热度 15
    2014-8-29 08:27
    783 次阅读|
    0 个评论
           最近看关于FPGA的结构,发现LUT实际上是可以使用原语或者原理图中添加symbol调用。symbol information中有关于这个元件的例化原语。
  • 热度 25
    2013-10-24 14:24
    935 次阅读|
    0 个评论
      MAX+PLUSⅡ符号库提供了很多基本图元(Primitive, 又称原语)供图形设计文件调用, 这些图元大体上可分为缓冲器、 寄存器、 输入输出端口、 逻辑门图元等几类。其中寄存器和组合逻辑门的使用比较简单, 这里对另几类特殊图元的使用作一简单介绍。   1) 缓冲器类图元   在.gdf 文件中所提供的缓冲器图元包括CARRY(进位缓冲器)、 CASCADE(级联缓冲器)、 EXP(逻辑扩展缓冲器)、 LCELL(逻辑单元缓冲器)、 MECLL(宏单元缓冲器)、 GLOBAL(全局缓冲器)、 SCLK(同步时钟缓冲器)、 SOFT(软缓冲器)、 TRI(三态缓冲器)、 OPNDRN和WIRE。 所有图元均可在Prim库中找到。除了TRI、 OPNDRN、 WIRE以外, 其它缓冲器图元都能对逻辑综合过程进行控制。多数情况下, 不必使用这些图元, 但是, 如果编译器提示所作的设计太复杂而无法处理, 用户就需要在设计中插入上述某些图元, 从而引导逻辑综合器产生所期望的结果。   (1) CARRY   CARRY可为一个逻辑块设定进位输出逻辑, 并作为另一个逻辑块的进位输入。 此图元在加法器和计数器中可用以实现快速进位链逻辑。一个CARRY可以馈送到一个或两个逻辑体(Cones of Logic)。   如果一个CARRY同时馈送到两个逻辑体, 那么其中一个且只能有一个逻辑体要由另一个CARRY作输出缓冲。 在这种情况下, 两个逻辑体会在同一个逻辑单元(LC)中实现。 对于加法器和计数器的第一级, 必须遵守这个规则来把相加和进位输出逻辑连在一起。   输出接到CARRY的逻辑体最多也只能有两个输入端, 第三个输入端只能来自CARRY的输入。   CARRY的输出不能送到OUTPUT或OUTPUTC引脚。 两个CARRY不能输出至同一个门。CARRY不能以INPUT或INPUTC引脚作为输入, 也不能以寄存器作为输入。   (2) CASCADE   CASCADE可以作为一个与门逻辑或者一个或逻辑的级联输出, 也可作为另一个与逻辑或者或逻辑的级联输入。 利用级联输入功能, 可以把一个组合逻辑的快速级联输出与该器件中另一个相邻的组合逻辑的输出相或或者相与。   一个CASCADE只能输出至一个门, 也只能从一个门得到级联输入, 并且这些门只能是“与门”或者“或门”, 如AND、 NAND、 BAND、 BNAND、 OR、 NOR、 BOR和BNOR等。   CASCADE 不能输出至“异或门”(XOR), 也不能输出至寄存器, 更不能输出至OUTPUT或OUTPUTC引脚。狄•摩根反演定理要求在一个级联链中相互级联的“与门”或“或门”的类型必须相同。 级联的“与门”不能输出至级联的“或门”, 反之亦然。两个CASCADE不能输出至同一个门。   在逻辑综合过程中, 可以让编译器自动插入或删除CASCADE。 具体方法是通过对Cascade Chain逻辑选项作不同的设置来控制逻辑综合, 或在逻辑综合选项中对Cascade Chain做出选择。   (3) EXP   EXP 表示在设计中需要一个扩展乘积项。 在器件中扩展乘积项是反相的。 是否要使用扩展乘积项要由目标逻辑极性决定。 例如, 如果一个EXP要输出至两个“与门”, 并且其中第二个“与门”有一个反相输入端, 那么在逻辑综合时, 输出至反相输入端的EXP就被删除, 而产生一个正逻辑。 输出至不带反相的输入端的EXP不会被删除, 而是被用来实现目标逻辑。(一般情况下,应由逻辑综合器来决定在哪里插入或删除EXP。)   在包含多个LAB的器件中, 一个EXP只能输出到在同一个LAB中的逻辑。 如果一个EXP要向不同LAB中的逻辑进行输出, 就必须为每个LAB复制一个EXP。如果在一个设计中包含大量的EXP, 逻辑综合器就有可能把它们转换为LCELL, 目的是对乘积项和逻辑单元的使用进行平衡。   (4) GLOBAL   GLOBAL 表示某信号一定要使用一个全局(同步)时钟(Clock)、 清除(Clear)、 置位(Preset)或输出使能(Output Enable)信号, 而不是由内部逻辑产生或由一般的I/O引脚来驱动。 根据各种系列器件所具备的全局信号的不同, 全局信号的使用也不同 。   如果一个输入引脚直接与GLOBAL的输入端相连, 那么GLOBAL的输出可作为另一个图元的时钟、 清除、置位或输出使能等输入信号。这时GLOBAL的输出一定要与寄存器或TRI的输入端直接相连。 如果GLOBAL的输出端与TRI的输出使能端相连, 有可能需要在输入引脚与GLOBAL之间加一个非门。    全局信号的传输要比局部信号(Array Signals)快得多, 并且还会省出器件资源供其它逻辑使用。 GLOBAL常用来为整个设计或部分设计提供全局时钟。 为了检查寄存器所用的时钟是否是全局时钟, 可以查看报告文件(Report File)。   使用GLOBAL的另一种方法是用Logic Synthesis命令指示编译器自动选定设计中的一个已经存在的信号作为全局的时钟、 清除、预置或输出使能信号。 操作方法是, 选择菜单命令Assign / Global Project Logic Synthesis, 在出现的对话框中选择Automatic Global栏中相应的选项即可。   (5) SOFT   SOFT用来表示在设计中可能需要一个逻辑单元。 在对设计的处理过程中, 逻辑综合器对SOFT的输入逻辑进行检查, 以确定是否需要一个逻辑单元。 如果需要, SOFT就转换为LCELL, 如果不需要, 这个SOFT就被删除。说明了SOFT对逻辑综合的作用。在编译这个设计项目时, 逻辑综合器将删除SOFT, 综合后这个设计只占用一个逻辑单元。   如果编译器提示某个设计太复杂, 那么可以在设计中插入SOFT来禁止作逻辑展开。 例如, 可以在一个功能模块后面加一个SOFT来隔离开两个组合逻辑电路。如果选择菜单命令Assign / Global Project Logic Synthesis , 然后在出现的对话框中点击Define Synthesis Style...钮, 再在打开的对话框中点击Advanced Options..., 在书中图 5.70 所示的对话框中选择SOFT Buffer Insertion项, 那么在编译时, 编译器会自动在设计中插入SOFT。   (6) LCELL   LCELL 为所作的逻辑设计分配一个逻辑单元(LC)。 LCELL产生一个在整个器件内的所有逻辑中均有效的正逻辑和一个负逻辑。MCELL与LCELL具有相同的功能, 适用于MAX+PLUSⅡ早期版本。 使用MAX+PLUSⅡ新版本设计时, 应该使用LCELL。 一个LCELL一般要占用一个逻辑单元, 且不会在逻辑综合过程中被删除。 但是, 不要使用LCELL来产生所需的延时或异步脉冲。 因为用这种方式产生的延时随温度、电源电压以及所用器件制造过程的不同而不同, 因此会产生竞争条件, 从而产生一个不可靠的电路。   如果在编译器窗口下, 选择菜单命令Processing / Design Doctor Setting..., 然后在出现的设置对话框中点击Advanced Options钮, 再打开书中图5.71所示Design Doctor中的Delay Chain选项, 那么在编译时, 编译器就会对用来产生延时或异步脉冲的串联的LCELL或EXP提出警告信息。   (7) TRI   TRI是一个带有输入端、 输出端和高电平有效的输出使能信号端的三态缓冲器。 如果TRI的输出使能端与VCC或一个最终结果始终为真的逻辑功能块相连, 那么TRI在逻辑综合过程中可能被转化为SOFT。   一个TRI只能驱动一个BIDIR或BIDIRC引脚。 如果在TRI输出有反馈, 就一定要用一个BIDIR或BIDIRC引脚。如果一个TRI输出到一个逻辑块, 它也一定要输出至一个BIDIR或BIDIRC引脚。 但是,如果已输出到BIDIR或BIDIRC引脚, 则可以不输出至其它输出端上。 在输出使能信号没有接到VCC上时, TRI的输出一定要连到OUTPUT、 OUTPUTC、 BIDIR或BIDIRC引脚上, 因为内部信号不可以为三态。   (8) OPNDRN   OPNDRN与TRI相似, 具有一个输入端口和一个输出端口。 当OPNDRN由一个称为“in”的信号输入时, 等价于TRI的输入端接地(GND), 而输出使能端接“in”的反相。   如果OPNDRN的输入为低电平(Low), 则输出为低电平(Low); 如果输入为高电平(High), 则输出是高阻态。 OPNDRN由特定的器件系列支持(如FLEX 10K、 MAX7000S等), 在其它系列器件中, 它将被转换为TRI。如果选择菜单命令Assign/ Global Project Logic Synthesis...,并在出现的对话框中打开了Automatic Open Drain Pins项, 那么在编译时, 编译器会自动将下面的两种结构转换为OPNDRN。    结构一: TRI的输出使能端接任意信号, 但输入端接地(GND);   结构二: TRI的输出使能端所接的信号是其输入信号的反相。   一个OPNDRN只能驱动一个BIDIR或BIDIRC引脚。 如果在OPNDRN后面有反馈回路, 那么必须用BIDIR或BIDIRC引脚。如果一个OPNDRN有逻辑输入, 则它也必须输出到BIDIR或BIDIRC引脚。 如果OPNDRN输出到一个BIDIR或BIDIRC引脚, 它不能再驱动任何其它输出。   (9) WIRE   WIRE用来对结点或总线重命名 , 它不实现任何逻辑功能。 WIRE具有方向性。 例如, 可以利用一个WIRE对一个双向的总线的输入或输出部分重新命名。
相关资源