用Verilog点亮一个灯,为什么不能实现

2019-07-15 23:34发布

本帖最后由 elecfans跑堂 于 2015-8-31 09:38 编辑

程序如下
module fsm2(clk,led);
    input clk;//,rst;
    output led;
    reg led;
    reg[19:0]i;
         
         initial
           begin
                        led<=1;
         i<=0;
                end

    always@(posedge clk )//or negedge rst)
     //if(0==rst)
       //begin

      // end
     //else
       begin
         i<=i+1;
         if(i==1000000)
            begin
             i<=0;
             led<=~led;
            end
       end

endmodule

而我的仿真程序如下


module tt;

        // Inputs
        reg clk;

        // Outputs
        wire led;

        // Instantiate the Unit Under Test (UUT)
        fsm2 uut (
                .clk(clk),
                .led(led)
        );

        initial begin
                // Initialize Inputs
                clk = 0;

                // Wait 100 ns for global reset to finish
                #100;

                // Add stimulus here
                 forever
                        begin
                                
                                #10;
                                clk<=!clk;        
                        end

        end

endmodule


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
luccao
2019-07-16 07:43
elecggmq 发表于 2015-8-31 09:05
问题出现在你给 i 赋值那了,FPGA是并行运算,在IF后加个ELSE,把i

module fsm2(clk,led);
    input clk;
    output led;
    reg led;
    reg[19:0] i;
         
initial
         begin
                  led<=1;
        i<=0;
         end

always@(posedge clk )
       begin
         if(i==1000000)
            begin
             i<=0;
             led<=~led;
            end
                        else
                                i<=i+1;
       end
   
endmodule
我把它改为这个以后,还是一样,仿真的时候led一直保持高电平

一周热门 更多>