锆石科技社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 221|回复: 4

仿真中的test文件比较困惑

[复制链接]

14

主题

66

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
发表于 2016-11-11 22:34:46 | 显示全部楼层 |阅读模式
仿真文件如下:
`timescale 1 ps/ 1 ps
module verilog_LED_vlg_tst();
// constants                                          
// general purpose registers
reg eachvec;
// test vector input registers
reg CLK_50M;
reg [7:0] KEY;
reg RST_N;

reg [20:0]  time_cnt;
reg [20:0]  time_cnt_n;
reg [7:0] key_in_r;  //装按键信号的寄存器
reg  [7:0] key_out;  //消抖完成输出按键
reg [7:0] key_out_n;  
wire key_press;    //检测按键有没有变化

// wires                                               
wire [7:0]  LED;

// assign statements (if any)                          
verilog_LED i1 (
// port map - connection between master ports and signals/registers   
        .CLK_50M(CLK_50M),
        .KEY(KEY),
        .LED(LED),
        .RST_N(RST_N)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
    #0 CLK_50M=1'b0;
    #10000 RST_N=1'b0;
    #10000 rst_N=1'b1;
    #10000000 $stop;          
// --> end                                                                    
end

always   #10000    CLK_50M=~CLK_50M;
   
always @ (posedge CLK_50M or negedge RST_N)
begin
  if(!RST_N)
     key_in_r<=8'b00;
   else
     key_in_r<=KEY;
        end


       
always @ (posedge CLK_50M or negedge RST_N)
begin
        if(!RST_N)
         time_cnt<=21'h0;
        else
    time_cnt<=time_cnt_n;
        end


// 组合电路,实现20ms的定时计数器
always @ (*)
begin
   if(time_cnt==SET_TIME_20MS || key_press)
           time_cnt_n=21'h0;
        else
            time_cnt_n=time_cnt+1'b1;
end       
//  时序电路给time_cnt寄存器赋值
assign  key_press=key_in_r^KEY;  




always @ (posedge CLK_50M or negedge RST_N)
begin
  if(!RST_N)
    key_out<=8'h00;
  else
   key_out<=key_out_n;
end




//  组合电路,每20ms接受一次按键
always @ (*)       
begin

  if(time_cnt==SET_TIME_20MS)
    key_out_n=key_in_r;
  else
    key_out_n=key_out;
end         

assign LED=key_out;
endmodule
红色字体是我写的仿真测试文件,首先我的问题是对仿真文件的编写有些困惑,我的理解是把工程文件复制过来,像上面这样,只做了initial部分的声明。第二,我想要看key_out_n=key_out和key_out_n=8‘h00有什么区别。但是这个test仿真不了。这是一个按键与led相对应的实验文件。我在这里卡了好几天了,一直想不通!请锆石老师帮我这个test文件哪里出了问题?我理解的编写test文件有没有问题?
回复

使用道具 举报

发表于 2016-11-12 12:56:06 | 显示全部楼层
你这段代码不是用来仿真按键模块的,而是用来仿真按键与led相对应的实现的。
回复 支持 反对

使用道具 举报

发表于 2016-11-12 12:58:31 | 显示全部楼层
本帖最后由 锆石科技解答员 于 2016-11-12 12:59 编辑

在Testbench中,你例化了Verilog_LED,这个Verilog_LED应该就是按键按下相对应的LED点亮对吧?那么也就是说,你现在要仿真的是Verilog_LED这个模块,你只需要给相应的激励信号,也就是相对应的按键值,那么LED就会输出相对应的值。如何给按键值呢,只需要在Testbench中编写KEY = 8'b00000001即可。
回复 支持 反对

使用道具 举报

发表于 2016-11-12 13:01:12 | 显示全部楼层
如果你想要仿真按键消消抖模块,那么你只需要例化按键消抖模块,给按键赋值,那么消抖后的按键便会输出相对应的值,然后想要验证key_out_n=key_out和key_out_n=8‘h00有什么不同,那么只需要在按键消抖模块中修改这两句程序就可以了。
回复 支持 反对

使用道具 举报

0

主题

26

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2016-11-17 10:02:03 | 显示全部楼层
我也不懂mark大哭
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|锆石科技社区 ( 苏ICP备15059756号  

GMT+8, 2019-5-27 03:14 , Processed in 0.142386 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表