|
用Xilinx ISE Design Suite 13.2, Verilog HDL语言 Nexys3开发板。现在只实现了电子钟的功能,怎么加年月日和小时啊- module main(clk,sw,an,seg,second_0,second_1,minute_0,minute_1 );
- input clk;
- input[7:0] sw;
- output[3:0] an;
- output[7:0] seg;
- output [30:0] second_0;
- output[3:0] second_1;
- output [3:0] minute_0;
- output[3:0] minute_1;
- reg[3:0] an;
- reg[7:0] seg;
- reg[30:0]second_0;
- reg[3:0]second_1;
- reg[3:0]minute_0;
- reg[3:0]minute_1;
- reg[20:0]cnt;
- reg a,b,c,d;
- reg [1:0]temp;
- reg [3:0] second_t_1;
- reg [3:0] minute_t_0;
- reg [3:0] minute_t_1;
- initial
- begin
- a=0;
- temp=2'b0;
- second_0[30:0]=31'b0;
- second_1[3:0]=4'b0;
- minute_0[3:0]=4'b0;
- minute_1[3:0]=4'b0;
- end
-
-
- always@(posedge clk)
- begin
- if(cnt[19]==1'b1)
- cnt<=21'b0;
- else
- cnt<=cnt+1'b1;
- end
-
- always@(posedge clk)
- begin
- if(sw[7:6]!=2'b1)
- begin
- if(second_0[30:27]>=4'b1010)
- second_0<=31'b0;
- else
- second_0<=second_0+1'b1;
- end
- else
- begin
- if(sw[5:4]==2'b0)
- second_0[30:27]<=sw[3:0];
- else
- second_0<=second_0;
- end
- end
-
-
-
- always@(posedge clk)
- begin
- if(sw[7:6]!=2'b1)
- begin
- if(second_0[30:27]==4'b1010)
- second_1<=second_1+1'b1;
- if(second_1>=4'b0110)
- second_1<=4'b0;
- end
- else
- begin
- if(sw[5:4]==2'b1)
- second_1<=sw[3:0];
- end
- end
-
- always@(posedge clk)
- begin
- if(sw[7:6]!=2'b1)
- begin
- if(second_1==4'b0110)
- minute_0<=minute_0+1'b1;
- if(minute_0>=4'b1010)
- minute_0<=4'b0000;
- end
- else
- begin
- if(sw[5:4]==2'b10)
- minute_0<=sw[3:0];
- end
- end
-
- always@(posedge clk)
- begin
- if(sw[7:6]!=2'b1)
- begin
- if(minute_0==4'b1010)
- minute_1<=minute_1+1'b1;
- if(minute_1>=4'b0110)
- minute_1<=4'b0000;
- end
- else
- begin
- if(sw[5:4]==2'b11)
- minute_1<=sw[3:0];
- end
-
- end
- always@(posedge clk)
- begin
- case(sw[7:6])
- 2'b00:
- begin
- if(second_1==second_t_1)
- a<=1;
- else
- a<=0;
- if(minute_0==minute_t_0)
- b<=1;
- else
- b<=0;
- if(minute_1==minute_t_1)
- c<=1;
- else
- c<=0;
- d<=a&b&c;
- if(cnt[18:17]==4'b0)
- begin
- if(sw[5]!=1||d!=1)
- case(second_0[30:27])
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- else
- seg<=8'b11111110;
- an<=4'b1110;
- end
- if(cnt[18:17]==4'b01)
- begin
- if(sw[5]!=1||d!=1)
- case(second_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- else
- seg<=8'b11110111;
- an<=4'b1101;
- end
- if(cnt[18:17]==4'b10)
- begin
- if(sw[5]!=1||d!=1)
- case(minute_0)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- else
- seg<=8'b11110111;
- an<=4'b1011;
- end
- if(cnt[18:17]==4'b11)
- begin
- if(sw[5]!=1||d!=1)
- case(minute_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- else
- seg<=8'b11111110;
- an<=4'b0111;
- end
- end
- 2'b1: begin//2
-
-
- temp<=sw[5:4];
- case(temp)
- 2'b0: begin //0
- an<=4'b1110;
- seg<=8'b10000001;
-
-
- case(second_0[30:27])
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
-
-
- end//0
- 2'b1: begin
-
- an<=4'b1101;
- seg<=8'b10000001;
- case(second_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- end
- 2'b10:begin
- //if(sw[4]==1) minute_0<=sw[3:0];
- an<=4'b1011;
- seg<=8'b10000001;
- case(minute_0)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- end
- 2'b11:begin
-
- an<=4'b0111;
- seg<=8'b10000001;
- case(minute_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- end
- endcase
- end
-
- 2'b10: begin
- temp<=sw[5:4];
- case(temp)
- 2'b0: begin
- an<=4'b0000;
- seg<=8'b10001001;
- end
- 2'b1:begin
- an<=4'b1101;
- seg<=8'b10000001;
- second_t_1<=sw[3:0];
- case(second_t_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
-
- end
-
- 2'b10:begin
- an<=4'b1011;
- seg<=8'b10000001;
- minute_t_0<=sw[3:0];
- case(minute_t_0)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
-
- end
- 3'b11:begin
- an<=4'b0111;
- seg<=8'b10000001;
- minute_t_1<=sw[3:0];
- case(minute_t_1)
- 4'b0: begin seg<=8'b11000000; end
- 4'b1: begin seg<=8'b11111001; end
- 4'b10: begin seg<=8'b10100100; end
- 4'b11: begin seg<=8'b10110000; end
- 4'b100: begin seg<=8'b10011001; end
- 4'b101: begin seg<=8'b10010010; end
- 4'b110: begin seg<=8'b10000010; end
- 4'b111: begin seg<=8'b11111000; end
- 4'b1000: begin seg<=8'b10000000; end
- 4'b1001: begin seg<=8'b10010000; end
- endcase
- end
- endcase
-
- end //3
-
- endcase
- end
-
-
- endmodule
复制代码 |
|