原理 1. 计时器 24 小时计时器的电路框图如图 8.1 所示。 24 小时计时器由 2 个 60 进制加计数器和 1 个 24 进制加计数器构成,输入 CLK 为 1Hz (秒)的时钟,经过60 进制加计数后产生 1 分钟的进位时钟信号,再经过 60 进制加计数后产生 1 小时的进位时钟信号送给 24 进制加计数器进行加计数,当加计数到达 23:59:59 后, 再来一个秒脉冲,产生时的进位输出。将两个 60 进制加计数器和一个 24 进制加计数器的输 出送数码管显示,得到计时器的显示结果。其中,秒脉冲由 EDA 实训仪上的 20MHz 晶振分 频得到。 2. 倒计时器 24 小时倒计时器的电路框图如图 8.2 所示。 24 小时倒计时器由 2 个 60 进制减计数器和 1 个 24 进制减计数器构成,输入 CLK 为 1Hz (秒)的时钟,经过60 进制减计数后产生 1 分钟的借位时钟信号,再经过 60 进制减计数后产生 1 小时的借位时钟信号送给 24 进制减计数器进行减计数,当减计数到达 00:00:00 后, 产生时的借位输出,同时 24 小时倒计时器停止倒计时,并发出提醒信号。将两个 60 进制减 计数器和一个 24 进制减计数器的输出送数码管显示,得到 倒计时的显示结果。其中,秒脉冲 由 EDA实训仪上的 20MHz 晶振分频得到。 三、实验设备 ① EDA 实训仪 1 台。 ② 计算机 1 台(装有 Quartus II 软件)。 四、实验内容 1. 计时器 在 Quartus II 软件中,按照实验原理中 24 小时计时器的电路框图,用 Verilog HDL 编程 设计计时器电路,然后进行编辑、编译(综合)、仿真,引脚的锁定,并下载到 EDA 实训仪 中进行验证。 注: 用 EDA 实训仪上的 20MHz 晶振作为计时器的时钟输入端,按键 S8~S6 分别作为计 时器的校时、校分、校秒输入端,拨动开关 S0 作为计时器的清零输入端,拨动开关 S1 作为 计时器的暂停输入端,用数码管 SEG5~SEG0 分别作为时、分、秒的输出端,用发光二极管 L0 作为进位输出端 COUT。 2. 倒计时器 在 Quartus II 软件中,按照实验原理中 24 小时倒计时器的电路框图,用 Verilog HDL 编 程设计倒计时器电路,然后进行编辑、编译(综合)、仿真,引脚的锁定,并下载到 EDA 实 训仪中进行验证。 注: 用 EDA 实训仪上的 20MHz 晶振作为倒计时器的时钟输入端,按键 S8~S6 分别作为 倒计时器的校时、校分、校秒输入端,拨动开关 S0 作为倒计时器的复位输入端,拨动开关 S1 作为倒计时器的暂停输入端,用数码管 SEG5~SEG0 分别作为时、分、秒的输出端,用发光二极管 L0 作为借位输出端 COUT。 五、实验预习要求 ① 复习理论课本有关计数器及分频器的内容,并认真阅读实验指导书,分析、掌握实验原理,熟悉理论课本中 QuartusII 软件的使用方法。 ② 按照实验内容的要求,编写相应的实验程序和画出相应的顶层电路连线图,写出相应的实验步骤。 - module cnt60(q,cout,clk,clrn,en,sel,j);
- input clk,clrn,en,sel,j;
- output reg[7:0] q;
- output reg cout;
- always @(posedge clk^j or negedge clrn)
- begin
- if(~clrn) q=0; //清0
- else if(en) //使能
- begin
- if(sel) //加减(加)
- begin
- if(q=='h59) q=0;
- else q=q+1;
- if(q[3:0]=='ha) begin
- q[3:0]=0; q[7:4]=q[7:4]+1; end
- if(q=='h59) cout=1;
- else cout=0;
- end
-
- else //加减(减)
- begin
- if(q[3:0])
- q[3:0]=q[3:0]-1;
- else if(q[3:0]==0)
- begin
- if(q[7:4]!=0)
- begin
- q[3:0]='h9;
- q[7:4]=q[7:4]-1;
- end
- else //00
- begin
- cout=cout-1;
- q='h59;
- end
- end
- end
- end
- end
- endmodule
复制代码
24 进制加减法计数器 - module cent24(q,cout,clk,clrn,en,sel,j);
- input clk,clrn,en,sel,j;
- output reg[7:0] q;
- output reg cout;
- always @(posedge clk^j or negedge clrn)
- begin
- if(~clrn) q=0; //清0
- else if(en) //使能
- begin
- if(sel) //加减(加)
- begin
- if(q=='h23) q=0;
- else q=q+1;
- if(q[3:0]=='ha) begin
- q[3:0]=0; q[7:4]=q[7:4]+1; end
- if(q=='h23) cout=1;
- else cout=0;
- end
-
- else //加减(减)
- begin
- if(q[3:0])
- q[3:0]=q[3:0]-1;
- else if(q[3:0]==0)
- begin
- if(q[7:4]!=0)
- begin
- q[3:0]='h9;
- q[7:4]=q[7:4]-1;
- end
- else //00
- begin
- cout=cout-1;
- q='h23;
- end
- end
- end
- end
- end
- endmodule
复制代码
图8.5 仿真电路图 引脚锁定 clk Input PIN_132 3 B3_N0 PIN_132 3.3-V LVTTL (default) 24mA (default) clrn Input PIN_8 1 B1_N0 PIN_8 3.3-V LVTTL (default) 24mA (default) cout Output PIN_115 3 B3_N1 PIN_115 3.3-V LVTTL (default) 24mA (default) en Input PIN_10 1 B1_N0 PIN_10 3.3-V LVTTL (default) 24mA (default) jf Input PIN_13 1 B1_N0 PIN_13 3.3-V LVTTL (default) 24mA (default) jm Input PIN_12 1 B1_N0 PIN_12 3.3-V LVTTL (default) 24mA (default) js Input PIN_14 1 B1_N0 PIN_14 3.3-V LVTTL (default) 24mA (default) qf[7] Output PIN_99 4 B4_N0 PIN_99 3.3-V LVTTL (default) 24mA (default) qf[6] Output PIN_97 4 B4_N0 PIN_97 3.3-V LVTTL (default) 24mA (default) qf[5] Output PIN_96 4 B4_N0 PIN_96 3.3-V LVTTL (default) 24mA (default) qf[4] Output PIN_95 4 B4_N0 PIN_95 3.3-V LVTTL (default) 24mA (default) qf[3] Output PIN_94 4 B4_N0 PIN_94 3.3-V LVTTL (default) 24mA (default) qf[2] Output PIN_92 4 B4_N0 PIN_92 3.3-V LVTTL (default) 24mA (default) qf[1] Output PIN_59 4 B4_N1 PIN_59 3.3-V LVTTL (default) 24mA (default) qf[0] Output PIN_58 4 B4_N1 PIN_58 3.3-V LVTTL (default) 24mA (default) qm[7] Output PIN_57 4 B4_N1 PIN_57 3.3-V LVTTL (default) 24mA (default) qm[6] Output PIN_56 4 B4_N1 PIN_56 3.3-V LVTTL (default) 24mA (default) qm[5] Output PIN_48 1 B1_N1 PIN_48 3.3-V LVTTL (default) 24mA (default) qm[4] Output PIN_47 1 B1_N1 PIN_47 3.3-V LVTTL (default) 24mA (default) qm[3] Output PIN_46 1 B1_N1 PIN_46 3.3-V LVTTL (default) 24mA (default) qm[2] Output PIN_45 1 B1_N1 PIN_45 3.3-V LVTTL (default) 24mA (default) qm[1] Output PIN_44 1 B1_N1 PIN_44 3.3-V LVTTL (default) 24mA (default) qm[0] Output PIN_43 1 B1_N1 PIN_43 3.3-V LVTTL (default) 24mA (default) qs[7] Output PIN_114 3 B3_N1 PIN_114 3.3-V LVTTL (default) 24mA (default) qs[6] Output PIN_113 3 B3_N1 PIN_113 3.3-V LVTTL (default) 24mA (default) qs[5] Output PIN_112 3 B3_N1 PIN_112 3.3-V LVTTL (default) 24mA (default) qs[4] Output PIN_110 3 B3_N1 PIN_110 3.3-V LVTTL (default) 24mA (default) qs[3] Output PIN_104 4 B4_N0 PIN_104 3.3-V LVTTL (default) 24mA (default) qs[2] Output PIN_103 4 B4_N0 PIN_103 3.3-V LVTTL (default) 24mA (default) qs[1] Output PIN_102 4 B4_N0 PIN_102 3.3-V LVTTL (default) 24mA (default) qs[0] Output PIN_101 4 B4_N0 PIN_101 3.3-V LVTTL (default) 24mA (default) sel Input PIN_11 1 B1_N0 PIN_11 3.3-V LVTTL (default) 24mA (default) |