返回介绍

15.11 缺省时钟控制

发布于 2020-09-09 22:55:52 字数 1292 浏览 936 评论 0 收藏 0

一个时钟控制可以被说明成缺省的,这样它可以作用于一个指定模块、接口、或程序内的所有周期延时操作。

缺省周期说明语句的语法如下:

module_or_generate_item_declaration ::=       // 引用自附录A.1.5
    ...
  | default clocking clocking_identifier;

clocking_declaration ::=         // 引用自附录A.6.11
    [default] clocking [clocking_identifier] clocking_event;
        {clocking_item}
    endclocking [: clocking_identifier]

语法 15-3 — 缺省时钟控制语法(摘录自附录A)

clocking_identifier必须是时钟控制块的名字。

在一个程序、模块或接口中只能指定一个缺省时钟控制。在相同的程序或模块中多次指定一个缺省时钟控制应该导致一个编译器错误。

一个缺省时钟控制仅在包含缺省时钟控制说明的范围内有效。这个范围包括包含了声明的模块、接口或程序以及任何嵌套的模块或接口。它不包括被实例化的模块或接口。

例子1:将一个时钟控制声明成缺省的。

program test(input bit clk, input reg [15:0] data);
    default clocking bus @(posedge clk);
        inout data;
    endclocking

    initial begin
        ## 5;
        if (bus.data == 10)
            ## 1;
        else
            ...
    end
endprogram

例子2:将一个现存的时钟控制指定成缺省的。

module processor ...
    clocking busA @(posedge clk1);
        ...
    endclocking

    clocking busB @(negedge clk2);
        ...
    endclocking

    module cpu (interface y);
        default clocking busA;

        initial begin
            ## 5; // 使用busA => (posedge clk1)
            ...
        end
    endmodule
endmodule

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文