flyhouse112的个人空间 https://blog.eetop.cn/1166404 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

随机数的函数:$random学习[转]

已有 998 次阅读| 2013-8-27 11:44

系统函数提供了一个产生随机数的函数:$random
reg [23:0]rand;
rand = $random % 60;
上面的例子给出了一个范围在-59~59之间的随机数,下面的例子通过位并接操作产生一个值在0~59之间的数。
reg [23:0]rand;
rand = {$random} % 60;
利用这个系统函数可以产生随机脉冲序列或宽度随机的脉冲序列,以用于电路的测试。
'timescal 1ns/1ns
module random_pulse( dout );
output [9;0] dout;
reg [9:0] dout;
integer delay1, delay2, k;
initial begin
#10 dout = 0;
for (k=0; k<100; k=k+1) begin
delay1 = 20 * ({$random} % 6); //delay1在0~100ns间变化
delay2 = 20 * (1 + {$random} % 3); //delay2在20~60ns间变化
#delay1 dout = 1 << ({$random} % 10);
//dout的0~9位中随机出现1,并且出现的时间在0~100ns间变化
#delay2 dout = 0;
//脉冲的宽度在20~60ns间变化
end
end
endmodule
 
宏定义不是Verilog HDL语句,不必在行末加分号。如果加了分号会连分号一起进行置换。 
如果文件1包含文件2,而文件2要用到文件3的内容,则可以在文件1中用两个`include命令分别包含文件2和文件3,而且文件3应出现在文件2之前。
 
`ifdef语句中不允许使用布尔表达式,例如使用 TEST && ADD_B2来表示编译条件是不允许的。
 
$monitor与$display的不同之处在于$monitor是连续监视数据的变化,因而往往只要在测试模块的initial块中调用一次就可以监视被测试模块的所有感兴趣的信号,不需要、也不能再always过程块中调用$monitor。

转至http://home.eeworld.com.cn/my/space-uid-398262-blogid-77497.html
 
 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 1470

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 12:47 , Processed in 0.024831 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部