电工电子实习
实验报告
姓 名
班 级 计科0901
学 号 200909010116
一、 实验目的:
1、掌握多位计数器相连的设计方法。
2、掌握十进制、六十进制和二十四进制计数器的设计方法。
3、巩固数码管的驱动原理及编程方法。
4、掌握CPLD技术的层次化设计方法。
二、 实验要求:
基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。
扩展要求:具有调整时间的功能以及整点报时功能。
三、 实验原理:
? 必做部分:设计一个数字电子时钟。
通过分析实验要求得出:选用74LS163芯片共计6片,采用同步计数的方法来设计相关计时器(同一源输入脉冲接至CLK,控制ENT使能端实现计数),秒位计时器与分位计时器均为60进制,时位计时器为24进制。
? 选作部分:电子钟实现校时、清零和整点报时功能。
通过分析实验要求得出:1.控制数字电子钟分低位与时低位的使能端(ENT)输入(将使能端的输入分两部分,一种是自然输入,一种是输入相应电平信号手动控制使能信号)实现校时;2.控制验证当数字电子钟的输出为59分50秒时,与一个本电路所用的源输入脉冲信号,利用与门的特性输出相应的高低电平接通蜂鸣器实现整点报时。
1. 秒位计时电路设计(60进制)
秒低位计数用十进制计数器(74163改装)计数,由脉冲信号触发计数,9秒(秒低位输出1001B)时,秒低位清零;秒高位计数用六进制计数器(74163改装)计数,9秒时,秒高位芯片ENT输入高电平,由此触发计数,59秒(秒低位输出1001B,秒高位输出0101B)时,秒高位清零。
2.分位计时电路设计(60进制)
分位计时电路与秒位计时电路计时原理相差无几,只在触发计数的使能信号量上有一定差异。分低位计数用十进制计数器(74163改装)计数,59秒时触发计数,9分59秒(分低位输出为1001H,秒高位输出0101B,秒低位输出1001B)时,分低位清零;分高位计数用六进制计数器(74163改装)计数,9分59秒时,分高位芯片ENT输入高电平,由此触发计数,59分59秒(分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B)时,分高位清零。
3.时位计时电路设计(24进制)
时低位计数用十(或四)进制计数器(74163改装)计数,59分59秒时触发计数,9时59分59秒(时低位输出为1001B,分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B),或者23时59分59秒(时高位输出为0010B,时低位输出为0011B,分高位输出为0101B,分低位输出为1001B,秒高位输出0101B,秒低位输出1001B)时,时低位清零;时高位计数用三进制计数器(74163改装)计数,9时59分59秒时,时高位芯片ENT输入高电平,由此触发计数,23时59分59秒时,时高位清零。
1. 校时电路
利用与门、或门和非门的基本特性,通过分析实验要求得出:控制数字电子钟分低位与时低位的使能端(ENT)输入(将使能端的输入分两部分,一种是自然输入,一种是输入相应电平信号手动控制使能信号)实现校时。
2. 整点报时电路
控制验证当数字电子钟的输出为59分50秒时,与一个本电路所用的源输入脉冲信号,利用与门的特性输出相应的高低电平接通蜂鸣器实现整点报时。
四、 实验结果(电路图、仿真波形以及说明):
说明:
本次实验基本达到预期目标。通过本次实验中综合运用学过的数字电子、可编程逻辑器件等基本知识,培养了我独立设计比较复杂的数字逻辑的能力。同时,我熟悉并初步掌握了使用EDA(电子设计自动化)工具设计数字逻辑的方法,包括设计输入、编译、软件仿真、下载和硬件仿真等全过程。在实验的过程中,由于思维受限,自己遇到了一系列问题,幸得各位实验指导老师的悉心指导与同学们的热心帮助,实验得以顺利进行。
设计是一个循序渐进的过程。电路的设计中,自己深切体会到了“欲速则不达”之理。起初,自己并未统筹全局,却因部分基本模块设计的较快而洋洋自得,却忽视了综合的优化完善。一次,计时电路在编译无误后却无法显示正确的波形,认为自己逻辑无误的我顿时产生了疑惑,在仔细观察后,我发现了逻辑欠缺,在秒计时电路与分计时电路的连接处仅仅注意到了本部分的使能,而忽略了衔接。找出了错误,我静下心来,先设计每一个功能模块,用软件仿真,调试每个功能模块,以实现各种功能模块的具体功能,再将各种功能模块连接起来,调试总的系统,完成总体功能的实现。
电路的搭建中,我亦是意识到不能急于求成。当有了设计雏形,搭建电路便也简单,但由于自己对软件使用的不太上手,稍不留神,便错接了导线、重叠了节点,在编译时出现错误,自己构图的凌乱使得发现不妥难时不得重新来过,这极大延缓了实验的进度。
在接下来的硬件仿真时,遗憾的是由于实验板导线数量有限,我只是与同学一起合作完成了硬件连线,且硬件仿真时间不够充裕,但是可喜的是在硬件仿真时既验证了基本计时电路设计的正确性,同时又发现了一些问题,诸如辅助功能校位在实现时影响到了进位,通过反复地修改,电路得以不断完善。
通过本次实验,我被自主设计电路的趣味性所吸引,同时认识到了知行结合,独立实验的重要性,更是知道了闭门造车的弊端(实验中,由于软件使用得不太上手,极大地影响了实验进度,幸得老师指导)。本次实验结束了,但是将知识应用于实践的脚步是不可停歇的。
华北水利水电学院
EDA课程设计(电子钟)报告
名 称: EDA综合实验设计
题 目: 电子钟
院 系: 信息工程
班 级:
学 号:
学生姓名:
指导教师:
20##年 1月 7日-----18日
一、课程设计(综合实验)任务
设计一个综合性的计时系统,要求能实现时、分、秒计数等综合计时功能,同时将计时结果通过6个七段数码管显示。能够对时和分进行设置,并能一键复位,重新计数。
1. 计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。
注:本组实验所用的计秒时钟是用实验箱上1KHZ信号经分频器产生的。
2. 计分电路、计时电路:其设计思想与计秒电路类似。计时电路是24进制的,计满24产生进位。
3. 时间设置电路:负责对时分秒进行调整,并能够产生进位。
4. 显示控制电路的设计,本设计显示需要使用的是6个七段显示数码管。
注:本组实验在EDA6000上运行时,所用的是内部含有4-16译码器的八段数码管。
二、 试验目的
1. 掌握时十进制、六十进制和二十四进制计数器的设计方法。
2. 掌握多位计数器相连的设计方法。
3. 掌握多位共阴极扫描显示数码管的驱动及编码。
三、总体设计方案
1. 问题分析:
1.1 计时及显示功能:计时模块实际为对一个标准1Hz时钟脉冲进行计数。秒计数器满60后向分计数器进位,分计数器满60向时计数器进位,时计数器为24进制。6个七段显示数码管分别显示时、分、秒的十位和个位。
1.2 时间设置电路:对于系统中的时间调整电路,可以通过三个外部按键“set”,“chang”,“rst”来完成。
“rst“为复位键,按下之后时钟清零,重新开始计数。
“set”为时间设置控制键,按第一下对分进行设置(用min发光二极管亮标示);按第二下对时进行设置,(用hour发光二极管亮标示);按第三下,重新开始计数。
“chang”键为在“set”键按下对时间进行设置时,对时或分进行加1操作,直至到达满意时间。
2. 层次化设计具体方案:
2.1时分秒计数器模块
本数字钟的实现可分为以下几个模块:
(1) 频率产生模块:用EDA6000实验箱产生1kHz的计数频率 ,通过分频得到1Hz信号;
(2) 秒计数模块:秒计数,在频率为1Hz的时钟下以60次为循环计数,并产生进位信号影响分计数;
(3) 分计数模块:分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数;
(4) 时计数模块:时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数;
(5) 时间显示模块:数码管通过动态显示,同时进行一定频率的扫描显示时,分,秒。
(6) 时间设置模块:设置调试使能端,可以调时,分。基本功能是在使能端chang为高电平时,可以使时和分循环计数;
2.2 电路组成:
一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器组成。干电路系统由秒信号发生器(分频器)、“时”,“分”,“秒”计数器、译码器显示器电路组成。
分频器电路:通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。通常实现分频器的电路是计数器电路,当计数满时则产生相应的跳变,从而得到想要的的分频后频率。
时间计数单元:时间计数单元有时计数、分计数和秒计数等几个部分。时计数单元一般为12进制计数器或24进制计数器。
译码驱动及显示单元:计数器实现了对时间的累计以8421BCD码形式输出,为了将计数器输出的8421BCD码显示出来。试验箱上有几种模式可供选择,选择自带有4-16译码器的显示器,代码中就可以直接送四位bcd码给相应端口就行。
本设计的总体设计原理结构框图如下:
四.实验程序:
顶层模块用的原理图输入法,剪切图如下:
各功能模块程序:
module div(clk1k,clk); //分频模块,用1 kHZ的信号产生1HZ的计数(秒)时钟
input clk1k;
output clk;
reg clk;
integer n;
always@(posedge clk1k)
if(n<500) //每计满500个输入时钟时,clk取反一次,即产生1HZ的信号
n<=n+1;
else
begin
clk<=~clk;
n<=0;
end
Endmodule
module ctr(set,so); //时间设置有效信号“set”的产生模块
input set;
output [1:0]so;
reg [1:0]so;
always@(posedge set) //set有两个值,1和2;set为1时对“分”进行设置,为2时对“时”进行设置;上升沿触发
if(so<2)
so<=so+1;
else
so<=0;
Endmodule
module mux2(in,so,co1,co2); //二选一模块,用于区分对“分”和“时”的设置
input in;
input [1:0] so;
output co1,co2;
reg co1,co2;
always@(so)
case(so)
1:co1<=in; //当set输出s0为1时,将in(chang输入)给co1,对分进行设置;
2:co2<=in; //当set输出s0为2时,将in(chang输入)给co2,对时进行设置;
default:begin
co1<=0;
co2<=0;
end
endcase
endmodule
module cnt60(clr,clk,clken,upclk,a,b,cen); //分和秒的计数模块,60进制
input clk,clr,clken,upclk; //clr为清零信号,低电平有效;upclk为“分”的时间设置信号
//clken为使能信号
output [3:0]a,b; //a为个位,b为十位
output cen;
reg [3:0]a,b;
reg CenInside;
wire ClkInside,cen;
assign ClkInside = (clken & clk)|upclk; //当使能信号与clk同时有效,或时间设置信//号有效时,触发计数程序,开始计数
assign cen = CenInside & clken; //cen为高一级计数的时钟信号,由CenInside(本级计数//计满)和clken(上级计数计满)同时有效时产生
always @(posedge ClkInside or negedge clr) //计数语句块,同时用于时间设置时的时间加操作
begin
if(!clr) begin a=0; b=0; end
else if(a==9)
begin
a=0;
if(b==5) b=0;
else b=b+1;
end
else
begin
a=a+1;
b=b;
end
end
always @(negedge clk or negedge clr) //此程序块产生本级计数计满信号CenInside
begin
if(!clr) CenInside=0;
else
if((a==9)&(b==5)) CenInside=1;
else CenInside=0;
end
endmodule
module cnt24(clr,clk,clken,clkup,a,b); //“时”的计时为24进制,计满24小时复位为零
input clk,clr,clken,clkup;
output [3:0]a,b; //a为“时”显示的个位,b为“时”显示的十位
reg [3:0]a,b;
wire clkinside;
assign clkinside = (clken & clk) | clkup;
always @(posedge clkinside or negedge clr) //产生24进制计数输出
begin
if(!clr) begin a=0; b=0; end
else
begin
if(b<2)
if(a==9)
begin
a=0;b=b+1;
end
else
begin
a=a+1;
b=b;
end
else
if(a==3) begin a=0;b=0;end
else begin a=a+1; b=b;end
end
end
Endmodule
五、Quartus调试仿真与EDA6000上下载运行
1、时序仿真
1.1对时分设置的仿真
原理:“set”高电平有效,其第一个脉冲有效时,S0为1开始对“分”进行设置,“chang”键执行分设置的加1操作,上升沿有效;同理,“set”的第二个有效脉冲来了之后,S0为2,开始对“时”进行设置;“set”的第三个脉冲到来之后,S0清零,退出时间设置开始正常计数。
仿真图中,“set”第一个脉冲之后,来一个“chang”有效脉冲“分”加1,四个“chang”脉冲之后,将“分”计数设置为4分。分设置仿真正确。“set”第二个脉冲之后,来一个“chang”有效脉冲“时”加1,四个“chang”脉冲之后,将“分”计数设置为4时。时设置仿真正确。
1.2对计数模块的仿真
原理:来一个有效的CLK1HZ脉冲(高电平有效),“秒”加1,秒计满60向“分”进1,“分”计满60向“时”进1。
仿真图中,时间宽度我们设置为70S,加上先前设置的四4时4分,时间显示为4时5分09秒,显示正确,故时间仿真正确
1.3总程序RTL图
2.在EDA6000上下载运行
2.1管脚分配
2.2将.sof文件下载到试验箱
注:本次实验用的Alter公司的FPGA芯片,型号为ACEX1P1K30TC144--3
2.3装入模式
2.4连接试验箱开始运行
对“分”进行设置时,“min”发光二极管亮,按一下“chang”分加1,加满60后自动复位为零,然后重新计数,运行正确。
对“时”进行设置时,“hour”发光二极管亮,按一下“chang”分加1,加满24后自动复位为零,然后重新计数,运行正确。
六、课程设计
通过这次课程设计,我觉得学到了很多东西,对Quartus的了解更多了,因为EDA的学习是这个学期,面临着考研的压力,所以对软件的操作很不熟悉,很多东西都不知道怎么做,这次课程设计,我觉得自己的进步好大,知道了一整套的步骤,也学会了编写程序,调试,综合,波形仿真,建立顶层模块,作图等等。这种亲眼看着自己在书本上学到的知识被运用到了具体的事务上,而且结果还挺不错,EDA结课也有一段时间了,好多知识都有点生疏了,用到了得重新再看,不看的话这个报告写不下去,慢慢地也巩固了知识。
我觉得EDA这门课程很实用,以后工作的时候用处也会挺大的,所以在以后的时间里我会好好掌握这门软件,现在也知道了段老师对我们的严格要求了,正是因为段老师的严格要求,同学们才可以做的这么顺利,真是严师出高徒,在这里很感谢段老师。我做的电子钟的设计,功能不是太全,老师要求的功能没有加进去完,有很多不完整的地方需要改进。尽管功能不全,但的确我也花费了很长时间的努力,看到自己的程序在实验板上显示出来我觉得很有成就感。我知道我还有很多的地方需要努力,我也会继续努力。
参考文献:(五号,宋体加粗)
[1] 潘松,《EDA实用教程》,科学出版社,20##年
华大计科学院数字逻辑课程设计说明书题目:多功能数字钟专业:计算机科学与技术班级:网络工程1班***学号:****完成日期:20XX…
数字钟实验报告课题名称:数字钟的设计与制作组员:姓名:班级:电气信息I类112班实验时间:实验地点:指导老师:一、实验目的:1.学…
中北大学20xx届本科课程设计说明书目录一设计目的意义1二设计内容11总体设计方案简介12单元电路设计23总电路图64仿真结果7三…
数字时钟设计实验报告一设计要求设计一个24小时制的数字时钟要求计时显示精度到秒有校时功能采用中小规模集成电路设计发挥增加闹钟功能二…
咸阳师范学院物理与电子工程学院课程设计报告题目班级姓名学号指导教师成绩完成日期年月1目录第一章概述3第二章数字电子钟的电路原理4第…
华北水利水电学院EDA课程设计(电子钟)报告名称:EDA综合实验设计题目:电子钟院系:信息工程班级:学号:学生姓名:指导教师:20…
实验四数字钟设计一实验目的1进一步学习更复杂的EDA熟练项目设计更的掌握VHDL语言设计2学习动态数码管的VHDL编程3更加熟练计…
电工电子实习实验报告姓名师元康班级网络09K2学号0919xx030212一实验目的1掌握多位计数器相连的设计方法2掌握十进制六十…