songtao0728 发表于 2011-1-28 16:06:38

EPM240 入门程序求助~~

程序如下:
控制一个数码管每隔一秒显示加一,可以显示0~9,输入时钟为50MHZ
module Verilog_7seg(clk,rest_n,led1,ss);
input clk;
input rest_n;
output led1;
output ss;

reg ss = 8'b11111111 ;
reg cnt;
reg num;

always @(posedge clk or negedge rest_n)
begin
      if(!rest_n) cnt <= 28'd0;
      else if(cnt===28'd50000000)
             begin
               cnt <= 28'd0;
               num <= num + 8'd1;
               if(num===8'd10) num <= 8'd0;
               case(num)
                      //DP G F E | D C B A//
                     0: ss = 8'b11000000;
                     1: ss = 8'b11111001;
                     2: ss = 8'b10100100;
                     3: ss = 8'b10110000;
                     4: ss = 8'b10011001;
                     5: ss = 8'b10010010;
                     6: ss = 8'b10000010;
                     7: ss = 8'b11111000;
                     8: ss = 8'b10000000;
                     9: ss = 8'b10010000;
               default: ss = 8'b01111111;
               endcase
             end      
      else cnt <= cnt +28'd1;
   end
   
assign led1 = 1'b0;   

endmodule

问题:此程序烧到CPLD中后,发现程序执行了case中的default语句,不明白为什么,begin...end 内的语句不是顺序执行的嘛

ssaweee 发表于 2011-1-28 16:20:23

是顺序执行的

songtao0728 发表于 2011-1-30 10:53:49

可是为什么会执行default:这句呢~~~~有点不明白

pengjun17 发表于 2011-1-30 12:35:36

你是怎么知道执行了default:这句呢

songtao0728 发表于 2011-1-30 14:02:44

因为正常情况下只会显示0~9,但我烧进CPLD,运行,结果确实是显示了default的内存啦

YFM_LMM 发表于 2011-1-31 18:54:11

建议楼主入门时不要先用代码做实验,毕竟数字系统设计不同于软件设计,
设计一个数字系统前要先在大脑里有一个这个系统的电路图,将它模块化,分别用HDL代码描述每一个模块,最后再连接起来。

ssaweee 发表于 2011-1-31 19:43:34

reg num;

你先付个初值看看8bit的寄存器可能的值0-255

reg num=0;
页: [1]
查看完整版本: EPM240 入门程序求助~~