数字电路设计之仿真小技巧
来源:互联网 发布:2016上半年网络大电影 编辑:程序博客网 时间:2024/05/21 12:18
1、在使用ISE仿真的时候,一般来说很多人只会串行输入数据的仿真,其实还可以进行并行的仿真:
举个例子:用 fork-join 并行块产生信号波形。这里的意思就是N*cycle之后赋予的信号。
`timescale 10ns/1nsmodule wave2;reg wave;parameter cycle=5;initialfork wave=0; #(cycle) wave=1; #(2*cycle) wave=0; #(3*cycle) wave=1; #(4*cycle) wave=0; #(5*cycle) wave=1; #(6*cycle) $finish;joininitial $monitor($time,,,"wave=%b",wave);endmodule
2、一般对于信号递增的,我们采用的就是循环了。for循环:
举个栗子:
module no7_tb;integer i = 0;// Inputsreg [3:0] a;reg [3:0] b;reg [1:0] opcode;// Outputswire [3:0] out;// Instantiate the Unit Under Test (UUT)no7 uut (.a(a), .b(b), .opcode(opcode), .out(out));initial begin// Initialize Inputsa = 4;b = 3;for(i=0;i<=3;i=i+1)beginopcode <= i;#10;end$finish;end endmodule
3、对于有时钟的仿真,一定不要忘记了。
parameter delay = 100;
always #(delay) CLK = ~CLK;//写成clk <=!clk;也是可以的。
4、一般在initial里面结束的时候加一个$finish,这样的话,就可以是使得仿真看起来更舒服。
5、出了看波形,采用monitor可以直接看信号的值。monitor就是你自己监视的信号发生变法的话就进行显示。有点像chipscope,只是chipscope用于板级仿真的时候。
6、其实还有后仿真,后仿真一般是modelsim和ISE联合仿真,具体怎么做,百度一下就有很多资料。
7、initial其实可以有很多个,对一些值赋初值不一定放到一个initial里。
8、串行仿真的例子:
`timescale 10ns/1nsmodule wave1;reg wave;parameter cycle=10;initialbegin wave=0; #(cycle/2) wave=1; #(cycle/2) wave=0; #(cycle/2) wave=1; #(cycle/2) wave=0; #(cycle/2) wave=1; #(cycle/2) $finish ;end initial $monitor($time,,,"wave=%b", wave);endmodule
以上这一段用循环就是一个不错的选择!
0 0
- 数字电路设计之仿真小技巧
- 数字电路设计之仿真时碰到的小问题
- 数字电路设计之Spice仿真
- 数字电路设计之verilog的小技巧集锦
- 数字电路设计之m0仿真结果
- 数字电路设计之数字电路工程师面试集锦
- 数字电路设计之移位器设计2
- 数字电路设计之时钟控制器实例
- 数字电路设计之同步时钟采样模块
- 数字电路设计之堆栈的verilog实现
- 数字电路设计之RTL编码指导原则
- 数字电路设计之Leon系列处理器结构
- 数字电路设计之逻辑综合的优化
- 数字电路设计之verilog 原语
- 数字电路设计之function的使用
- 数字电路设计之Wallace树形乘法器
- 数字电路设计之OpenRISC(一)
- 数字电路设计之加法器的实现
- Dos图像复制成序列
- 在北京工作了两年,现在跳槽到了广州,社保公积金该如何办理?
- CRC校验字节型算法查表法解读
- Android的strings.xml文件加入多空格
- 猜数字
- 数字电路设计之仿真小技巧
- hive 全排序 优化
- 第十二周上机项目三汉诺塔
- 原型模式
- HDU 5096 ACM Rank(树状数组)
- iOS-应用之间调用
- OS前沿论文 ; http://pdos.csail.mit.edu/
- Unity3d游戏开发之地形设置
- Android开发之自定义UI组件和属性