首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将无符号int转换为System-verilog中的时间

将无符号int转换为System-verilog中的时间
EN

Stack Overflow用户
提问于 2014-07-21 19:18:01
回答 2查看 7.7K关注 0票数 1

我的大部分系统-Verilog代码使用参数来定义不同的等待时间,例如:

代码语言:javascript
复制
int unsigned    HALF_SPI_CLOCK = ((SYSTEM_CLK_PERIOD/2)*DIVISION_FACTOR); //DEFINES THE TIME

现在,因为我在我的文件中定义了一个时间尺度,所以我可以直接使用这些参数来引入等待周期:

代码语言:javascript
复制
`timescale 1ns/1ns
initial begin
    #HALF_SPI_CLOCK; 
end

现在,我希望所有地方都有指定时间的延迟。这意味着即使我更改了时间刻度,模拟仍然会遵守所有的计时。我想保留参数,但是无论我在哪里有一个wait语句,我都需要指定时间。就像这样

代码语言:javascript
复制
#(HALF_SPI_CLOCK) ns; 

但Modelsim不接受这一点。在System-Verilog中,有没有办法将参数或无符号整型转换为类型为time的变量?有没有办法指定时间单位?我环顾四周,但找不到任何解决方法。我想要控制时间并使其独立于timescale is because I intend to change the时间刻度的原因是为了使我的模拟速度更快。其他建议或想法非常受欢迎*

EN

回答 2

Stack Overflow用户

发布于 2014-07-21 20:29:04

在SystemVerilog中可以将时间作为参数传递,如下所示:

代码语言:javascript
复制
module my_module #(time MY_TIME = 100ns);

  initial begin
    #MY_TIME;
    $display("[%t] End waiting", $time);
  end

endmodule

或者使用乘法来获得正确的时间单位,例如:

代码语言:javascript
复制
module my_module2 #(longint MY_TIME = 100);

  initial begin
    # (MY_TIME * 1us);
    $display("[%t] End waiting 2", $time);
  end

endmodule

请参阅EDA Playground上的runnable示例:http://www.edaplayground.com/x/m2

票数 4
EN

Stack Overflow用户

发布于 2014-07-21 20:27:15

这将模拟并执行您想要的操作。虽然不是最优雅的,但它是有效的。

代码语言:javascript
复制
task wait_ns(int num);
  repeat (num) #1ns;
endtask 

...

wait_ns(HALF_SPI_CLOCK);

这可能会对模拟速度产生负面影响,具体取决于时间刻度、时钟事件和延迟单位之间的关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24863774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档