仿真激励时一个现象,求解释 谢谢
仿真达到预计了
但是
从图上看,为啥要到第二个CLK的上升沿, LED3才有反应呢?
为啥第一个CLK的上升沿,LED3没有变化呢?
两个上升沿时,信号都一样呀,,出了LED3
怎么解释?
谢谢 就这么点,估计只有神才能救你了。 同楼上了这点信息 神都救不了。{:tongue:} 代码和 tesb bench 来了
谢谢
一个点灯程序的部分代码:
assignsw = {sw0,sw1,sw2,sw3};
assign{led0,led1,led2,led3,led4,led5,led6,led7} = led;
always @ ( posedge clk or negedge rst)
begin
if(!rst)
led<='b0;
else
case ( sw )
4'b1110:led <= 8'b0000_0001;
4'b1101:led <= 8'b0000_0010;
4'b1011:led <= 8'b0000_0100;
4'b0111:led <= 8'b0000_1000;
4'b1100:led <=8'b0001_0000;
烧到板子里时,按下sw0 ,板子上的LED5灯是亮的, 即led4=1 ,
4'b1001:led <= 8'b0010_0000;
4'b0011:led <= 8'b0100_0000;
4'b0110:led <= 8'b1000_0000;
default:led <= 8'b0000_0000;
但是,仿真时,就出了问题,仿真是对激励如下:
initial begin
//Initialize Inputs
clk= 0;
rst= 0;
sw0= 0;
sw1= 0;
sw2= 0;
sw3= 0;
//Wait 100 ns for global reset to finish
#100;
//Add stimulus here
clk=1;
rst=1;
//#100;
sw0=1;sw1=1;sw2=0;sw3=0;
#10;
clk=0;
rst=0;
#10
clk=1;
rst=1;
sw0=1;sw1=1;sw2=0;sw3=0;
#10;
clk=0;rst=0;
End 发布了短信呵呵
是ISE自带的 仿真工具
我用的是 modelsim 那您仿真一下看看呢,是不是也是这样的效果呢?
难道自带的仿真工具不专业?
因为rst吧,你仿真图没显示出来
// Add stimulus here
//#100;
#10;
sw0=1;sw1=1;sw2=0;sw3=0;
clk=1;
rst=1;
#10;
sw0=0;sw1=0;sw2=0;sw3=0;
clk=0;
rst=0;
#10;
sw0=1;sw1=1;sw2=0;sw3=0;
clk=1;
rst=1;
#10;
sw0=0;sw1=0;sw2=0;sw3=0;
clk=0;
rst=0;
我现在这么写,如上的激励信号,, 就完全符合要求了
但是
我不明白的是
sw0=1;sw1=1;sw2=0;sw3=0;
上面的按键信号和下面的时钟信号,为啥位置不一样,效果就有区别呢?
clk=1;
rst=1;
开始的时候, CLK 信号在前面,,就导致了本帖最初的贴图那样的效果
而CLK 信号,放在 按键信号的后面,,就完全OK 了呢?
请指导谢谢
不是并行的方式么?
难道只能用时序延时来解释了?
知道为什么没有人回你吗?搞得你跟没任何常识一样。你的时钟已经走过去了,你才拨开关,你说会有反应吗?OMG,时钟竟然这样产生,也太水了。 谢谢楼上的,俺不是菜鸟嘛
但是看书上说, 所有句子都是并行的呀,既然是并行,就没有应该没有先后顺序呀
看来是俺理解错了
谢谢指导
时钟信号单独写
always
begin
#n clk = 0;
#n clk = 1;
end
PS: n的取值自定。
页:
[1]