精华内容
下载资源
问答
  • xilinx原语

    2016-07-31 13:52:25
    xilinx原语的一些资料
  • Xilinx原语

    千次阅读 2020-03-05 23:27:45
    原语,即primitive。不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;...Xilinx公司的原语分为10类,包括:计算组件,IO端口组件,寄存器/锁存器,时钟组件,处理器组件,移位寄存器,配置和检...
    	原语,即primitive。不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;原语类似最底层的描述方法。使用原语的好处,可以直接例化使用,不用定制IP;即可通过复制原语的语句,然后例化IP,就可使用;Xilinx是通过直接修改原语中的参数再例化IP来使用;Xilinx公司的原语分为10类,包括:计算组件,IO端口组件,寄存器/锁存器,时钟组件,处理器组件,移位寄存器,配置和检测组件,RAM/ROM组件,Slice/CLB组件,G-tranceiver。下图所示为UG799中对原语的分类列表。
    

    在这里插入图片描述
    项目中实际用到了串并转换,时钟BUFF,因此选择部分重点讲解,具体可以参考UG799和对于手册,如IO可以参考UG471。

    1.串并转换 OSERDESE2

    	OSERDES 7系列设备专用于并行串行转换器,具有特定的时钟和逻辑资源,旨在促进高速资源同步接口的实现。每个OSERDES模块都包含用于数据和三态控制的专用序列化器。可以采用单数据率(SDR)和双数据率(DDR)模式进行配置。数据串行化可以达到8:1(如果使用OSERDESWidthExpansion,则可以达到10:1或14:1)。3-state序列器可以达到4:1。
    	具体实现10bit转串行数据:
    

    在这里插入图片描述
    在Language Templates ----->Verilog里面可以搜索对应原语;
    在这里插入图片描述

    //  OSERDESE2  : In order to incorporate this function into the design,
    //   Verilog   : the following instance declaration needs to be placed
    //  instance   : in the body of the design code.  The instance name
    // declaration : (OSERDESE2_inst) and/or the port declarations within the
    //    code     : parenthesis may be changed to properly reference and
    //             : connect this function to the design.  All inputs
    //             : and outputs must be connected.
    
    //  <-----Cut code below this line---->
    
       // OSERDESE2: Output SERial/DESerializer with bitslip
       //            Artix-7
       // Xilinx HDL Language Template, version 2017.4
    
       wire  [1:0]   shift_data;
    
       OSERDESE2 #(
          .DATA_RATE_OQ("DDR"),   // DDR, SDR    The DATA_RATE_OQ attribute defnes whetherdataisprocessedassingle datarate(SDR)ordoubledatarate (DDR).其中SDR是只上升沿采样或下降沿采样,DDR只上升沿和下降沿同时采样;
          .DATA_RATE_TQ("DDR"),   // DDR, BUF, SDR------------同理控制三态的
          .DATA_WIDTH  (4    ),         // Parallel data width (2-8,10,14)
          .INIT_OQ(1'b0),         // Initial value of OQ output (1'b0,1'b1),给0 给1其实都可以
          .INIT_TQ(1'b0),         // Initial value of TQ output (1'b0,1'b1)
          .SERDES_MODE("MASTER"), // MASTER, SLAVE
          .SRVAL_OQ(1'b0),        // OQ output value when SR is used (1'b0,1'b1)  ---SR:复位
          .SRVAL_TQ(1'b0),        // TQ output value when SR is used (1'b0,1'b1)
          .TBYTE_CTL("FALSE"),    // Enable tristate byte operation (FALSE, TRUE)
          .TBYTE_SRC("FALSE"),    // Tristate byte source (FALSE, TRUE)
          .TRISTATE_WIDTH(1)      // 3-state converter width (1,4),该数据必须查手册,不同位宽和采样模式对应数据不一样
       )
       OSERDESE2_inst1 (
          .OFB(      ),             // 1-bit output: Feedback path for data,返回的数据,不使用时可以留空
          .OQ(OQ),               // 1-bit output: Data path output,输出的串行数据
          // SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each),输出类型未使用时可以空着
          .SHIFTOUT1(        ),
          .SHIFTOUT2(        ),
          .TBYTEOUT(         ),   // 1-bit output: Byte group tristate,三态的可空着
          .TFB(TFB),             // 1-bit output: 3-state control
          .TQ(TQ),               // 1-bit output: 3-state control
          .CLK(sys_clk_5x),             // 1-bit input: High speed clock
          .CLKDIV(sys_clk_1x),       // 1-bit input: Divided clock
          // D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
          .D1(Data_in[0]),
          .D2(Data_in[1]),
          .D3(Data_in[2]),
          .D4(Data_in[3]),
          .D5(Data_in[4]),
          .D6(Data_in[5]),
          .D7(Data_in[6]),
          .D8(Data_in[7]),
          .OCE(1'b1),             // 1-bit input: Output data clock enable,输出时钟使能,始终让他为1即可
          .RST(sys_rst),             // 1-bit input: Reset
          // SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
          .SHIFTIN1(shift_data[0]),
          .SHIFTIN2(shift_data[1]),
          // T1 - T4: 1-bit (each) input: Parallel 3-state inputs,三态输入端,没有用到统一填0
          .T1(0),
          .T2(0),
          .T3(0),
          .T4(0),
          .TBYTEIN(0),     // 1-bit input: Byte group tristate
          .TCE(0)              // 1-bit input: 3-state clock enable
       );
    
       // End of OSERDESE2_inst instantiation				
    

    下图描述TRISTATE_WIDTH的选取:
    在这里插入图片描述
    与10bit并转串代码段中还应添加OSERDESE2_inst2,与此类似稍作修改即可,不再赘述。

    2. 单端信号转差分信号:OBUFDS

      如果直接用下面的逻辑生成则会出现p端逻辑和n端逻辑差一个反相器,路径延时不一致,指示差分结果出错;
    
    assign diff_data_p = data_ser;
    assign diff_data_n = ~data_ser;
    

    同样可以使用原语:OBUFDS

       OBUFDS #(
          .IOSTANDARD("DEFAULT"), // Specify the output I/O standard
          .SLEW("SLOW")           // Specify the output slew rate
       ) OBUFDS_inst (
          .O(O),     // Diff_p output (connect directly to top-level port)
          .OB(OB),   // Diff_n output (connect directly to top-level port)
          .I(I)      // Buffer input 
       );
    

    3. IBUFG和IBUFGDS(IO)

       IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多种格式的IO标准。
       IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。
    

    举例说明:差分时钟芯片输入的100MHz时钟,作为FPGA的全局时钟。

    IBUFGDS #(
                .DIFF_TERM    ("TRUE" ),
                .IBUF_LOW_PWR ("FALSE")
            ) u_ibufg_clk_100 (
                .I  (FP_CLK_100M_P),
                .IB (FP_CLK_100M_N),
                .O  (clk_100m     )
            );
    
    展开全文
  • Xilinx原语详解

    2019-05-07 23:06:17
    该资料讲解了最全的Xilinx原语,包括Spartan6和7系列的,包括实例化代码和详细的解释。
  • 关于Xilinx原语的使用办法,包括 BUFG、BUFR、BUFIO等一些xilinx的 原语
  • Xilinx原语使用方法

    2019-12-02 15:50:56
    以下链接为百度文库链接:没事的时候可以点击看看,学习学习 xilinx原语的使用方法 Xilinx原语的使用方法2

    以下链接为百度文库链接:没事的时候可以点击看看,学习学习

    xilinx原语的使用方法

    Xilinx原语的使用方法2

    展开全文
  • XILINX 原语使用

    千次阅读 2018-08-31 20:23:58
    XILINX 原语使用 原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的ip,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D...

    XILINX 原语使用

    原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的ip,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等。在实现过程中的翻译步骤时,要将所有的设计单元都转译为目标器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使用,是最直接的代码输入方式,其和HDL语言的关系,类似于汇编语言和C语言的关系。

    Xilinx公司提供的原语,涵盖了FPGA开发的常用领域,但只有相应配置的硬件才能执行相应的原语,并不是所有的原语都可以在任何一款芯片上运行。在Verilog中使用原语非常简单,将其作为模块名直接例化即可。
    Xilinx公司的原语按照功能分为10类,包括:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G比特收发器组件。下面分别对其进行详细介绍。

    • IOBUF
      双向单端I/O缓冲区,用于将内部逻辑连接到外部双向pin。
      这里写图片描述
      这里写图片描述
      这里写图片描述
      “`ruby
      // IOBUF: Single-ended Bi-directional Buffer // All devices // Xilinx HDL Libraries Guide, version 2012.2
      IOBUF #(
      .DRIVE(12), // Specify the output drive strength
      .IBUF_LOW_PWR(“TRUE”), // Low Power - “TRUE”, High Perforrmance = “FALSE”
      .IOSTANDARD(“DEFAULT”), // Specify the I/O standard
      .SLEW(“SLOW”) // Specify the output slew rate
      )
      IOBUF_inst (
      .O(O), // Buffer output
      .IO(IO), // Buffer inout port (connect directly to top-level port)
      .I(I), // Buffer input
      .T(T) // 3-state enable input, high=input, low=output
      );
      // End of IOBUF_inst instantiation
    展开全文
  • Xilinx FPGA原语的使用方法pdf\Xilinx原语的使用方法2.pdf
  • Xilinx FPGA原语的使用方法pdf\Xilinx原语的使用方法1.pdf
  • xilinx原语使用文献

    千次阅读 2018-03-22 17:53:20
    xilinx原语使用文献0赞发表于 2012/11/24 10:20:00 阅读(5105) 评论(2)原语,即primitive.不同的厂商,原语不同;同一家的FPGA,不同型号的芯片,可以也不一样;原语类似最底层的描述方法. 使用原语的好处,可以直接...

    xilinx原语使用文献

    0
     阅读(5105) 评论(2)

    原语,即primitive.

    不同的厂商,原语不同;

    同一家的FPGA,不同型号的芯片,可以也不一样;

    原语类似最底层的描述方法.

     

    使用原语的好处,

    可以直接例化使用,不用定制IP;

    即可通过复制原语的语句,然后例化IP,就可使用;

    题外话, Altera和Xilinx在例化IP使用时,所用方法不同.

    Altera是通过原语例化后,在通过defparam来重新定义参数,再使用;

    Xilinx是通过直接修改原语中的参数再例化IP来使用;

     

    最近用到xilinx的芯片,

    看到它原语的介绍,摘录如下.以后用在Altera的再补充.

     

    X公司的原语分为10类,包括:计算组件,IO端口组件,寄存器/锁存器,时钟组件,

    处理器组件,移位寄存器,配置和检测组件,RAM/ROM组件,Slice/CLB组件,G-tranceiver.

     

    以最常用的时钟组件举例.


    其中,以上的DCM_,在某些器件里都可以换成PLL_.

     

     

    BUFG

           具有高扇出的全局时钟缓冲器.通过它可接入到全局时钟网络中.

    也常接复位,时钟使能信号等.

           Eg.        BUFG bufg_inst( .O(clk_o), .I( clk_i));

     

    BUFMUX

           全局时钟利用器,选择两个输入时钟I0或I1中的一个作为输出;S为选择信号,

    S=0时,输出I0, S=1时,输出I1;

           Eg.  BUFGMUX bufgmux_inst(.O(clk_o),

                                                            .I0(clk1_i),

                                                            .I1(clk2_i),

                                                            .S(s)

                                                       );

    BUFIO

           本地IO时钟缓冲器.使用独立于全局时钟网络的专用时钟网络来驱动纵向IO管脚.

    非常适合同步数据采集;BUFIO要求时钟和相应的IO必须在同一时钟区域,而不同的时钟网络的驱动需要BUFR原语来实现.由于BUFIO引出的时钟只到达了IO列,所以不能来驱动逻辑资源,比如CLB和BRAM.

           Eg.  BUFIO bufio_inst( .O(clk_o), .I(clk_i0));

    BUFR

           本地IO时钟逻辑缓冲器.与BUFIO一样是将驱动时钟引入某一时钟区域的专用时钟网络,而独立于全局时钟网络;不同的是,BUFR不仅可以跨越不同的时钟区域(最多3个),还能够驱动IO逻辑以及自身或邻近时钟区域的逻辑资源.BUFIO的输出和本地内部互联都能驱动BUFR组件.此外,BUFR能完成输入时钟1—8的整数分频.因些BUFR是同步设计中实现跨时钟域以及串并转换的最佳方案.

           Eg.  BUFR #(

                                .BUFR_DIVEDE(“BYPASS”),//分频比,可选择BYPASS,1—8

                                .SIM_DEVICE(“VIRTEX4”)

                           )BUFR_inst(

                                              .O(clk_o),

                                              .CE(CE),

                                              .CLR(clr),

                                              .I(clk_i)

                                              );

    DCM_BASE

           基本数字时钟管理模块的缩写,是相伴和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理.如需要频率和相位动态生配置,则可以选用DCM_ADV原语,如果需要相位动态偏移,可使用DCM_PS原语.

           Eg.  DCM_BASE#(….)

    DCM_BASE #(

    .CLKDV_DIVIDE(2.0),

    // CLKDV 分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5

    // 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0

    .CLKFX_DIVIDE(1), // Can be any integer from 1 to 32

    // CLKFX 信号的分频比,可为1 到32 之间的任意整数

    .CLKFX_MULTIPLY(4),

    // CLKFX 信号的倍频比,可为2 到32 之间的任意整数

    .CLKIN_DIVIDE_BY_2("FALSE"),

    // 输入信号2 分频的使能信号,可设置为TRUE/FALSE

    .CLKIN_PERIOD(10.0),

    // 指定输入时钟的周期,单位为ns,数值范围为1.25~1000.00。

    .CLKOUT_PHASE_SHIFT("NONE"),

    // 指定移相模式,可设置为NONE 或FIXED

    .CLK_FEEDBACK("1X"),

    // 指定反馈时钟的频率,可设置为NONE、1X 或2X。相应的频率关系都是

    针对CLK0 而言的。

    .DCM_PERFORMANCE_MODE("MAX_SPEED"),

    // DCM 模块性能模式,可设置为MAX_SPEED 或MAX_RANGE

    .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),

    // 抖动调整,可设置为源同步、系统同步或0~15 之间的任意整数

    .DFS_FREQUENCY_MODE("LOW"),

    // 数字频率合成模式,可设置为LOW 或HIGH 两种频率模式

    .DLL_FREQUENCY_MODE("LOW"),

    // DLL 的频率模式,可设置为LOW、HIGH 或HIGH_SER

    .DUTY_CYCLE_CORRECTION("TRUE"),

    // 设置是否采用双周期校正,可设为TRUE 或FALSE

    .FACTORY_JF(16'hf0f0),

    // 16 比特的JF 因子参数

    .PHASE_SHIFT(0),

    // 固定相移的数值,可设置为-255 ~ 1023 之间的任意整数

    .STARTUP_WAIT("FALSE")

    // 等DCM 锁相后再延迟配置DONE 管脚,可设置为TRUE/FALSE

    ) DCM_BASE_inst (

    .CLK0(CLK0), // 0 度移相的DCM 时钟输出

    .CLK180(CLK180), // 180 度移相的DCM 时钟输出

    .CLK270(CLK270), // 270 度移相的DCM 时钟输出

    .CLK2X(CLK2X), // DCM 模块的2 倍频输出

    .CLK2X180(CLK2X180), // 经过180 度相移的DCM 模块2 倍频输出

    .CLK90(CLK90), // 90 度移相的DCM 时钟输出

    .CLKDV(CLKDV), // DCM 模块的分频输出,分频比为CLKDV_DIVIDE

    .CLKFX(CLKFX), // DCM 合成时钟输出,分频比为(M/D)

    .CLKFX180(CLKFX180), // 180 度移相的DCM 合成时钟输出

    .LOCKED(LOCKED), // DCM 锁相状态输出信号

    .CLKFB(CLKFB), // DCM 模块的反馈时钟信号

    .CLKIN(CLKIN), // DCM 模块的时钟输入信号

    .RST(RST) // DCM 模块的异步复位信号

    );

    PLL_BASE

           Xilinx的低端的FPGA中都用DCM,高级一点的都用PLL.

    这个再多说一句,使用PLL时,输出时钟

    Clk_out = Clkin*Mult / DIVCLK_DIVIDE /CLKOUTx_DIVIDE;

           Eg.

                         PLL_BASE #(

          .BANDWIDTH("OPTIMIZED"),  // "HIGH", "LOW" or "OPTIMIZED"

          .CLKFBOUT_MULT(2),        // Multiplication factor for all output clocks

          .CLKFBOUT_PHASE(0.0),     // Phase shift (degrees) of all output clocks

          .CLKIN_PERIOD(0.000),     // Clock period (ns) of input clock on CLKIN

          .CLKOUT0_DIVIDE(5),       // Division factor for CLKOUT0 (1 to 128)

          .CLKOUT0_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT0 (0.01 to 0.99)

          .CLKOUT0_PHASE(0.0),      // Phase shift (degrees) for CLKOUT0 (0.0 to 360.0)

          .CLKOUT1_DIVIDE(1),       // Division factor for CLKOUT1 (1 to 128)

          .CLKOUT1_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT1 (0.01 to 0.99)

          .CLKOUT1_PHASE(0.0),      // Phase shift (degrees) for CLKOUT1 (0.0 to 360.0)

          .CLKOUT2_DIVIDE(1),       // Division factor for CLKOUT2 (1 to 128)

          .CLKOUT2_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT2 (0.01 to 0.99)

          .CLKOUT2_PHASE(90),      // Phase shift (degrees) for CLKOUT2 (0.0 to 360.0)

          .CLKOUT3_DIVIDE(2),       // Division factor for CLKOUT3 (1 to 128)

          .CLKOUT3_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT3 (0.01 to 0.99)

          .CLKOUT3_PHASE(0.0),      // Phase shift (degrees) for CLKOUT3 (0.0 to 360.0)

          .CLKOUT4_DIVIDE(1),       // Division factor for CLKOUT4 (1 to 128)

          .CLKOUT4_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT4 (0.01 to 0.99)

          .CLKOUT4_PHASE(0.0),      // Phase shift (degrees) for CLKOUT4 (0.0 to 360.0)

          .CLKOUT5_DIVIDE(1),       // Division factor for CLKOUT5 (1 to 128)

          .CLKOUT5_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT5 (0.01 to 0.99)

          .CLKOUT5_PHASE(0.0),      // Phase shift (degrees) for CLKOUT5 (0.0 to 360.0)

          .COMPENSATION("SYSTEM_SYNCHRONOUS"), // "SYSTEM_SYNCHRONOUS",

                          //   "SOURCE_SYNCHRONOUS", "INTERNAL", "EXTERNAL",

                                    //   "DCM2PLL", "PLL2DCM"

          .DIVCLK_DIVIDE(1),        // Division factor for all clocks (1 to 52)

          .REF_JITTER(0.100)        // Input reference jitter (0.000 to 0.999 UI%)

       ) pll2 (

          .CLKFBOUT(CLKFBIN),          // General output feedback signal

          .CLKOUT0(clk_100M),       // 80M 0d

          .CLKOUT1(),                      // 10M 0d

          .CLKOUT2(),      //80M 90d

          .CLKOUT3(),                            // One of six general clock output signals

          .CLKOUT4(),                                   // One of six general clock output signals

          .CLKOUT5(),                                   // One of six general clock output signals

          .LOCKED(),                            // Active high PLL lock signal

          .CLKFBIN(CLKFBIN),             // Clock feedback input

          .CLKIN(clk),         // Clock input

          .RST(~rst_n)                // Asynchronous PLL reset

       );

     

     

     

    再举IO组件为例,

     

    I/O 组件提供了本地时钟缓存、标准单端I/O 缓存、差分I/O 信号缓存、DDR

    专用I/O 信号缓存、可变抽头延迟链、上拉、下拉以及单端信号和差分信号

    之间的相互转换,具体包括了21 个原语.


     

     

    BUFIO

           上文讲过

    IBUFDS

           用于将差分输入信号转为标准单端信号,且可加入可选延迟.

    输入信号为I,IB,一个为主,一个为从,二者相伴相反.真值表如下:


           其中-*, 表示维持原输出值.

           Eg.    IBUFDS refclk_ibuf (.O(sys_clk_c), .I(sys_clk_p), .IB(sys_clk_n)); //差分时钟进来

     

    IDELAY

           用户IO管脚的输入通路都有一个IDELAY模块,可用于数据信号或时钟信号,使二者同步,实现准确采集输入数据.IDELAY具有可控的64抽头延迟线,每个抽头的延迟都是经过精密校准的78ps(这个不同的芯片应该不同),且与进程,电压和温度特性无关.可弥补PCB的布线长度不一致带来的延时不同的问题.

           信号说明:

    I:单比特输入信号,来自于IOB 的串行输入数据;

    C:单比特输入信号,时钟输入信号;

    INC:单比特输入信号,用于增加或减少延迟抽头数;

    CE:单比特输入信号,使能延迟抽头数增加或减少的功能;

    RST:单比特输入信号,复位延迟链的延迟抽头数,如果没有编程输入则为0;

    O:单比特输出信号。

    Eg.  IDELAY#(

                         .IOBDELAY_TYPE(“DEFAULT”),

                         .IOBDELAY_VALUE(0)   //输入延迟周期,可设置0—63

                         ) IDELAY_inst(

                                              .O(data_o),

                                              .C(c),

                                              .CE(ce),

                                              .I(data_i),

                                              .INC(inc),

                                              .RST(rst)

                                              );

    OBUFDS

           将标准单端信号转换成差分信号,输出端口需要直接对应到顶层模块的输出信号.与IBUFDS为一对互逆操作.


     


     

    Eg.  OBUFDS #(

    .IOSTANDARD("DEFAULT")

    // 指名输出端口的电平标准

    ) OBUFDS_inst (

    .O(O), // 差分正端输出,直接连接到顶层模块端口

    .OB(OB), // 差分负端输出,直接连接到顶层模块端口

    .I(I) // 缓冲器输入

    );

     

    IOBUF

           单端双向缓冲器,其IO接口必须和指定的电平标准相对应,支持LVTTL,LVCOMS12, LVCMOS18, LVCMOS25以及33等信号标准.同时还可通过DRIVE, FAST以及SLOW等约束来满足不同驱动和抖动速率的需求.默认的驱动能力是12mA,低抖动. IOBUF由IBUF和OBUFT两个基本组件构成,当IO端口为高阻时,其输出口O为不定态.

     

     

           Eg.  // Xilinx HDL 库向导版本,ISE 9.1

    IOBUF #(

    .DRIVE(12),

    // 指定输出驱动的强度

    .IOSTANDARD("DEFAULT"),

    // 指定I/O 电平的标准,不同的芯片支持的接口电平可能会有所不同

    .SLEW("SLOW")

    // 制定输出抖动速率

    ) IOBUF_inst (

    .O(O), // 缓冲器的单元输出

    .IO(IO), // 缓冲器的双向输出

    .I(I), // 缓冲器的输人

    .T(T) // 3 态使能输入信号

    );

     

    PULLDOWN / PULLUP

           IO口内部上位或下位.上位是为了解决总线驱动能力不足时提供电流的,下拉电阻是用来吸引电流的.

           Eg.  PULLDOWN pulldown_inst( .O(data_o) );

                  PULLUP              pullup_inst( .O(data_o) );

     


    展开全文
  • modelsim2019.2 + vivado2018.2仿真xilinx原语, 及仿真中的相关问题记录
  • Xilinx 提供的原语涵盖了FPGA 开发常用领域,但只有相应配置的硬件才能执行相应的原语, 并不是所有的原语都能在任意一款芯片上运行。 本节以Virtex-4平台介绍各类原语原语按功能分类,主要分为: 计算组件...
  • Xilinx原语的用法

    2018-03-27 17:15:59
    原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,类似于C++中的“cout”等关键字,是芯片中的基本元件,代表FPGA中实际拥有的硬件...
  • 原语是FPGA厂商针对其器件特征开发的一系列常用模块的名称。原语是FPGA芯片中基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等。相当于软件中的机器语言。原语在设计中可以直接例化使用,是最直接的...
  • Xilinx原语的使用说明

    2018-01-24 16:05:29
    Xilinx 针对其器件特征开发的一系列常用模 块的名字,用户可以将其看成 Xilinx 公司为用户提供的库函数,类似于 C++ 中的“cout”等关键字,是芯片中的基本元件,代表 FPGA 中实际拥有的硬件逻 辑单元,如 LUT,D ...
  • xilinx 原语的使用方法

    2018-01-24 16:03:59
    文名字为 Primitive,是 Xilinx 针对其器件特征开发的一系列常用模 块的名字,用户可以将其看成 Xilinx 公司为用户提供的库函数,类似于 C++ 中的“cout”等关键字,是芯片中的基本元件,代表 FPGA 中实际拥有的硬件...
  • 最近做QDR II SRAM控制器,要用到xilinx原语IDDR,我的数据输入输出是18位的,又用到Generate将一位输入输出IDDR扩成18位,以前没用过generate,也不太熟悉,现在已熟悉其应用场合及其用法。
  • pdf带书签,查找方便,讲解清楚明了 ,有关bufg,bufiO,bufr,dsp48,DCM,时钟和IO的buf原语使用。
  • Xilinx原语归纳总结

    2021-01-07 13:23:47
    最近在写hdmi的驱动中,通过看源代码发现了几处需要用到原语的地方。故下载了手册进行了解。 参考手册为ug768《7 series_hdl》,为了便于查询,会总结一下日常中遇到的原语及相关用法。 其实可以直接查原手册,我起...
  • xilinx 原语 学习资料

    2020-05-11 20:29:08
    https://wenku.baidu.com/view/e3623a60caaedd3383c4d3e2.html?sxts=1553240480225 今天发现了一个更全面点的文档:Xilinx官方的 UG953 不过是英文的,可以用谷歌翻译把pdf文件传上去翻译下来,对照着看
  • Xilinx原语ODDR的使用

    千次阅读 2019-01-13 20:49:25
    ODDR is Xilinx HDL Language Template。 ODDR:Output Double Data Rate(DDR) 。 在介绍ODDR之前,我们先简单了解一下OLOGIC。 OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的...
  • 包含所有Ultrascale FPGA 可调用的原语,包括模块接口,功能说明。
  • Xilinx原语的使用方法

    2010-01-21 16:05:12
    Xilinx公司的原语按照功能分为10类,包括:计算组件、I/O端口组件、寄存器和锁存器、时钟组件、处理器组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G比特收发器组件。本文分别对其进行详细介绍...
  • 查看之前使用GMIItoRGMII的IP工程中的Schematic,发现rgmii_rclk输入后添加了三个原语模块:IBUF、BUFR以及BUFG。其中IBUF是在信号输入端处添加了,BUFR是紧跟着IBUF,然后其输出的信号被内部的D触发器所使用,其中...
  • 记录背景:最近由于想实现GMIItoRGMII的功能,因此需要调用ODDR原语。 ODDR:Dedicated Dual Data Rate (DDR) Output Register 通过ODDR把两路单端的数据合并到一路上输出,上下沿同时输出数据,上沿输出a路下沿...
  • DCM_BASE 基本数字时钟管理模块的...如需要频率和相位动态配置,则可以选用DCM_ADV原语,如需要相位动态偏移,可使用DCM_PS原语。Eg. DCM_BASE # ( .CLKDV_DIVIDE(2.0), //CLKDV分频比可以设置为1.5,2.5,3.0,3.5,...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 187
精华内容 74
关键字:

xilinx原语