sasinop 发表于 2012-6-20 13:06:24

仿真激励时一个现象,求解释 谢谢



仿真达到预计了
但是
从图上看,为啥要到第二个CLK的上升沿, LED3才有反应呢?

为啥第一个CLK的上升沿,LED3没有变化呢?
两个上升沿时,信号都一样呀,,出了LED3
怎么解释?
谢谢

wye11083 发表于 2012-6-20 13:21:15

就这么点,估计只有神才能救你了。

kebaojun305 发表于 2012-6-20 13:23:33

同楼上了这点信息   神都救不了。{:tongue:}

sasinop 发表于 2012-6-20 13:29:45

代码和 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

sasinop 发表于 2012-6-20 13:53:45

发布了短信呵呵

是ISE自带的 仿真工具

kebaojun305 发表于 2012-6-20 14:35:55

我用的是 modelsim

sasinop 发表于 2012-6-20 15:37:41

那您仿真一下看看呢,是不是也是这样的效果呢?

难道自带的仿真工具不专业?

NJ8888 发表于 2012-6-20 15:45:13

因为rst吧,你仿真图没显示出来

sasinop 发表于 2012-6-20 16:22:58



// 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 了呢?
请指导谢谢



sasinop 发表于 2012-6-20 16:25:05

不是并行的方式么?

难道只能用时序延时来解释了?

wye11083 发表于 2012-6-20 22:03:04

知道为什么没有人回你吗?搞得你跟没任何常识一样。你的时钟已经走过去了,你才拨开关,你说会有反应吗?OMG,时钟竟然这样产生,也太水了。

sasinop 发表于 2012-6-21 07:56:20

谢谢楼上的,俺不是菜鸟嘛

但是看书上说, 所有句子都是并行的呀,既然是并行,就没有应该没有先后顺序呀

看来是俺理解错了

谢谢指导

pocker5200 发表于 2012-6-22 17:24:59

时钟信号单独写
always
begin
    #n clk = 0;
    #n clk = 1;
end


PS: n的取值自定。
页: [1]
查看完整版本: 仿真激励时一个现象,求解释 谢谢