本帖最后由 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 |