我是靠谱客的博主 优秀仙人掌,最近开发中收集的这篇文章主要介绍Verilog 中需要使用原语的情况,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    一般来说,在进行HDL代码编写时,不需要直接或间接地进行原语调用,因为随着FPGA设计规模越来越庞大,人脑应该集中于抽象层次较高的工作中去,而将这些具体实现细节交给编译器来完成。不过有些时候,原语或者库中底层模板的调用还是十分必要的。

1.    时钟相关原语

    如果时钟信号不是由专门FPGA芯片的专用时钟管脚引入FPGA的,那么它通常就需要在FPGA内部被显式地连接到时钟树资源上,否则,知己恩使用这种不经过时钟树的时钟信号,会给FPGA设计的时序带来非常麻烦的问题,进而导致逻辑行为失败。

eg:

    wire    innerclk,    gclk;

    BUFG    onToGlobalClockTree

    (

        .I        (innerclk        ),

        .O       (gclk            )

    );

    always @ (posedge gclk)

    begin

        ... 

    end 

    通过显式调用BUFG这样一个库中的底层模块,告诉编译器,我们希望将innerclk信号引入全局时钟树,而其经过全局时钟树后的名字就改为gclk。后续HDL代码便可以放心地基于gclk编写逻辑。

 

在altera芯片中,时钟上到全局时钟树上使用:

clk_global_buf  inst_clk_global_buf

(

  .inclk             (clk_in),

  .outclk          (clk_out)

);

 

2.    差分输入、输出原语

eg:

    IBUFGDS    clklvds

    (

        .I            (LVDSCLK_p        ),

        .IB          (LVDSCLK_n        ),

        .O           (sclk                    )

    );

    BUFG    onToGlobalClockTree

    (

        .I        (sclk            ),

        .O       (gclk           )

    );

示例中,将差分时钟转换成单端时钟sclk,并通过GUFG原语将其引至全局时钟网络。

 

3.    接口相关原语

    当需要使用接口资源中的寄存器来实现高速数据采集时。

 

4.    UDP

    用户自定义原语(User Defined Primitive)

 

最后

以上就是优秀仙人掌为你收集整理的Verilog 中需要使用原语的情况的全部内容,希望文章能够帮你解决Verilog 中需要使用原语的情况所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部