首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数字电路设计之仿真小技巧

数字电路设计之仿真小技巧

1、在使用ISE仿真的时候,一般来说很多人只会串行输入数据的仿真,其实还可以进行并行的仿真:
举个例子:用 fork-join 并行块产生信号波形。这里的意思就是N*cycle之后赋予的信号。


  • `timescale 10ns/1ns  
  • module wave2;  
  • reg wave;  

  • parameter cycle=5;  

  • initial  
  • fork  
  •       wave=0;  
  •     #(cycle) wave=1;  
  •     #(2*cycle) wave=0;  
  •     #(3*cycle) wave=1;  
  •     #(4*cycle) wave=0;  
  •     #(5*cycle) wave=1;  
  •     #(6*cycle) $finish;  
  • join  

  • initial $monitor($time,,,"wave=%b",wave);  

  • endmodule  


2、一般对于信号递增的,我们采用的就是循环了。for循环:
举个栗子:
  • module no7_tb;  

  •     integer i = 0;  

  •     // Inputs
  •     reg [3:0] a;  
  •     reg [3:0] b;  
  •     reg [1:0] opcode;  

  •     // Outputs
  •     wire [3:0] out;  

  •     // Instantiate the Unit Under Test (UUT)
  •     no7 uut (  
  •         .a(a),   
  •         .b(b),   
  •         .opcode(opcode),   
  •         .out(out)  
  •     );  

  •     initial begin  
  •         // Initialize Inputs
  •         a = 4;  
  •         b = 3;  
  •         for(i=0;i<=3;i=i+1)  
  •         begin  
  •             opcode <= 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/1ns  
  • module wave1;  
  • reg wave;  
  • parameter cycle=10;  

  • initial  
  • begin  
  •   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  




以上这一段用循环就是一个不错的选择!
返回列表