|
程序如下:
控制一个数码管每隔一秒显示加一,可以显示0~9,输入时钟为50MHZ
module Verilog_7seg(clk,rest_n,led1,ss);
input clk;
input rest_n;
output led1;
output[7:0] ss;
reg[7:0] ss = 8'b11111111 ;
reg[27:0] cnt;
reg[7:0] 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 内的语句不是顺序执行的嘛 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|