名稱:基于FPGA的多功能數(shù)字鐘設計Verilog代碼ISE開發(fā)板
軟件:ISE
語言:Verilog
代碼功能:
1.能顯示時分秒,最大可顯示23:59:59,時間可調(diào),可以復位。
2.可以定時鬧鐘,鬧鐘有鈴聲。
3.數(shù)字鐘能實現(xiàn)整點報時功能。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
部分代碼展示:
module?display( input?clk, input?[3:0]?state_mode,////當前模式,4'd0:計時,4'd1設置時間?,4'd2顯示鬧鐘時間,4'd3設置鬧鐘時間 input?[7:0]?alarm_hour_time,//鬧鐘時 ???input?[7:0]?alarm_minute_time,//鬧鐘分 ???input?[7:0]?alarm_second_time,//鬧鐘秒 input?[7:0]?hour_time,//時 input?[7:0]?minute_time,//分 input?[7:0]?second_time,//秒 output?reg?[7:0]?bit_select,//數(shù)碼管位選 ???output?reg?[7:0]?seg_select//數(shù)碼管段選 ); reg?[3:0]display?=?4'b0000;? reg?[31:0]select_num?=32'd0; reg?[2:0]geshu?=?3'd0; reg?[7:0]?display_hour_time;//顯示時 reg?[7:0]?display_minute_time;//顯示分 reg?[7:0]?display_second_time;//顯示秒 always@(posedge?clk) case(state_mode) 4'd0,4'd1: begin//4'd0:計時,4'd1設置時間 display_hour_time<=hour_time;//顯示時 display_minute_time<=minute_time;//顯示分 display_second_time<=second_time;//顯示秒 end 4'd2,4'd3: begin//4'd2顯示鬧鐘時間,4'd3設置鬧鐘時間 display_hour_time<=alarm_hour_time;//顯示時 display_minute_time<=alarm_minute_time;//顯示分 display_second_time<=alarm_second_time;//顯示秒 end default:; endcase ////////////////////////////////////////////位選//////////////////////////////////////////////// always?@(posedge?clk?)??//掃描頻率 begin if(select_num?==?32'd99_999)?? begin select_num?<=?32'd0;? end? else?begin select_num?<=select_num?+1'd1;?//掃描頻率計時數(shù)字 end end always?@(posedge?clk?)?? begin if(select_num?==?32'd99_999) begin if(geshu?==?3'd7) begin geshu?<=?3'd0; end else?begin geshu?<=?geshu?+?1'd1;????//掃描那個管子的指示位 end end end always?@(posedge?clk?)??//位選切換 begin case?(geshu) 3'd0: begin bit_select<=~8'b01111111; display<=?display_second_time?%8'd10;//秒個位 end 3'd1: begin? bit_select<=~8'b10111111; display?<=?display_second_time?/8'd10;//秒十位 end 3'd2: begin?//顯示- bit_select<=~8'b11011111; display?<=?4'd10; end? 3'd3: begin? bit_select<=~8'b11101111; display?<=?display_minute_time?%8'd10;//分個位 end???? 3'd4: begin bit_select<=~8'b11110111; display?<=?display_minute_time?/8'd10;//分十位 end 3'd5: begin?//顯示- bit_select<=~8'b11111011; display?<=?4'd10; end 3'd6: begin bit_select<=~8'b11111101; display?<=?display_hour_time?%8'd10;//時個位 end 3'd7: begin bit_select<=~8'b11111110; display?<=?display_hour_time?/8'd10;//時十位 end default:; endcase end? ////////////////////////////////////////////////////段選輸出/////////////////////////////////////////// always?@(posedge?clk) begin case?(display)??//數(shù)字顯示碼 4'd0:?seg_select<=?~8'b1100_0000; 4'd1:?seg_select<=?~8'b1111_1001; 4'd2:?seg_select<=?~8'b1010_0100; 4'd3:?seg_select<=?~8'b1011_0000; 4'd4:?seg_select<=?~8'b1001_1001; 4'd5:?seg_select<=?~8'b1001_0010; 4'd6:?seg_select<=?~8'b1000_0010; 4'd7:?seg_select<=?~8'b1111_1000; 4'd8:?seg_select<=?~8'b1000_0000; 4'd9:?seg_select<=?~8'b1001_0000; 4'd10:?seg_select<=~8'b1011_1111; default:; endcase end endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=792
閱讀全文