电子线路实验报告(共10页).doc
精选优质文档-倾情为你奉上 华中科技大学文华学院电子线路实验设计报告 题目:多功能数字钟电路的设计专 业:计算机科学与技术 班 级: 2 班 姓 名: 学 号:13指导教师:谢 永 锋 专心-专注-专业 一、实验名称:多功能数字钟电路的设计 二、实验目的: 1.掌握可编程逻辑器件的应用开发技术设计输入、编译、仿真和器件编程; 2.熟悉一种EDA软件使用; 3.掌握Verilog设计方法; 4.掌握分模块分层次的设计方法分计数器计满60后向小时计数器进位三、实验要求: 设计一个具有时、分、秒计时的电子钟电路,按照24小时计时。要求:(1)准确计时,以数字的形式显示时、分、秒的时间;(2)具有分时校正功能,校正输入脉冲频率为1Hz;(3)具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒、57秒时,发出4声500Hz低音,在59分59秒时发出一声1kHz高音,它们持续的时间均为1秒,最后一声高音结束的时刻恰好为正点时刻 ;(4)具有定时闹钟功能,且最长闹铃时间为1 分钟。 要求可以任意的设着闹钟的时、分、秒;闹铃信号为500Hz和1kHz 的方波信号,两种频率的信号 交替输出,且均持续1秒。摄者一个停止闹钟控制键,可以停止输出闹铃的信号。 四:数字钟主体电路的设计 数字钟系统由主体电路和扩展电路两部分组成 层次模块图 分计数器计满60后向小时计数器进位数字钟主体电路的设计: 模24计数器的Verilog HDL设计(counter24.v) 小时计数器的计数规律为 0001222300,即在设计时要求 小时计数器的个位和十位均按BCD码计数。 模60计数器的Verilog HDL设计(counter60.v) 分和秒计数器的计数规律为 0001585900 ,可见个位计数器从09计数,是一个10进制计数器;十位计数器从05计数,是一个六进制计数器。可以先分别设计一个十进制计数器模块(counter10.v)和一个六进制计数器模块(counter6.v),然后将这两个模块组合起来,构成六十进制计数器。 模6进制计数器的Verilog HDL设计(counter6.v)/counter6.v (BCD: 0-9)module counter6(Q,ncR,EN,CP); input CP,ncR,EN; output reg 3:0Q; always (posedge CP,negedge ncR) begin if(ncR) /ncR=0,计数器被异步清零 Q<=4'b0000; else if(EN) /EN=0,暂停计数 Q<=Q; else if(Q=4'b0101) Q<=4'b0000; else Q<=Q+1'b1; /计数器增1计数 endEndmodule功能仿真波形图 模10进制数字器的Verilog HDL设计(counter10.v)/counter10.v (BCD: 0-9)module counter10(Q,ncR,EN,CP); input CP,ncR,EN; output reg 3:0Q; always (posedge CP,negedge ncR) begin if(ncR) /ncR=0,计数器被异步清 Q<=4'b0000; else if(EN) /EN=0,暂停计数 Q<=Q; else if(Q=4'b1001) Q<=4'b0000; else Q<=Q+1'b1; /计数器增1计数 endEndmodule功能仿真波形图 模60计数器的Verilog HDL设计(counter60.v)/counter60.v(BCD:0059)module counter60(Cnt,nCR,EN,CP); input CP,nCR,EN; output 7:0 Cnt; wire 7:0 Cnt; wire ENP; counter10 UC0 (Cnt3:0,nCR,EN,CP); counter6 UC1(Cnt7:4,nCR,ENP,CP); assign ENP=(Cnt3:0=4'h9);endmodule 功能仿真波形图 模24计数器的Verilog HDL设计(counter24.v)/filename :counter24.v (BCD : 0-23)module counter24(CntH,CntL,ncR,EN,CP); input CP,ncR,EN; output 3:0CntH,CntL; reg 3:0CntH,CntL; always (posedge CP,negedge ncR) begin if(ncR) CntH,CntL<=8'h00; else if(EN) CntH,CntL<=CntH,CntL; else if(CntH>2)|(CntL>9)|(CntH=2)&&(CntL>=3) CntH,CntL<=8'h00; else if(CntH=2)&&(CntL<3) begin CntH<=CntH; CntL<=CntL+1'b1; end else if(CntL=9) begin CntH<=CntH+1'b1; CntL<=4'b0000; end else begin CntH<=CntH; CntL<=CntL+1'b1; end end endmodule功能仿真波形图 仿电台整点报时的电路设计/Radio.vmodule Radio (ALARM_Radio,Minute,Second,_1kHzIN,_500Hz); input _1kHzIN,_500Hz; input 7:0 Minute,Second; output ALARM_Radio; reg ALARM_Radio; always (Minute or Second) if(Minute=8'h59) case (Second) 8'h51, 8'h53, 8'h55, 8'h57:ALARM_Radio=_500Hz; 8'h59:ALARM_Radio=_1kHzIN; default:ALARM_Radio=1'b0; endcase else ALARM_Radio=1'b0;Endmodule功能仿真波形图 数字钟主体电路的设计/top_clock.vmodule top_clock (Hour,Minute,Second,_1Hz,nCR,AdjMinKey,AdjHrKey);input _1Hz,nCR,AdjMinKey,AdjHrKey;output 7:0 Hour,Minute,Second;wire 7:0 Hour,Minute,Second;supply1 Vdd;wire MinCP,HrCP;/Hour:Minute:Second countercounter60 UT1(Second,nCR,Vdd,_1Hz);counter60 UT2(Minute,nCR,Vdd,MinCP);counter24 UT3(Hour7:4,Hour3:0,nCR,Vdd,HrCP);assign MinCP=AdjMinKey? _1Hz:(Second=8'h59);assign HrCP=AdjHrKey?_1Hz:(Minute,Second=16'h5959);Endmodule功能仿真波形图对计时器进位情况的仿真对计时、校时、校分和清零功能的仿真 定时闹钟模块设计/Bell.vmodule Bell(ALARM_Clock,Set_Hr,Set_Min,Hour,Minute,Second,SetHrKey,SetMinKey,_1kHzIN,_500Hz,1_Hz,CtrlBell);output ALARM_Clock;output 7:0 Set_Hr,Set_Min;wire 7:0Set_Hr,Set_Min;wire ALARM_Clock;input _1kHzIN,_500Hz,1_Hz;input SetHrKey,SetMinKey;input CtrlBell;input 7:0 Hour,Minute,Second;supply1 Vdd;wire HrH_EQU,HrL_EQU,MinH_EQU,MinL_EQU;wire Time_EQU;counter60 SU1(Set_Min,Vdd,SetMinKey,1_Hz);counter24 SU2(Set_Hr7:4,Set_Hr3:0,Vdd, SetHrKey,1_Hz);_4bitcomparator SU4(HrH_EQU,Set_Hr7:4,Hour7:4);_4bitcomparator SU5( HrL_EQU,Set_Hr3:0,Hour3:0);_4bitcomparator SU6( MinH_EQU,Set_Min7:4,Minute7:4);_4bitcomparator SU7( MinL_EQU,Set_Min3:0,Minute3:0);assign Time_EQU=(HrH_EQU&&HrL_EQU&&MinH_EQU&&MinL_EQU);assign ALARM_Clock=CtrlBell?(Time_EQU&&(Second0=1b1)&&_500Hz|(Second0=1b0)&&_1kHz):1b0;endmodule/_4bitcomparator .vmodule _4bitcomparator (EQU,A,B);input 3:0 A,B;output EQU;assign EQU=(A=B);endmodule功能仿真波形图五、实验心得体会 经过这次多功能数字钟电路的设计实验后,让我进一步的熟悉EDA软件使用、掌握Verilog设计方法及分模块分层次的设计方法。分计数器计满60后向小时计数器进位也让我知道了对Verilog语言的学习不仅是能读懂别人的程序,更重要的是能写出条理清晰的程序。通过做多功能数字钟,我发现自己对Verilog语言还不是很熟悉,接下来的时间要加强语言的学习,多看一些语言方面的书籍。