【文章內(nèi)容簡介】
電臺的報(bào)時(shí)功能是在56秒亮,57秒熄滅,58秒亮,59秒熄滅,00秒亮三秒。整點(diǎn)報(bào)時(shí)的功能是在整點(diǎn)用二進(jìn)制led顯示當(dāng)前時(shí)刻(如十點(diǎn)則亮1010)。整點(diǎn)報(bào)時(shí)功能基于十二小時(shí)制。 源代碼如下://報(bào)時(shí)模塊module baoshi(CP,int,led_out,spark )。//CP為掃描信號,int為當(dāng)前時(shí)間,led_out為整點(diǎn)報(bào)時(shí)功能,spark為仿廣播電臺報(bào)時(shí)功能input CP。input [23:0]int。output [3:0]led_out。output spark。reg [3:0]led_out。reg spark。//仿廣播電臺報(bào)時(shí)功能always @(posedge CP) begin if(int[15:0]==1639。b0101100101010110)spark=1。 else if(int[15:0]==1639。b0101100101010111)spark=0。 else if(int[15:0]==1639。b0101100101011000)spark=1。else if(int[15:0]==1639。b0101100101011001)spark=0。 else if(int[15:0]==1639。b0000000000000000)spark=1。 else if(int[15:0]==1639。b0000000000000001)spark=1。 else if(int[15:0]==1639。b0000000000000010)spark=1。 else spark=0。 end //整點(diǎn)報(bào)時(shí)功能always @(posedge CP) begin if (int[23:0]==2439。b000000010000000000000000)led_out=439。b0001。 else if (int[23:0]==2439。b000000100000000000000000)led_out=439。b0010。 else if (int[23:0]==2439。b000000110000000000000000)led_out=439。b0011。 else if (int[23:0]==2439。b000001000000000000000000)led_out=439。b0100。 else if (int[23:0]==2439。b000001010000000000000000)led_out=439。b0101。 else if (int[23:0]==2439。b000001100000000000000000)led_out=439。b0110。 else if (int[23:0]==2439。b000001110000000000000000)led_out=439。b0111。 else if (int[23:0]==2439。b000010000000000000000000)led_out=439。b1000。 else if (int[23:0]==2439。b000010010000000000000000)led_out=439。b1001。 else if (int[23:0]==2439。b000100000000000000000000)led_out=439。b1010。 else if (int[23:0]==2439。b000100010000000000000000)led_out=439。b1011。 else if (int[23:0]==2439。b000100100000000000000000)led_out=439。b1100。 else if (int[23:0]==2439。b000100110000000000000000)led_out=439。b0001。 else if (int[23:0]==2439。b000101000000000000000000)led_out=439。b0010。 else if (int[23:0]==2439。b000101010000000000000000)led_out=439。b0011。 else if (int[23:0]==2439。b000101100000000000000000)led_out=439。b0100。 else if (int[23:0]==2439。b000101110000000000000000)led_out=439。b0101。 else if (int[23:0]==2439。b000110000000000000000000)led_out=439。b0110。 else if (int[23:0]==2439。b000110010000000000000000)led_out=439。b0111。 else if (int[23:0]==2439。b001000000000000000000000)led_out=439。b1000。 else if (int[23:0]==2439。b001000010000000000000000)led_out=439。b1001。 else if (int[23:0]==2439。b001000100000000000000000)led_out=439。b1010。 else if (int[23:0]==2439。b001000110000000000000000)led_out=439。b1011。 else if (int[23:0]==2439。b001001000000000000000000)led_out=439。b1100。 else led_out=439。b0000。 endendmodule波形圖如下:第一行為整點(diǎn)報(bào)時(shí)信號led_out,第二行為仿廣播電臺報(bào)時(shí)spark,第三行為脈沖,第四行為從01:59:56到02:00:02的時(shí)鐘信號。波形檢測了在01:59:56到02:00:02的報(bào)時(shí)狀況,即整點(diǎn)報(bào)時(shí)0010,仿廣播電臺報(bào)時(shí)閃爍三次。模塊(5)鬧鐘電路:鬧鐘電路由鬧鐘設(shè)置模塊、鬧鐘時(shí)鐘切換模塊和鬧鐘報(bào)時(shí)模塊三個(gè)大模塊組成,其中鬧鐘設(shè)置模塊和鬧鐘報(bào)時(shí)模塊又分別各包含一個(gè)秒脈沖模塊。鬧鐘設(shè)置模塊類似于計(jì)時(shí)模塊中的設(shè)置部分,鬧鐘時(shí)鐘切換模塊用于切換顯示。鬧鐘報(bào)時(shí)模塊的功能是到達(dá)特定時(shí)刻點(diǎn)時(shí)led燈亮一分鐘。源代碼如下://鬧鐘設(shè)置模塊module alarm(t,S0,S1,AH,AM,nAR,CP,sel0,sel1,sel2 )。 input S0,S1,nAR,AH,AM,CP,sel0,sel1,sel2。 output [15:0]t。 reg [3:0]HH,HL,MH,ML。 wire clk。 secclk second(CP,clk,nAR)。 assign t={HH,HL,MH,ML}。 always @(posedge clk) begin if(!nAR) begin HH=439。b0000。 HL=439。b0000。 MH=439。b0000。 ML=439。b0000。 end else begin if(AHamp。sel0amp。(!sel1)amp。(!sel2)) begin if(HH==439。d2amp。amp。HL==439。d3) begin HH=439。b0000。 HL=439。b0000。 end else if(HL==439。d9) begin HH=HH+439。b0001。 HL=439。b0000。 end else HL=HL+439。b0001。 end else if(AMamp。sel0amp。(!sel1)amp。(!sel2)) begin if(MH==439。d5amp。amp。ML==439。d9) begin MH=439。b0000。 ML=439。b0000。 end else if(ML==439。d9) begin MH=MH+439。b0001。 ML=439。b0000。 end else ML=ML+439。b00