基于xilinx_ise的多功能数字钟实验报告(编辑修改稿)内容摘要:

电台的报时功能是在56秒亮,57秒熄灭,58秒亮,59秒熄灭,00秒亮三秒。 整点报时的功能是在整点用二进制led显示当前时刻(如十点则亮1010)。 整点报时功能基于十二小时制。 源代码如下://报时模块module baoshi(CP,int,led_out,spark )。 //CP为扫描信号,int为当前时间,led_out为整点报时功能,spark为仿广播电台报时功能input CP。 input [23:0]int。 output [3:0]led_out。 output spark。 reg [3:0]led_out。 reg spark。 //仿广播电台报时功能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 //整点报时功能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波形图如下:第一行为整点报时信号led_out,第二行为仿广播电台报时spark,第三行为脉冲,第四行为从01:59:56到02:00:02的时钟信号。 波形检测了在01:59:56到02:00:02的报时状况,即整点报时0010,仿广播电台报时闪烁三次。 模块(5)闹钟电路:闹钟电路由闹钟设置模块、闹钟时钟切换模块和闹钟报时模块三个大模块组成,其中闹钟设置模块和闹钟报时模块又分别各包含一个秒脉冲模块。 闹钟设置模块类似于计时模块中的设置部分,闹钟时钟切换模块用于切换显示。 闹钟报时模块的功能是到达特定时刻点时led灯亮一分钟。 源代码如下://闹钟设置模块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。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。