| 
 
| 本帖最后由 swfc_qinmm 于 2011-3-16 22:14 编辑 
 今天再做一个BCD码转GRAY码的实验时,用ModelSim-Altera进行门级仿真时,出现了如下图所示的现象:
 
 
 一:想请教大家图中红色标记类似于“毛刺”(不知道这样叫合不合适)的东东是怎么产生的?是不是我的逻辑设计有误?如何解决该问题呢?
 二:我在仿真时软件还出现了warning,不知道该如何解决,麻烦大家给解释一下。
 
 谢谢大家了!
 **********************************代码*********************************
 附上代码:
 `timescale 1ns / 1ps
 module  BCD2GRAY( SysClk, SysRst_n, BCD, GRAY );
 parameter WIDTH = 4;
 input    SysClk, SysRst_n;
 input [WIDTH-1:0] BCD;
 output [WIDTH-1:0] GRAY;
 assign GRAY = (BCD >> 1) ^ BCD;
 endmodule
 *******************************激励文件*********************************
 激励:
 `timescale  1ns / 1ps
 module BCD2GRAY_TEST();
 parameter WIDTH = 4;
 reg     SysClk, SysRst_n;
 reg  [WIDTH-1:0] BCD;
 wire [WIDTH-1:0] GRAY;
 initial
 begin
 SysClk = 1'b1;
 forever
 #25 SysClk = ~SysClk;
 end
 initial
 begin
 SysRst_n = 1'b1;
 #50 SysRst_n = 1'b0;
 #150 SysRst_n = 1'b1;
 #1000000;
 $stop;
 end
 reg  [WIDTH-1:0] Cnt;
 always @ ( posedge SysClk )
 begin
 BCD = {$random} % 15;   //产生输入数据
 end
 BCD2GRAY BCD2GRAY_INST(
 .SysClk(SysClk),
 .SysRst_n(SysRst_n),
 .BCD(BCD),
 .GRAY(GRAY)
 );
 endmodule
 | 
 
×本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?注册 
  |