原创 学写TestBench

2012-11-13 23:27 1374 24 24 分类: FPGA/CPLD 文集: FPGA

  郁闷,这已经是第三次写这篇博客,因为前面两次因没保存丢了,你说郁闷不??

  说说今天,早上骑着“宝马”上班,早餐没有像往常一样吃包子、喝豆浆,而是吃了个什么粉,怎一个香子了得。上班早上就是无聊的测灵敏度,下午画了画C8051F340的原理图(为做LED显示屏),晚上来准备做自己喜欢吃的“干饭”,就边做边听歌,结果呢,一首“今天”太好听,就忘了自己是谁,“干饭”成了“灰碳饭”!!可只好吃,不吃怎么搞TestBench…

输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理。方法见下:

inout [0:0] bi_dir_port;

wire [0:0] bi_dir_port;

reg [0:0] bi_dir_port_reg;

reg bi_dir_port_oe;

assign bi_dir_port=bi_dir_port_oe?bi_dir_port_reg:1'bz;

先来个简单的例子:

`timescale 1ns/1ns
module shift_reg(CLK,RSTn,Load,Sel,Data,Shift_Out);
input CLK,RSTn;
input Load;
input [1:0] Sel;
input [7:0] Data;
output [7:0] Shift_Out;
reg [7:0] rShift_Out;

always @ (posedge CLK or negedge RSTn)
begin
  if(!RSTn) rShift_Out <= 7'b0;
  else if(Load) rShift_Out <= Data;
  else
    case (Sel)
      2'b00: rShift_Out <= rShift_Out;
      2'b01: rShift_Out <= rShift_Out << 1;
      2'b10: rShift_Out <= rShift_Out >> 1;
      default: rShift_Out <= rShift_Out;
    endcase
end
assign Shift_Out = rShift_Out;
endmodule

测试激励.v

`timescale 1ns/1ns
module shift_reg_tp;
reg CLK;
reg RSTn;
reg Load;
reg [1:0] Sel;
reg [7:0] Data;
wire [7:0] Shift_Out;
  shift_reg LUT(
                .CLK(CLK),
                .RSTn(RSTn),
                .Load(Load),
                .Sel(Sel),
                .Data(Data),
                .Shift_Out(Shift_Out)
                );
initial begin
  CLK = 0;
  forever #50 CLK = ~CLK;
end
initial begin
  RSTn = 1;
  Sel = 2'b00;
  Load = 0;
  Data = 8'b0;
  #200 RSTn = 0;
  #200 RSTn = 1;
  #100 Load = 1;
  #100 Data = 8'b0000_0001;
  #100 Load = 0;
  #200 Sel = 2'b00;
  #200 Sel = 2'b01;
  #200 Sel = 2'b10;
  #200 Sel = 2'b11;
  #400 $stop;
end
initial begin
  $timeformat(-9,1,"ns",12);
  $display(" Time Clk Rst Ld SftRg Data Sel");
  $monitor("%t %b %b %b %b %b %b", $realtime,
  CLK, RSTn, Load, Shift_Out, Data, Sel);
end

endmodule

关于ModelSim 仿真小结:

1、当然见工程,来两个.v文件,肯定是要编译通过的,若通不过,希望自己静下心来,逐字逐行慢慢分析吧。

2、Simulate -> Start Simulation 则会出现一个对话框,选择测试激励。选择Object 中的任意一个,右击选择Add View 也就添加波形。在之后就是开始仿真,最后看美丽的波形吧!!

不仔细,不静下来,没有红色字体行,是永远也仿真不成功的。好了,赶紧保存,否则有麻烦了!!

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
24
关闭 站长推荐上一条 /2 下一条