在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2094|回复: 1

[求助] 新手编写代码同编写的TESTbench仿真的结果不一致

[复制链接]
发表于 2015-8-2 16:19:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
以下为testbench:




  1. `timescale 1ns/100ps  //单位/精度
  2. module cool_tb ();
  3.   //时钟产生
  4.   //时钟周期为20ns
  5.   reg clk;
  6.   reg reset;
  7.   
  8.   wire led1;
  9.   wire  led2;
  10.   

  11.   parameter PERIOD = 20;//parameter 参数 类似#define
  12.   initial                                         //初始化
  13.         begin
  14.                 clk =0;
  15.                 forever                        //一直执行
  16.                         #(PERIOD/2) clk=~clk;                 //        #10 表示每隔10ns执行一次
  17.         end

  18.         initial
  19.                 begin
  20.                         reset_task(100);//复位100ns
  21.                 end
  22.         task reset_task;//定义任务 input为任务的输入,RESET为输出
  23.                 input [15:0]reset_time;//复位事件
  24.                         begin
  25.                                 reset=0;
  26.                                 #reset_time;
  27.                                 reset=1;
  28.                         end
  29.         endtask
  30.        
  31.        
  32. //将信号驱动给设计模块
  33.         cool  cool_tb (.clk50m(clk), .rst_n(reset),.led1(led1),.led2(led2));
  34.        
  35. endmodule



复制代码


下面为代码:




  1. module cool (clk50m ,rst_n,led1,led2);
  2.         input clk50m;
  3.         input rst_n;
  4.        
  5.         output led1;
  6.         output led2;
  7.        
  8.         reg led1;
  9.         reg  led2;
  10.        
  11.         reg [12:0]cnt2604;
  12.         reg clk9600;
  13.         always @(posedge clk50m or negedge rst_n)
  14.                 begin
  15.                         if(!rst_n)
  16.                                 begin
  17.                                         cnt2604<=0;
  18.                                         clk9600<=0;
  19.                                 end
  20.                         else if(cnt2604==2604)
  21.                                 clk9600<=~clk9600;
  22.                         else
  23.                                 cnt2604<=cnt2604+1'b1;
  24.                 end
  25.                
  26.         always@(posedge clk9600 or negedge  rst_n)
  27.                 begin
  28.                         if(!rst_n)
  29.                                 begin
  30.                                         led1<=0;
  31.                                         led2<=0;
  32.                                 end
  33.                         else
  34.                                 begin
  35.                                         led1<=~led1;
  36.                                         led2<=led1+led2;
  37.                                 end
  38.                 end
  39.                
  40. endmodule



  41.    


复制代码



仿真波形

波形图

波形图
发表于 2015-8-14 07:18:27 | 显示全部楼层
我看完全一致,是你的想法和代码不一样。好好检查一下你的代码吧,用逻辑产生的信号做时钟,不可取
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-3 22:16 , Processed in 0.018490 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表