其他分享
首页 > 其他分享> > vivado simulation仿真(38译码器实现)

vivado simulation仿真(38译码器实现)

作者:互联网

第一步 新建工程

新建工程选择开发板,进入vivado界面,这里就不多说了。

第二步 添加design souce

这一步就是写我们要测试的Verilog模块,因为只是仿真,所以我们不需要综合和实现,也因此我个人认为,在design souce里面的文件就不需要按照顶层到底层的方式写,而是将需要测试的模块都放在里面。

这里我添加了两个文件,分别是两种方式实现的38译码器:
在这里插入图片描述
其中各个文件的代码如下:

//decoder_3_8.v

`timescale 1ns / 1ps
module decoder_3_8(add,decode);
input[3-1:0] add;
output[7:0] decode;
assign decode = 8'h1 << add;
endmodule
//decoder_3_8_2.v

`timescale 1ns / 1ps
module decoder_3_8_2(
	input wire[2:0] a,
	output reg[7:0] y
);
integer i;
always @(a) 
begin
    for (i=0;i<8;i=i+1) 
    begin
        if (a==i)
            y[i]<=1;
        else y[i]<=0;
    end
end
endmodule

还可以看另一种写法如下,不过我没有添加到工程里面:

module q_decode_38(data_in,data_out);
      
        input[2:0] data_in;           //端口声明
        output[7:0] data_out;   
        reg[7:0] data_out;
         
always@(data_in) 
   begin 
        case(data_in)
                 3'd0:data_out = 8'b0000_0001;
                 3'd1:data_out = 8'b0000_0010;
                 3'd2:data_out = 8'b0000_0100;
                 3'd3:data_out = 8'b0000_1000;
                 3'd4:data_out = 8'b0001_0000;
                 3'd5:data_out = 8'b0010_0000;
                 3'd6:data_out = 8'b0100_0000;
                 3'd7:data_out = 8'b1000_0000;
         endcase
     end
     
endmodule

第三步 编写testbench

点击add source,添加simulasion source,我这里命名为testbench.v。
在这里插入图片描述
在这里插入图片描述
testbench代码如下:

//testbench.v

`timescale 1ns / 1ps
 module testbench; // declare testbench name
  reg clock;
  reg [2:0] add_count;
  wire[7:0] decode;
  wire[7:0] decode2;
  
  initial begin
  clock = 0;
  add_count = 0;
  repeat(16) #50
      begin
        clock <= ~clock;
        add_count <= add_count + 1;
      end
  $stop;
  end
  
  decoder_3_8 d38(.add(add_count),
                  .decode(decode));

  decoder_3_8_2 d382(.a(add_count),
                .y(decode2));    
 endmodule

第四步 设置simulation

进入simulation setting。
在这里插入图片描述
在这里插入图片描述

第五步 运行仿真

点击run simulation。因为仿真不会告诉你哪里错了,所以如果仿真失败,可以点击综合(run synthesis)看看报错的说明。
在这里插入图片描述
观察波形:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签:38,b0000,simulation,decode,add,testbench,data,译码器,out
来源: https://blog.51cto.com/u_15262460/2882737