微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教一个入门级问题,随机激励的产生

请教一个入门级问题,随机激励的产生

时间:10-02 整理:3721RD 点击:

TB的目标大概是这样的,例如,在1000(random的)个clk内,随机插入356(同样是random的)个data_valid的信号,其余为无效信号,从而验证module在不同的输入波特率下的数据处理情况。请问可不可以用Verilog做这样的测试,或者用perl脚本?可以的话如何做?NC-Verilog对SV的支持也不太好,所以不希望用SV。

有几个思路:
1.用$random系统函数产生一些random的值
2.用不同周期以及不同占空比的clock波形 组合 产生一些类似random的信号

      随机化必然要用到random函数……      有以下两个问题:1、$random数据范围如何定?数据又如何分散在有限的clock数内?valid何时为高合适为低?高低各持续多长时间?
2、不同的Clk周期如何设置?不同的占空比有如何设置?其实本质还是第一个问题!



    请问你以前从事的是什么具体工作?


“$random函数调用时返回一个32位的随机数,它是一个带符号的整形数...”,并给出了一个例子:
_____________________________________________________
EX-1:
   reg[23:0] rand;
   rand=$random % 60; //产生一个在 -59—59范围的随机数
—————————————————————————
又给出了一个产生0~59之间的随机数的例子:
   reg[23:0] rand;
   rand={$random} % 60; //通过位拼接操作{}产生0—59范围的随机数
—————————————————————————

产生一个在min, max之间随机数的例子:
EX-3:
  reg[23:0] rand;
  rand = min+{$random}%(max-min+1);

以上是我刚刚搜索的$random内容,具体怎么用总得自己解决了吧,不能总是让别人想。
具体怎么用并不难的,如果连这个都想不出来怎么解决,那我建议你还是不要吃工程师这碗饭了。
2.用不同周期以及不同占空比的clock波形 组合
就是用不同的周期和占空比制造几个clock,然后用这些clock比如都在上升沿的时候怎么样,都在下降沿的时候怎么样,自己定义就行了,因为周期和占空比不一样,所以出现某些条件的情况也是相对随机的。

   random函数的用法教科书上就有,上过课用过random写过TB的都知道,谢谢,这方面的问题不想在这跟你说太多;   另外,方法我已经有几个思路,但是实验效果不是很好,问题就在于我之前说的;   如果你有可行的方法,我真心请教;如果你不知道你这个方法是否可行,是否可控,请忽略我前面的所有话;


在论坛上,一般别人能给你的也就是一个思路,具体怎么去实现,每个项目都不一样,不可能要求别人去仔细读你的项目需求,然后根据你的需求告诉你一步一步怎么做。
从你之前写的需求看,只要知道了$random怎么用就行了。具体的怎么产生波形,波形宽度怎么样,这些都是可以用random界定出来的。
可能我不太清楚你这个项目的具体情况,可能有其他的一些原因,所以导致你觉得问题仍然不能通过这种方式解决。
如果是这样,我向你道歉。
但是如果不是这个原因,你只是想要别人告诉你完整的方案,那么我觉得你是错了。

用C语言产生356个随机且不重复的值,写在一个问题里,用verilog读。



    这个 有点难度啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top