首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

xilinx原语使用文献(1)(转)

xilinx原语使用文献(1)(转)

原语,即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 模块的异步复位信号
        );
继承事业,薪火相传
返回列表