西安交大数电数字钟实验报告
- 格式:doc
- 大小:127.50 KB
- 文档页数:11
数电时钟实验报告
《数电时钟实验报告》
实验目的:
本次实验旨在通过搭建数字电子时钟电路,加深对数字逻辑电路的理解,掌握数字电子时钟的工作原理及实现方法。
实验原理:
数字电子时钟是一种基于数字电路的计时装置,其主要由振荡器、计数器、分频器、显示装置等组成。
振荡器产生稳定的方波信号作为时钟信号,计数器进行计数并输出计数结果,分频器对计数结果进行分频,最终通过显示装置将时间信息显示出来。
实验材料:
1. 74LS90(分频器);
2. 74LS47(BCD-7段译码器);
3. 555定时器;
4. 4位共阳极数码管;
5. 电路面包板、导线等。
实验步骤:
1. 按照电路图连接电路,注意电路连接的正确性;
2. 调节555定时器的参数,使其输出1Hz的稳定方波信号;
3. 将方波信号输入74LS90分频器,进行分频处理;
4. 将分频后的信号输入74LS47译码器,将其转换成7段数码管可以显示的信号;
5. 将译码后的信号输入数码管,观察数码管的显示效果;
6. 调节555定时器的参数,观察数码管的显示效果是否与实际时间一致。
实验结果:
经过调试,成功搭建了数字电子时钟电路,并且通过调节555定时器的参数,实现了数码管的秒表功能。
在实验过程中,我们深入理解了数字逻辑电路的工作原理,加深了对数字电子时钟的理解。
实验总结:
通过本次实验,我们不仅掌握了数字电子时钟的工作原理及实现方法,还加深了对数字逻辑电路的理解。
数字电子时钟作为数字电路的一个典型应用,对我们的专业学习和工程实践具有重要意义。
希望通过今后的实验学习,能够进一步提升自己的实验能力和理论水平。
数电实验实验名称:数字钟设计班级:姓名:学号:一、实验简介数字钟设计的关键在于产生秒脉冲、对秒脉冲计数并产生分和小时以及动态显示时、分、秒信息。
二、实验要求1)在开发板上运行有关程序2)设计一个完整的数字钟,小时和分钟用数码管显示,秒用发光二极管闪烁显示,每秒显示一次。
如有可能,请增加校时功能。
三、实验内容1.工程文件代码:module DigitalClock(input clk,input clr,input [1:0]en,input [5:0]data,output regsecled,output reg [6:0]atg,output reg [3:0]an);reg [3:0]led1,led2,led3,led4; reg [16:0]clkdiv;reg [3:0]hour1;reg [3:0]hour2;reg [3:0]min1;reg [3:0]min2;reg [26:0]q1;reg [3:0]digit;reg [7:0]sec;reg [1:0]s;integer i;initial beginhour2=1;hour1=2;min2=1;min1=2;sec=0;led4=hour2;led3=hour1;led2=min2;led1=min1;secled=0;clkdiv=0;endalways @(*)beginan=4'b1111;s<=clkdiv[16:15];an[s]=0;case(s)0: digit<=led4;1: digit<=led3;2: digit<=led2;3: digit<=led1;default: digit<=led4;endcasecase(digit)0: atg = 7'b0000001;//01: atg = 7'b1001111;//12: atg = 7'b0010010;//23: atg = 7'b0000110;//34: atg = 7'b1001100;//45: atg = 7'b0100100;//56: atg = 7'b0100000;//67: atg = 7'b0001111;//78: atg = 7'b0000000;//89: atg = 7'b0000100;//9'hA: atg = 7'b0000001;//10-10 to be revised'hB: atg = 7'b1001111;//11-10'hC: atg = 7'b0010010;//12-10'hD: atg = 7'b0000110;//13-10'hE: atg = 7'b1001100;//14-10'hF: atg = 7'b0100100;//15-10default: atg = 7'b0000001;endcaseendalways @(posedgeclk)beginclkdiv<= clkdiv+1;end(时钟程序)always @(posedgeclk or posedgeclr)beginif(clr == 1)beginsec<=0;q1<=0;hour1<=0;hour2<=0;min1<=0;min2<=0;led4=0;led3=0;led2=0;led1=0;end(分钟调节模块)else if(en==2'b00)beginif(q1 == 50000000)beginq1<=0;secled=1;led4=hour2;led3=hour1;led2=min2;led1=min1;sec<=sec+1;if(sec == 59)beginsec<=0;min1<=min1+1;if(min1 == 9)beginmin1<=0;min2<=min2+1;endif(min1==9&&min2==5)beginmin1<=0;min2<=0;hour1<=hour1+1;if(hour1==9)beginhour1<=0;hour2<=hour2+1;endif(hour2==2&&hour1==3)beginhour1<=0;hour2<=0;endendendendelse if(q1==25000000)beginsecled=0;q1<=q1+1;endelseq1<=q1+1;end(小时调节模块)else if(en==2'b01)//change minbeginif (data<60)beginfor(i=0;i<6;i=i+1)beginif(data-i*10<10)beginmin1<=data-10*i;min2<=i;i=6;endendled4=hour2;led3=hour1;led2=min2;led1=min1;endendelse if(en==2'b10)//change hourbeginif(data<24)beginfor(i=0;i<3;i=i+1)beginif(data-i*10<10)beginhour1<=data-10*i;hour2<=i;i=3;endendendled4=hour2;led3=hour1;led2=min2;led1=min1;endendendmodule2.约束文件代码:NET "atg[0]" LOC = M12;NET "atg[1]" LOC = L13;NET "atg[2]" LOC = P12;NET "atg[3]" LOC = N11;NET "atg[4]" LOC = N14;NET "atg[5]" LOC = H12;NET "atg[6]" LOC = L14;NET "an[0]" LOC = K14;NET "an[1]" LOC = M13;NET "an[2]" LOC = J12;NET "an[3]" LOC = F12;NET "clk" LOC = B8;NET "clr" LOC = G12;NET "secled" LOC = M5;NET "en[1]" LOC = N3;NET "en[0]" LOC = E2;NET "data[5]" LOC = F3;NET "data[4]" LOC = G3;NET "data[3]" LOC = B4;NET "data[2]" LOC = K3;NET "data[1]" LOC = L3;NET "data[0]" LOC = P11;四、实验心得体会相比之前的几次上机实验,这次的实验代码花的时间要多一些,不过这次实验同样成就感也要高一些,毕竟数字钟和生活关联比较大,这让我初步了解了Verilog语音和生活中我们所用的一些电子器件的联系。
西安交通大学数字电子技术实验报告实验三、ISE基础实验预习:(1)安装ISE13.4软件。
(2)按照视频文件“Verilog语言输入法D_Flip_Flop.exe”进行演练。
实验内容和步骤:下载开发板相关器件的Datasheet,了解其性能。
按照P249附录A“FPGA实验预习报告模板”中的内容和步骤,完成D触发器的设计、综合、实现、仿真和下载全过程,熟悉ISE编程环境和用Adept下载编程文件的方法。
1.在G盘用自己的学号建立文件夹,进入用自己学号建立的文件夹后,再建立本次实验的文件夹,及本次实验所建工程的文件夹,文件夹名可以起名为:D_Flip_Flop、My_FirstISE、或Experiment_1、或Test_1,等等。
2.建立工程文件。
3.输入D触发器的Verilog程序。
4.编写D触发器的约束文件。
5.综合、实现及生成编程文件。
6.基于ISim的行为仿真。
7.采用Adept软件下载*.bit 程序到开发板。
8.测试D触发器的逻辑功能。
通过D触发器设计熟悉ISE软件后,自己设计一个门电路,例如与非门,重复以上ISE 软件的使用步骤。
验收:1.按照老师布置的逻辑门电路设计Verilog语言程序、约束文件、下载、仿真。
要能说明任一时刻输入输出的逻辑关系。
2.能够用开发板演示所设计的逻辑功能。
实验程序1.VERILOG工程文件module D_Flip_Flop(input clk,input set,input D,input clr,output reg q //注意:always模块中的输出必须是寄存器型变量);always @(posedge clk or posedge clr or posedge set)beginif(clr) q<=0;else if(set) q<=1;else q<=D;endendmodule2.约束文件NET "clk" LOC ="B8"; //时钟NET "D" LOC ="N3"; //SW7NET "set" LOC ="L3"; //SW1NET "clr" LOC ="P11"; //SW0NET "q" LOC ="G1"; //LD73.仿真文件module test_D_Flip_Flop;// Inputsreg clk;reg set;reg D;reg clr;// Outputswire q;// Instantiate the Unit Under Test (UUT) D_Flip_Flop uut (.clk(clk),.set(set),.D(D),.clr(clr),.q(q));initial begin// Initialize Inputsclk=0;set=1;D=0;clr=0;// Wait 100 ns for global reset to finish #100;// Add stimulus hereEndalways#10clk=~clk;always#12D=~D;always#33clk=~clk;always#42set=~set;endmodule仿真结果:实验四、组合逻辑电路实验Ⅰ(2学时)组合逻辑Ⅰ:(1)使用VERILOG设计一个新的逻辑功能(比如四输入或门、或非门、与或非门等等),并在开发板上验证,比如:进实验室前编写好VERILOG源文件、约束文件和仿真文件(见4.1.2,P101(2))。
一、摘要本次实训旨在通过设计和制作一个数字时钟,加深对数字电子技术理论知识的理解,提高动手实践能力。
在实训过程中,我们学习了数字钟的原理、电路设计、元件选择、焊接调试等技能。
最终,我们成功制作出了一个具有时、分、秒显示功能的数字时钟,并通过实际运行验证了其功能。
二、实训目的1. 掌握数字电子钟的原理和设计方法。
2. 熟悉常用数字电路元件的功能和特性。
3. 提高动手实践能力,培养创新意识。
4. 增强团队协作精神,提高沟通能力。
三、实训内容1. 数字钟原理数字钟是一种将时间信息转换为数字信号,并通过数码管显示的电子计时设备。
其基本原理是利用石英晶体振荡器产生稳定的时钟信号,通过计数器进行计数,并通过译码器和数码管显示时间。
2. 电路设计本次实训采用以下电路设计:(1)时钟信号产生:利用555定时器产生1Hz的时钟信号。
(2)秒计数器:采用CD4060计数器,实现秒的计数。
(3)分计数器:采用CD4518计数器,实现分的计数。
(4)时计数器:采用CD4518计数器,实现时的计数。
(5)译码器:采用CD4511译码器,将计数器的输出信号转换为数码管所需的信号。
(6)数码管显示:采用共阴极七段数码管,显示时、分、秒。
3. 元件选择本次实训选用的元件如下:(1)时钟信号产生:555定时器、电阻、电容。
(2)计数器:CD4060、CD4518。
(3)译码器:CD4511。
(4)数码管显示:共阴极七段数码管。
(5)其他元件:电阻、电容、电位器、晶体管、开关等。
4. 焊接调试(1)按照电路图进行元件焊接。
(2)检查电路连接是否正确,并进行初步调试。
(3)调整电位器,使数码管显示正确的时间。
(4)测试电路功能,确保时、分、秒显示准确。
四、实训总结1. 通过本次实训,我们掌握了数字电子钟的原理和设计方法,熟悉了常用数字电路元件的功能和特性。
2. 在实训过程中,我们提高了动手实践能力,培养了创新意识。
3. 团队协作精神得到了加强,沟通能力得到提高。
数字时钟设计实验报告一、设计要求:设计一个24小时制的数字时钟。
要求:计时、显示精度到秒;有校时功能。
采用中小规模集成电路设计。
发挥:增加闹钟功能。
二、设计方案:由秒时钟信号发生器、计时电路和校时电路构成电路。
秒时钟信号发生器可由振荡器和分频器构成。
计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。
校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。
三、电路框图:图一数字时钟电路框图四、电路原理图:(一)秒脉冲信号发生器秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。
由振荡器与分频器组合产生秒脉冲信号。
振荡器: 通常用555定时器与RC构成的多谐振荡器,经过调整输出1000Hz脉冲。
分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz标准秒脉冲。
其电路图如下:译码器译码器译码器时计数器分计数器秒计数器校时电路秒信号发生器图二秒脉冲信号发生器(二)秒、分、时计时器电路设计秒、分计数器为60进制计数器,小时计数器为24进制计数器。
60进制——秒计数器秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。
当计数到59时清零并重新开始计数。
秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。
个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。
利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。
其电路图如下:图三 60进制--秒计数电路60进制——分计数电路分的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。
数字钟实验报告5篇范文第一篇:数字钟实验报告数字钟实验报告班级:电气信息i类112班实验时间:实验地点:指导老师:目录一、实验目的-----------------3二、实验任务及要求--------3三、实验设计内容-----------3(一)、设计原理及思路3(二)、数字钟电路的设计--------------------------4(1)电路组成---------4(2)方案分析---------10(3)元器件清单------11四、电路制版与焊接---------11五、电路调试------------------12六、实验总结及心得体会---13七、组员分工安排------------19一、实验目的:1.学习了解数码管,译码器,及一些中规模器件的逻辑功能和使用方法。
2.学习和掌握数字钟的设计方法及工作原理。
熟悉集成电路的引脚安排,掌握各芯片的逻辑功能及使用方法了解面包板结构及其接线方法。
3.了解pcb板的制作流程及提高自己的动手能力。
4.学习使用protel软件进行电子电路的原理图设计、印制电路板设计。
5.初步学习手工焊接的方法以及电路的调试等。
使学生在学完了《数字电路》课程的基本理论,基本知识后,能够综合运用所学理论知识、拓宽知识面,系统地进行电子电路的工程实践训练,学会检查电路的故障与排除故障的一般方法锻炼动手能力,培养工程师的基本技能,提高分析问题和解决问题的能力。
二、实验任务及要求1.设计一个二十四小时制的数字钟,时、分、秒分别由二十四进制、六十进制、六十进制计数器来完成计时功能。
2.能够准确校时,可以分别对时、分进行单独校时,使其到达标准时间。
3.能够准确计时,以数字形式显示时、分,发光二极管显示秒。
4.根据经济原则选择元器件及参数;5..小组进行电路焊接、调试、测试电路性能,撰写整理设计说明书。
三、实验设计内容1、设计原理及思路 3.1数字钟的构成数字钟一般由振荡器、分频器、计数器、译码器、显示器、较时电路、报时电路等部分组成,这些都是数字电路中应用最广的基本电路3.2原理分析数字钟实际上是一个对标准频率(1hz)进行计数的计数电路。
数电数字钟实验报告篇一:西安交大数电数字钟实验报告西安交通大学数字电子技术实验报告数字钟设计姓名:**学院:**学院班级:**22学号:212******5一、实验名称基于Verilog HDL设计的多功能数字钟二、试验任务及要求实验要求以Verilog HDL语言为手段,设计多功能数字钟。
多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。
整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。
在实验中为了显示与编写方便,该设计采用一个位24位二进制码[23:0]cnt记录时间,每四位记录一个数,从高到低分别为时针十位、时针个位、分针十位、分针个位、秒针十位、秒针个位。
实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。
关于调整时间功能,该设计采用四个按钮调整对应位的数值,从而调整时间。
三、实验条件该实验以Verilog HDL语言为手段,以Xilinx ISE Design Suite 13.4_1软件实现源程序的综合与仿真,并用BASYS2开发板作为目标器件。
四、设计过程1. 列写多功能数字钟设计--层次结构图2.拟定数字钟的组成框图,在Xilinx ISE Design Suite 13.4_1软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路;3.设计各单元电路并进行仿真;4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合;5.下载到Basys2实验平台上,实际测试数字钟的逻辑功能。
五、 Verilog代码module clock(input clk,input en,input key1,input key2,input key3,input key4,output sec,output wire[7:0] seg,output wire[3:0] digit);wire[3:0] num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,nu m3);endmodule//////////////////////////////////// module disp(input clk,input [3:0] num0,input [3:0] num1,input [3:0] num2,input [3:0] num3,output reg[7:0] sm_seg,output reg[3:0] an);reg[1:0] s;reg[3:0] digit;reg[16:0] clkdiv;always@(*)beginan=4'b1111;s an[s]=0;case(s)0:digit1:digit2:digit3:digit default:digit endcasecase(digit)4'h0 : sm_seg = 8'hc0;// "0" 4'h1 : sm_seg = 8'hf9;// "1" 4'h2 : sm_seg = 8'ha4;// "2" 4'h3 : sm_seg = 8'hb0;// "3" 4'h4 : sm_seg = 8'h99;// "4" 4'h5 : sm_seg = 8'h92;// "5" 4'h6 : sm_seg = 8'h82;// "6" 4'h7 : sm_seg = 8'hf8;// "7" 4'h8 : sm_seg = 8'h80;// "8" 4'h9 : sm_seg = 8'h90;// "9" default : sm_seg = 8'hff;// "x" endcase endalways@(posedge clk)clkdiv Endmodule/////////////////////////////////////////// module clk_gen(input clk,input en,input bt0,input bt1,input bt2,input bt3,output reg sec,output [3:0] num0,output [3:0] num1,output [3:0] num2,output [3:0] num3);reg[25:0] ctr;reg[3:0] mytime[3:0];reg[7:0] s;assign num0=mytime[0];assign num1=mytime[1];assign num2=mytime[2];assign num3=mytime[3];always@(posedge clk)beginctr if(ctr==-1)beginctr sec endend//wire sen;//assign sen=(sec)|(bt0)|(bt1)|(bt2)|(bt3);always@(negedge sec)if(!en)beginif(bt0)beginmytime[0] if(mytime[0]==9) mytime[0] else if(bt1)beginmytime[1] if(mytime[1]==5) mytime[1] else if(bt2)beginmytime[2] if(mytime[2]==9) mytime[2] else if(bt3)beginmytime[3] if(mytime[3]==2) mytime[3] end elsebegins if(s==59)篇二:数电课程实验报告——数字钟的设计《数字电子技术》课程设设计题目:班级学号:学生姓名:指导教师:时间:计报告数字钟的设计 XX年12月27日~XX年1月2日《数字电子技术》课程设计任务书一、设计题目:数字钟的设计二、设计任务与要求:1.时钟显示功能,能够以十进制显示“时”、“分”、“秒”。
数字电路时钟实训报告(一)数字电路时钟实训报告1. 概述•本报告旨在介绍数字电路时钟实训的相关内容,包括实训目的、实训过程和实训结果。
2. 实训目的•熟悉数字电路时钟的基本原理和设计思路•掌握数字电路时钟的硬件组成和功能模块•实践运用数字电路知识,完成时钟的设计和制作3. 实训过程1.准备材料–数字电路实验箱–电源线、信号线等连接器–电路元件:集成电路、电容器、电阻等–示波器、万用表等测试仪器2.设计方案–根据时钟的要求和功能需求,设计数字电路时钟的电路图–确定所需的集成电路和其他电路元件3.电路搭建–使用实验箱和连接器搭建数字电路时钟的电路–按照电路图连接电路元件和集成电路4.测试和调试–使用示波器、万用表等测试仪器对电路进行测试–检查电路是否按照设计要求工作5.验证功能–测试时钟的各项功能是否正常工作–验证时钟在不同时间段的准确性和稳定性4. 实训结果•完成数字电路时钟的设计和制作•时钟的各项功能正常工作•时钟在不同时间段具有准确性和稳定性5. 总结•通过本次数字电路时钟的实训,我深入了解了数字电路时钟的工作原理和设计流程。
通过实践操作,我掌握了数字电路时钟的搭建和调试方法,提高了数字电路设计能力。
这次实训对我的专业技能和实践能力的提升具有重要意义。
以上是本次数字电路时钟实训的报告内容。
实训过程中,我认真完成了任务,获得了实践经验,并与同学们共同交流和学习,提高了团队合作能力。
希望今后能继续深入学习和应用数字电路知识,为未来的科研和工作打下坚实的基础。
6. 遇到的问题和解决方法•在实训过程中,我遇到了几个问题:1.电路搭建困难:由于电路图复杂,部分连接容易混淆和出错。
解决方法是多次仔细核对电路图,注意连接的正确性,并请教老师和同学的帮助。
2.电路测试困难:有时测试仪器的操作和数据读取不够准确,导致测试结果不确定。
解决方法是认真阅读仪器的使用说明书,熟悉操作步骤,并与同学们共同研究和解决问题。
数字时钟实验报告一、实验目的本次数字时钟实验的主要目的是设计并实现一个能够准确显示时、分、秒的数字时钟系统,通过该实验,深入理解数字电路的原理和应用,掌握计数器、译码器、显示器等数字电路元件的工作原理和使用方法,提高电路设计和调试的能力。
二、实验原理1、时钟脉冲产生电路时钟脉冲是数字时钟的核心,用于驱动计数器的计数操作。
本实验中,采用石英晶体振荡器产生稳定的高频脉冲信号,经过分频器分频后得到所需的秒脉冲信号。
2、计数器电路计数器用于对时钟脉冲进行计数,分别实现秒、分、时的计数功能。
秒计数器为 60 进制,分计数器和时计数器为 24 进制。
计数器可以由集成计数器芯片(如 74LS160、74LS192 等)构成。
3、译码器电路译码器将计数器的输出编码转换为能够驱动显示器的信号。
常用的译码器芯片有 74LS47(用于驱动共阳数码管)和 74LS48(用于驱动共阴数码管)。
显示器用于显示数字时钟的时、分、秒信息。
可以使用数码管(LED 或 LCD)作为显示元件。
三、实验器材1、集成电路芯片74LS160 十进制计数器芯片若干74LS47 BCD 七段译码器芯片若干74LS00 与非门芯片若干74LS10 三输入与非门芯片若干2、数码管共阳数码管若干3、电阻、电容、晶振等无源元件若干4、面包板、导线、电源等四、实验步骤1、设计电路原理图根据实验原理,使用电路设计软件(如 Protel、Multisim 等)设计数字时钟的电路原理图。
在设计过程中,要合理布局芯片和元件,确保电路连接正确、简洁。
按照设计好的电路原理图,在面包板上搭建实验电路。
在搭建电路时,要注意芯片的引脚排列和连接方式,避免短路和断路。
3、调试电路接通电源,观察数码管是否有显示。
如果数码管没有显示,检查电源连接是否正确,芯片是否插好。
调整时钟脉冲的频率,观察秒计数器的计数是否准确。
如果秒计数器的计数不准确,检查分频器的连接是否正确,晶振的频率是否稳定。
数字电路电子钟设计实验报告目录1.实验目的2.实验题目描述和要求3.设计报告内容3.1实验名称3.2实验目的3.3实验器材及主要器件3.4数字电子钟基本原理3.5数字电子钟制作与调试3.6数字电子钟电路图3.7数字电子钟的组装与调试4.实验结论5.实验心得1.实验目的※掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法;※进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;※提高电路布局﹑布线及检查和排除故障的能力;※培养书写综合实验报告的能力。
2.实验题目描述和要求(1)数字电子钟基本功能数字电子钟是一个大众化产品,一般来讲应具有以下基本功能。
①能进行小时、分、秒显示。
②能进行小时、分、秒设置。
③能实现整点报时。
④能通过设置,实现任意时间报时。
(2)数字电子钟基本性能一个实用的数字电子钟应满足三个“度”:精度、亮度和响度。
①精度是指显示的时间必须准确。
②亮度是指显示的时间必须让人看得清楚。
③响度是指报时的声音必须清脆有力。
(3)数字电子钟用于教学设计时必须考虑的因素从教学角度来看,数字电子钟的设计应考虑以下几点。
①数字电路可由多种不同方案实现,在方案比较时应着重考虑所选用的方案在设计时能否把数字电路包含的主要知识全部囊括进去。
②应把数字电子钟分解成若干个模块,并在印制电路板设计时把各模块固定在不同的区域。
③应确保大多数学生能在规定时间内完成制作与调试。
④数字电子钟印制电路板(PCB)设计时除留下足够的训练内容让学生完成外,应设计一标准印制电路板设计示范区。
(4)本教材设计的数字电子钟总体方案根据以上分析,本教材把数字电子钟分解为信号电路、显示电路、计时电路、校时电路和报时电路五个功能相对独立的模块(如图8-1所示),采用如图8-2所示的设计方案,并按要求实施时参照一下规定进行。
①各模块的制作、调试按显示电路、信号电路、计时电路、校时电路和报时电路的顺序进行。
实验名称:时序电路实验一.实验目的:1.学习使用HDL进行时序电路设计;2.学习编辑顶层文件和用户约束文件;3.熟悉同步和异步的概念及实现方法;4.熟悉在Basys2开发板简单外围设备的控制;5.熟悉时钟的分频方法及占空比的调节。
二.预习内容1.用HDL设计一个秒脉冲(1s,2s,3s)发生器,并用LED显示:分析:本电路设计主要分为三个部分:分频,计数,译码1.1HDL源文件(Verilog):module mod10(input clk, clr,output reg[6:0] a_to_g,output wire[3:0]an,output reg[3:0]q);assign an = 4'b1110;//最右译码管使能reg [26:0] counter;//时钟分频,默认时钟为50MHZ,分频为1HZ,即周期为1salways @ (posedge clk)counter <= 0;//达到一半时计数归零elsecounter <= counter + 1;reg clk_div;//引入新的电平always @ (posedge clk )//达到一半时电平翻转,使占空比为50%,同理可知,要使脉冲的周期变为2s、3s,只需用50MHZ除以相应的频率,得到所需分频数(,).然后引入一个新的寄存变量,使它在达到分频数一半时翻转,同时计数归零。
这样就得到了所需的频率,并且保证了占空比为50%。
//带有异步清零的十进制计数器always @ (posedge clk_div or posedge clr)beginif(clr==1)q <= 0;else if (q == 9)q <= 0;elseq <= q + 1;endalways @(*)case (q)0:a_to_g = 7'b0000001;1:a_to_g = 7'b1001111;2:a_to_g = 7'b0010010;3:a_to_g = 7'b0000110;4:a_to_g = 7'b1001100;5:a_to_g = 7'b0100100;6:a_to_g = 7'b0100000;7:a_to_g = 7'b0001111;8:a_to_g = 7'b0000000;9:a_to_g = 7'b0001100;default:a_to_g = 7'b0000001;endcaseendmodule1.2Basys2约束文件:NET "q[0]" LOC = "G1";NET "a_to_g[0]" LOC = "M12";NET "a_to_g[1]" LOC = "L13";NET "a_to_g[2]" LOC = "P12";NET "a_to_g[3]" LOC = "N11";NET "a_to_g[4]" LOC = "N14";NET "a_to_g[5]" LOC = "H12";NET "a_to_g[6]" LOC = "L14";NET "an[3]" LOC = "K14";NET "an[2]" LOC = "M13";NET "an[1]" LOC = "J12";NET "an[0]" LOC = "F12";NET "clk" LOC = "B8";NET "clr" LOC = "G12";2.设计一个带有异步清零和置数信号(置数为全逻辑1)的4位寄存器,并在开发板上验证2.1HDL源文件:module regf(clr,clk,d,load,q);input wire clk;input wire clr;input wire load;input [3:0]d;output [3:0]q;reg [3:0] q;always @ (posedge clk or posedge clr)beginif (clr == 1)q <= 0;//异步清零else if (!clr&&load)beginq[0]<=1;q[1]<=1;q[2]<=1;q[3]<=1;end//同步置数elseq <= d;endendmodule2.2约束文件:NET "clk" LOC = "B8";NET "clr" LOC = "P11";NET "load" LOC ="L3";NET "q[3]" LOC = "G1";NET "q[2]" LOC = "P4";NET "q[1]" LOC = "N4";NET "q[0]" LOC = "N5";NET "d[3]" LOC = "G3";NET "d[2]" LOC = "F3";NET "d[1]" LOC = "E2";NET "d[0]" LOC = "N3";2.3仿真文件:module regftest;// Inputsreg clr;reg clk;reg [3:0] d;reg load;// Outputswire [3:0] q;// Instantiate the Unit Under Test (UUT)regf uut (.clr(clr),.clk(clk),.d(d),.load(load),.q(q));initial begin// Initialize Inputsclr = 0;clk = 0;d = 0;load = 0;// Wait 100 ns for global reset to finish#100;// Add stimulus hereclr = 1;#200;clr = 0; clk = 1; d = 0100;#200;clr = 0; clk = 0; d = 1100;#200;clr = 0; clk = 1; d = 1001;#200;clr = 0; clk = 0; d = 0011;#200;clr = 0; clk = 1; d = 0000;#200;clr = 0; clk = 0; d = 0010;#200;clk = 1;load = 1;endendmodule2.4仿真图像:。
一、引言随着科技的发展,数字电路在各个领域得到了广泛应用。
数字钟作为一种典型的数字电路应用,具有走时准确、显示直观、无机械传动装置等优点,在日常生活、工业控制等领域发挥着重要作用。
本次实训旨在通过设计、制作和调试数字钟,加深对数字电路原理的理解,提高动手能力和实践能力。
二、实训目的1. 掌握数字钟的设计原理,了解数字电路的基本组成和功能。
2. 学会使用数字电路元器件,包括计数器、译码器、显示器等。
3. 提高动手能力和实践能力,培养团队合作精神。
4. 了解数字电路在实际应用中的优缺点,为以后的学习和工作打下基础。
三、实训内容1. 数字钟电路设计(1)设计思路:采用CMOS集成电路,以石英晶体振荡器作为时钟源,通过分频器得到1Hz脉冲信号,然后通过计数器进行计数,最后通过译码器和显示器显示时间。
(2)电路组成:主要包括以下部分:- 晶体振荡器:产生稳定频率的振荡信号;- 分频器:将振荡信号分频得到1Hz脉冲信号;- 计数器:对1Hz脉冲信号进行计数,得到时、分、秒;- 译码器:将计数器的输出转换为对应的数字信号;- 显示器:将数字信号显示在显示器上。
2. 数字钟电路制作与调试(1)元器件选择:根据设计要求,选择合适的元器件,如计数器、译码器、显示器、晶体振荡器等。
(2)电路焊接:按照电路图进行焊接,注意焊接质量,避免虚焊、短路等现象。
(3)电路调试:对电路进行调试,检查各个部分是否正常工作,包括晶体振荡器、分频器、计数器、译码器和显示器等。
四、实训过程1. 设计阶段:查阅相关资料,了解数字钟的设计原理,确定电路设计方案,绘制电路图。
2. 制作阶段:根据电路图,选择合适的元器件,进行焊接,注意焊接质量。
3. 调试阶段:对电路进行调试,检查各个部分是否正常工作,发现问题并及时解决。
五、实训结果1. 成功制作并调试了一台数字钟,实现了时、分、秒的显示。
2. 熟练掌握了数字电路元器件的使用方法,提高了动手能力。
数电课程实验报告——数字钟的设计
本次实验以数字钟的设计为主,目的是说明实现一个独立的数字钟的时钟电路的实验、设计。
首先,在实验之前,首先对大致原理和框图必须做到熟练。
电路的结构可以由电
路示意图获得,由此确定可采用的元件型号,以确定具体的电路框图。
随后,根据设计需求,确定每一部分的具体参数,精心测试,并在最终的方案中执行。
其次,进行实验,实验过程中,在测试电路的过程中,步骤要清晰,仔细进行夹线,
以实现一部完整的设计构思。
其中,要将LED灯和各个元件进行夹线,以输出一个完整
的数字钟图像,经过验证后,灯光和接线方式都是正确的。
最后,证实了数字钟电路操作的功效,与预期相符并可实现完美的数字时钟。
该实验
能够帮助我们更加深入了解电路设计,提升此类电路的设计能力,以及在实际应用中的能力。
总的来说,本次数字钟的实验表明,要想设计出一个成功的数字钟,除了要仔细设计
静态和动态电路以外,还要注意正确夹线,保证LED灯的正确连接,以及各个电路的回路
的正确连接。
此外,仔细观察、调试实验数据,并及时发现和纠正可能存在的差错,也至
关重要。
只有将这些要点全部结合起来,才能够做出一个准确、有效的数字时钟。
数字钟实验报告本次实验旨在通过搭建数字钟电路,实现显示时间的功能。
实验所需材料有,数字管、集成电路、电阻、电容、开关、LED灯等。
首先,我们按照电路图连接好各个元件,然后接通电源,观察数字管上显示的时间是否准确。
在实验过程中,我们还发现了一些问题,并进行了相应的解决方法。
在实验开始之前,我们首先对实验所需的元件进行了准备工作。
然后按照电路图连接好数字管、集成电路、电阻、电容、开关等元件,确保连接的稳固性和正确性。
接着,我们接通电源,发现数字管上的显示并不准确,有时会出现闪烁或者停止显示的情况。
经过仔细检查,我们发现是由于电阻值选择不当导致的,于是我们更换了合适的电阻,问题得以解决。
接着,我们对实验中出现的问题进行了总结和分析。
我们发现在电路连接过程中,要特别注意元件之间的连接方式和电阻、电容的数值选择,这对于电路的稳定性和准确性至关重要。
另外,实验中还需要注意防止元件的过热和烧坏,要时刻保持警惕,及时发现并解决问题。
通过本次实验,我们对数字钟的原理和搭建方法有了更深入的了解,也学会了在实际操作中如何发现问题并解决问题。
这对我们今后的学习和工作都具有一定的指导意义。
总的来说,本次实验取得了一定的成果,我们成功搭建了一个能够显示时间的数字钟电路,并且在实验过程中发现了一些问题并进行了解决。
通过这次实验,我们不仅学到了理论知识,也积累了实际操作经验,对我们的专业学习和未来的科研工作都具有一定的帮助和指导意义。
希望通过今后的实验和学习,我们能够进一步提高自己的动手能力和实际操作能力,为将来的科研工作打下坚实的基础。
同时,也希望能够将所学知识应用到实际工程中,为社会发展做出自己的贡献。
实习报告:数字钟设计与实现一、实习目的本次实习的主要目的是通过设计和实现一个数字钟,深入理解数字电路的基本原理和应用,提高自己的实际操作能力和解决问题的能力。
同时,通过实习过程,了解电子钟表的工作原理,掌握数字电路的设计方法和流程。
二、实习内容1. 数字钟的设计:以单片机为核心,设计一个具有小时、分钟、秒数显示功能的数字钟。
2. 数字电路的实现:使用数字电路元件,如电阻、电容、二极管、三极管等,搭建数字钟的电路。
3. 程序编写:编写程序代码,实现数字钟的功能。
4. 系统调试:对数字钟进行调试,确保其正常运行。
三、实习过程1. 设计阶段:在老师的指导下,学习数字电路的基本原理,了解数字钟的设计方法。
通过查阅资料,确定数字钟的显示方式、时钟源等参数。
2. 实现阶段:根据设计方案,购买所需元件,搭建数字钟的电路。
在搭建过程中,遇到一些问题,如电路连接错误、元件损坏等,通过请教老师和同学,逐步解决问题。
3. 编程阶段:学习单片机的编程语言,如C语言,编写数字钟的程序代码。
在编程过程中,遇到一些难题,如时序问题、数据处理等,通过查阅资料、请教老师和同学,克服困难,完成编程。
4. 调试阶段:对数字钟进行调试,发现一些问题,如显示不稳定、时间误差等,分析原因,修改程序和电路,直至数字钟正常运行。
四、实习收获1. 理论知识:通过实习,掌握了数字电路的基本原理和单片机编程技术,为今后的学习和工作奠定了基础。
2. 实际操作能力:在实习过程中,学会了使用电子工具,如万用表、示波器等,提高了自己的实际操作能力。
3. 团队协作能力:在实习过程中,与同学们共同解决问题,分工合作,培养了团队协作能力。
4. 解决问题能力:在实习过程中,遇到许多问题,如电路连接错误、编程难题等,通过请教老师、查阅资料和与同学讨论,逐步解决问题,提高了自己的解决问题的能力。
五、实习总结通过本次实习,我对数字电路和单片机编程有了更深入的了解,提高了自己的实际操作能力和解决问题的能力。
数电数字钟实训报告实训总结随着炎炎夏日的慢慢淡去,我开始了我的大二学习生涯。
大二学习生涯开始之初,我们便进入了紧张的数字电子技术实训周。
数字电子技术实训周要做的产品是数字电子钟。
由于老师给了我们元器件的清单,所以在实训周的到来之前,我们宿舍的人都已经把做数字电子钟要用的元器件都买好了。
因此,实训中央一来临我就可以整理“装备”上阵了。
本来以为会像上次的实训周一样,我是第二批去做实训的,结果被告知第一批和第二批要互换。
说实在的,这对我来说无疑是个打击,因为个人觉得如果我第二批做实训的话,这样在我做数字电子钟产品时就可以有较多的人可以请教了。
唉!世事难料啊!就这样,带着略有点失的心情我开始了我的实训周。
我们这次实训的第一天上午是由实训指导老师给我们总的讲了一下实训需要做的数字电子钟的各部分的组成电路。
一个完整的数字电子钟由555定时器、分频器、计数器、译码显示器、校时电路、整点报时六大部分组成,而且指导老师还说做到了555定时器、分频器、计数器、译码显示器这四部分就可以那及格的成绩,做了555定时器、分频器、计数器、译码显示器这四部分再加上校时电路或整点报时两个中的其中一个就可以那良好,六个部分全部都做可以那优秀,最重要的是还有电路图给我们,听到这里个个都很开心,并且个个心里都在计划着那良好不成问题,结果当老师讲到电路是错误的,而且要自己修改并加以设计,自己验证后觉得可以安全使用了才可以开始焊接电路板。
这样对元器件的保护比较好,别人我是不知道啦,反正我听到这里就在想:这样看来,我拿不拿得到及格都是个问题咯!电路图要自己设计,还得找错误再自己修改我们这次做数字电子钟所用的元器件主要是NE555N定时器、CD4518十进制计数器、CC4511显示译码器、FLED共阴极数码管、两输入与非门CD4011、四输入与非门CD4012,各种阻值的电阻和电容、三极管、蜂鸣器、开关。
我原本打算做555定时器、分频器、计数器、译码显示器这四个主要部分和整点报时的,结果真如我当初想的一样,实际操作起来困难重重,就连做前面的四个基础部分我都做得很无奈。
课题一数字电子钟电子钟是一种高精度的计时工具,它采用了集成电路和石英技术,因此走时精度高,稳定性能好,使用方便,且不需要经常调校。
电子钟根据显示方式不同,分为指针式电子钟和数字式电子钟。
指针式电子钟采用机械传动带动指针显示;而数字式电子钟则是采用译码电路驱动数码显示器件,以数字形式显示。
这些译码显示器件,利用集成技术可以做的非常小巧,也可以另加一定的驱动电路,推动霓红灯或白炽灯显示系统,制做成大型电子钟表。
因此,数字式电子钟用途非常广泛。
一、课程设计(综合实验)的目的与要求设计一个具有如下功能的数字电子钟:1.基本功能(1)能直接显示时、分、秒;(2)能正确计时,小时采用二十四进制,分和秒采用60进制;(3)有校时功能,手动调整时、分;2.扩展功能(1)能进行24小时整点报时,要求从59分50秒开始,每2秒钟响一声,共响5次;每响一次声音持续0.5秒。
(2)要求只在6--22点之间每整点报时,23--5点之间整点不报时;(3)具有任意几点几分均可响铃的闹钟控制电路。
响铃1分钟,可人为通过开关使响铃提前终止;二、设计(实验)正文数字电子钟实际上是一个对标准频率(1HZ)进行计数并通过数码管显示的计数电路,由于计数的起始时间与标准时间(如北京时间)不一致,故需要在电路上加一个校时电路。
标准的1HZ时间信号必须准确稳定,可以使用555定时器设计1HZ的振荡电路。
时间计数电路由秒计数器(个位,十位)、分计数器(个位,十位)电路构成,秒个位和秒十位计数器、分个位和分十位计数器均为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。
1.系统原理框图如下:2.1 分、秒计时器分、秒计时器均为60进制计数器,当秒计时器接受到一个秒脉冲时,秒计数器个位开始从1计数到9,同时在个位计数产生进位时将进位接秒计数器的十位计数器CLK,此时秒显示器将显示00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、...、59、00,当分计数器产生进位时,将会在进位端产生高电平,进而触发电路,驱动蜂鸣器,起到整点报时的功能。
数字时钟设计实验报告一、实验目的本次数字时钟设计实验的主要目的是通过运用数字电路的知识和技能,设计并实现一个能够准确显示时、分、秒的数字时钟。
通过这个实验,加深对数字电路中计数器、译码器、显示器等基本组件的理解和运用,提高电路设计和调试的能力。
二、实验原理数字时钟的基本原理是通过对时钟信号进行计数和分频,将时间信息转换为数字信号,并通过译码器和显示器进行显示。
1、时钟信号产生通常使用石英晶体振荡器产生稳定的高频时钟信号,然后通过分频电路将其分频为适合计数的低频信号,如 1Hz 信号用于秒的计数。
2、计数器使用二进制计数器对时钟信号进行计数,分别实现秒、分、时的计数。
秒计数器满60 向分计数器进位,分计数器满60 向时计数器进位。
3、译码器将计数器输出的二进制编码转换为能够驱动显示器的信号,如七段数码管译码器。
4、显示器使用七段数码管或液晶显示器来显示时、分、秒的数字信息。
三、实验器材1、数字电路实验箱2、集成电路芯片:计数器芯片(如 74LS160)、译码器芯片(如74LS47)、与非门芯片(如 74LS00)等3、七段数码管4、电阻、电容、导线等四、实验步骤1、设计电路原理图根据实验原理,使用数字电路设计软件(如 Protel)或手绘的方式设计出数字时钟的电路原理图。
在设计过程中,要合理安排芯片的布局和连线,确保电路的正确性和稳定性。
2、芯片选择与引脚连接根据电路原理图,选择合适的集成电路芯片,并按照芯片的引脚功能进行正确的连接。
在连接过程中,要注意引脚的极性和连接的可靠性,避免虚焊和短路。
3、电路搭建与调试将连接好的芯片和元器件安装在数字电路实验箱上,按照电路原理图进行布线。
接通电源后,使用示波器和逻辑分析仪等工具对电路的各个节点进行测试和调试,观察时钟信号、计数器输出、译码器输出等是否正常。
4、故障排除如果电路出现故障,如数码管不显示、显示错误、计数不准确等,要根据故障现象进行分析和排查。
数字电子钟课程设计实验报告1. 引言本实验旨在设计一个数字电子钟,通过对电子元件的运用和数字电路的设计,实现显示当前时间和日期的功能。
在实验过程中,我们将学习数字电子钟的工作原理,熟悉数字电子元件的连接与使用,并运用已学知识进行设计和实现。
2. 设计思路为了设计一个完整的数字电子钟,我们需要考虑以下几个方面的内容:2.1 时钟模块时钟模块是数字电子钟的核心部分,用于记录和显示当前时间。
我们可以使用实时时钟(RTC)模块来实现这一功能。
RTC模块可以精确地计时,并提供与微处理器的接口。
2.2 显示模块数字电子钟的显示模块需要能够显示当前时间和日期。
常见的显示模块包括LED数码管和液晶显示屏。
我们可以根据实际需求选择合适的显示模块。
2.3 控制模块为了方便用户对数字电子钟进行设置和操作,我们需要设计一个控制模块。
用户可以通过控制模块来调整时间、日期等参数,并进行其他操作。
3. 设计步骤3.1 连接电子元件首先,我们需要连接时钟模块、显示模块和控制模块。
按照时钟模块和显示模块的规格说明,将它们与微处理器连接起来。
同时,根据控制模块的需求,连接控制模块与微处理器。
3.2 编写代码编写代码是实现数字电子钟功能的关键步骤。
在代码中,我们需要实现时钟模块的读取和计时功能,显示模块的显示功能,以及控制模块的参数调整和操作功能。
3.3 调试和测试完成代码编写后,我们需要对数字电子钟进行调试和测试。
首先,确保时钟模块的读取和计时功能正常。
然后,验证显示模块的显示功能是否正确。
最后,通过控制模块进行参数调整和操作,确保所有功能都能够正常运行。
4. 实验结果经过设计、编写代码、调试和测试,我们成功地实现了数字电子钟的功能。
我们的数字电子钟可以准确地显示当前时间和日期,并且具备参数调整和操作功能。
5. 总结与讨论本次实验通过设计数字电子钟,我们对数字电路的基本原理和设计方法有了更深入的理解。
通过实践,我们掌握了连接电子元件、编写代码、调试和测试的基本技能,并成功地实现了数字电子钟的功能。
交通大学数字电子技术实验报告数字钟设计姓名:**学院:**学院班级:**22学号:212******5一、实验名称基于Verilog HDL设计的多功能数字钟二、试验任务及要求实验要求以Verilog HDL语言为手段,设计多功能数字钟。
多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。
整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的围为0~23时。
在实验中为了显示与编写方便,该设计采用一个位24位二进制码[23:0]cnt 记录时间,每四位记录一个数,从高到低分别为时针十位、时针个位、分针十位、分针个位、秒针十位、秒针个位。
实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。
关于调整时间功能,该设计采用四个按钮调整对应位的数值,从而调整时间。
三、实验条件该实验以Verilog HDL语言为手段,以Xilinx ISE Design Suite 13.4_1软件实现源程序的综合与仿真,并用BASYS2开发板作为目标器件。
四、设计过程1.列写多功能数字钟设计--层次结构图2.拟定数字钟的组成框图,在Xilinx ISE Design Suite 13.4_1软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路;3.设计各单元电路并进行仿真;4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合;5.下载到Basys2实验平台上,实际测试数字钟的逻辑功能。
五、Verilog代码module clock(input clk,input en,input key1,input key2,input key3,input key4,output sec,output wire[7:0] seg,output wire[3:0] digit);wire[3:0] num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3);endmodule////////////////////////////////////module disp(input clk,input [3:0] num0,input [3:0] num1,input [3:0] num2,input [3:0] num3,output reg[7:0] sm_seg,output reg[3:0] an);reg[1:0] s;reg[3:0] digit;reg[16:0] clkdiv;always@(*)beginan=4'b1111;s<=clkdiv[16:15];an[s]=0;case(s)0:digit<=num0;1:digit<=num1;2:digit<=num2;3:digit<=num3;default:digit<=num0;endcasecase(digit)4'h0 : sm_seg = 8'hc0; // "0"4'h1 : sm_seg = 8'hf9; // "1"4'h2 : sm_seg = 8'ha4; // "2"4'h3 : sm_seg = 8'hb0; // "3"4'h4 : sm_seg = 8'h99; // "4"4'h5 : sm_seg = 8'h92; // "5"4'h6 : sm_seg = 8'h82; // "6"4'h7 : sm_seg = 8'hf8; // "7"4'h8 : sm_seg = 8'h80; // "8"4'h9 : sm_seg = 8'h90; // "9"default : sm_seg = 8'hff; // "x"endcaseendalways@(posedge clk)clkdiv<=clkdiv+17'd1;Endmodule/////////////////////////////////////////// module clk_gen(input clk,input en,input bt0,input bt1,input bt2,input bt3,output reg sec,output [3:0] num0,output [3:0] num1,output [3:0] num2,output [3:0] num3);reg[25:0] ctr;reg[3:0] mytime[3:0];reg[7:0] s;assign num0=mytime[0];assign num1=mytime[1];assign num2=mytime[2];assign num3=mytime[3];always@(posedge clk)beginctr<=ctr+26'd1;if(ctr==25000000-1)beginctr<=0;sec<=~sec;endend//wire sen;//assign sen=(sec)|(bt0)|(bt1)|(bt2)|(bt3);always@(negedge sec)if(!en)beginif(bt0)beginmytime[0]<=mytime[0]+4'd1;if(mytime[0]==9) mytime[0]<=0;endelse if(bt1)beginmytime[1]<=mytime[1]+4'd1;if(mytime[1]==5) mytime[1]<=0;endelse if(bt2)beginmytime[2]<=mytime[2]+4'd1;if(mytime[2]==9) mytime[2]<=0;endelse if(bt3)beginmytime[3]<=mytime[3]+4'd1;if(mytime[3]==2) mytime[3]<=0;endendelsebegins<=s+1;if(s==59)begins<=0;mytime[0]<=mytime[0]+4'd1;if(mytime[0]==9)beginmytime[0]<=0;mytime[1]<=mytime[1]+4'd1;if(mytime[1]==5)beginmytime[1]<=0;mytime[2]<=mytime[2]+4'd1;if(mytime[3]==2 && mytime[2]==3)beginmytime[2]<=0;mytime[3]<=0;endif(mytime[2]==9)beginmytime[2]<=0;mytime[3]<=mytime[3]+4'd1;endendendendendEndmodule约束文件NET "clk" LOC = "B8";NET"seg[0]" LOC="L14";NET"seg[1]" LOC="H12";NET"seg[2]" LOC="N14";NET"seg[3]" LOC="N11";NET"seg[4]" LOC="P12";NET"seg[5]" LOC="L13";NET"seg[6]" LOC="M12";NET"seg[7]" LOC="N13";NET "digit[0]" LOC = "F12";NET "digit[1]" LOC = "J12";NET "digit[2]" LOC = "M13";NET "digit[3]" LOC = "K14";NET "key4" LOC = "A7"; # Bank = 2, Signal name = BTN3 NET "key3" LOC = "M4"; # Bank = 2, Signal name = BTN2 NET "key2" LOC = "C11"; # Bank = 2, Signal name = BTN1 NET "key1" LOC = "G12"; # Bank = 2, Signal name = BTN0 NET "en" LOC = "P11"; # Bank = 2, Signal name = sw0NET "sec"LOC="M5";测试代码module clock(input clk,input en,input key1,input key2,input key3,input key4,output sec,output wire[7:0] seg,output wire[3:0] digit);wire[3:0] num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,num3); endmodule////////////////////////////////////module disp(input clk,input [3:0] num0,input [3:0] num1,input [3:0] num2,input [3:0] num3,output reg[7:0] sm_seg,output reg[3:0] an);reg[1:0] s;reg[3:0] digit;reg[16:0] clkdiv;always@(*)beginan=4'b1111;s<=clkdiv[16:15];an[s]=0;case(s)0:digit<=num0;1:digit<=num1;2:digit<=num2;3:digit<=num3;default:digit<=num0;endcasecase(digit)4'h0 : sm_seg = 8'hc0; // "0"4'h1 : sm_seg = 8'hf9; // "1"4'h2 : sm_seg = 8'ha4; // "2"4'h3 : sm_seg = 8'hb0; // "3"4'h4 : sm_seg = 8'h99; // "4"4'h5 : sm_seg = 8'h92; // "5"4'h6 : sm_seg = 8'h82; // "6"4'h7 : sm_seg = 8'hf8; // "7"4'h8 : sm_seg = 8'h80; // "8"4'h9 : sm_seg = 8'h90; // "9"default : sm_seg = 8'hff; // "x"endcaseendalways@(posedge clk)clkdiv<=clkdiv+17'd1;Endmodule/////////////////////////////////////////// module clk_gen(input clk,input en,input bt0,input bt1,input bt2,input bt3,output reg sec,output [3:0] num0,output [3:0] num1,output [3:0] num2,output [3:0] num3);reg[25:0] ctr;reg[3:0] mytime[3:0];reg[7:0] s;assign num0=mytime[0];assign num1=mytime[1];assign num2=mytime[2];assign num3=mytime[3];always@(posedge clk)beginctr<=ctr+26'd1;if(ctr==25000000-1)beginctr<=0;sec<=~sec;endend//wire sen;//assign sen=(sec)|(bt0)|(bt1)|(bt2)|(bt3);always@(negedge sec)if(!en)beginif(bt0)beginmytime[0]<=mytime[0]+4'd1;if(mytime[0]==9) mytime[0]<=0;endelse if(bt1)beginmytime[1]<=mytime[1]+4'd1;if(mytime[1]==5) mytime[1]<=0;endelse if(bt2)beginmytime[2]<=mytime[2]+4'd1;if(mytime[2]==9) mytime[2]<=0;endelse if(bt3)beginmytime[3]<=mytime[3]+4'd1;if(mytime[3]==2) mytime[3]<=0;endendelsebegins<=s+1;if(s==59)begins<=0;mytime[0]<=mytime[0]+4'd1;if(mytime[0]==9)beginmytime[0]<=0;mytime[1]<=mytime[1]+4'd1;if(mytime[1]==5)beginmytime[1]<=0;mytime[2]<=mytime[2]+4'd1;if(mytime[3]==2 && mytime[2]==3).beginmytime[2]<=0;mytime[3]<=0;endif(mytime[2]==9)beginmytime[2]<=0;mytime[3]<=mytime[3]+4'd1;endendendendendendmodule六、实验总结:将程序下载到BASYS2板子上后,能够实现简易数字钟的功能,可以看到LED灯1s闪一下,4个数码管实现了数字钟小时和分钟的显示,而且通过开关控制可以将六位二进制数赋值给小时或分钟位,实现校表的功能。