数字逻辑数字时钟报告.docx
《数字逻辑数字时钟报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑数字时钟报告.docx(24页珍藏版)》请在冰点文库上搜索。
![数字逻辑数字时钟报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/461b2fc5-980b-420a-b9ea-260a0cb9a934/461b2fc5-980b-420a-b9ea-260a0cb9a9341.gif)
数字逻辑数字时钟报告
计算机与信息工程系
《数字逻辑设计课程设计》报告
专业:
计算机科学与技术
B090502
班级:
学号:
B09050218
姓名:
汪文威
报告完成日期:
2011.06.14
指导教师:
邹红文
评语:
成绩:
批阅教师签名:
批阅时间:
可调节电子表
摘要
可调节电子表的电路部分分为74160设计的时分秒计数器和调节校正时钟两大组成部分。
主要用74160等芯片设计电路图,设计秒脉冲MCLK和一个手动校正脉冲TMCLK,信号发生器产生稳定的脉冲信号,作为电子表的计时标准。
具有“时分秒”的十进制数字显示,小时为24进制,分和秒为60进制。
当正常计数时,秒脉冲连接到计数器上,手动脉冲无效,校对时间时,手动脉冲连接到计数器上,秒脉冲无效。
该电子表只对分钟和小时进行校正,可以在任意时间调节时间,在任意时间按下复位键,可将电子表复位清零。
在Quartus
仿真软件上仿真实现电子表的功能,并通过下载到实验板上上测试,结果正确。
关键词:
Quartus
,脉冲,74160,实验板,LCD液晶,进制
AdjustableElectronicTable
ABSTRACT
Adjustableelectroniccircuitdesignofthedividedinto74160secondsandadjustclockcountercorrectiontwomajorparts.In74160,themaindesignthecircuitdiagram,chipdesignMCLKsecondpulseandamanualcorrectionofpulseTMCLK,signalgeneratorproducestablepulsesignalaselectronictimingstandards,.Whentheclock"with"decimalfigures,for24hoursintothesystem,minutes,andsecondsto60intothesystem.Whennormalcount,secondpulseconnectedtothecounter,manualpulseisinvalid,proofreadingtime,manualpulseconnectedtothecounter,secondpulseisinvalid.Theelectronicwatchonlyforminutesandhoursforcalibration,canatanytimeatanytime,regulatingtimepressresetbuttoncanbecleared,electronicwatchreset.
InQuartusIIsimulationsoftwaresimulationonthefunctionoftheelectronicwatch,andthroughthedownloadtoexperimentandtestresultsarecorrect,board.
Keywords:
QuartusII,pulse,74160,theboard,LCD,Hexademical
目 录
前 言1
第1章组成电路的芯片介绍2
1.174160芯片2
第2章电子表电路图3
2.1可调电子表3
2.1.1电子表封装总图3
2.1.2可调74160时钟原理图4
2.2LCD液晶显示器的显示程序7
第3章仿真波形图12
3.1仿真结果和仿真波形图12
3.1.1正常计时波形图12
3.1.2校正电子表波形图13
3.1.3复位电子表波形图13
结 论14
谢辞15
参考文献16
附录17
前 言
通过学习《数字逻辑》,我认识到“电子课程设计”是电子技术课程的重要环节,数字逻辑是计算机科学技术专业学生必修的一门专业技术基础课。
此次的课程设计我选的课题是“可调节电子表”。
可调节电子表,是生活中大家最熟悉的,也是现实社会不可或缺的,时间就是金钱,在当今世界快速发展的大潮中,时间显得越来越重要,无时无刻我们都在和时间打交道,现在我们就来看下我们课程设计通过所学知识实现的可调节电子表。
可调节电子表,运用了我们所学内容及了解的芯片设计完成,实现显示时、分、秒并且可以按键调节,其中运用了计数器74160和各种逻辑门。
利用74160构造出模60,模24,利用脉冲MCLK使计数器开始计数,通过模60,模24进行进位。
再利用手动脉冲TMCLK对时钟进行校正。
通过同步并入设出态实现复位清零功能。
通过这次课程设计加深对本课程内容的理解,掌握数字系统工作原理和数字系统设计方法,熟练掌握QuartusⅡ仿真软件和实验开发板的使用方法,同时可以提高我们的独立分析问题和解决问题的能力,综合设计及创新能力,培养我们实事求是、严肃认真的科学作风和良好的实验习惯。
也提高了我们运用数字逻辑电路解决实际问题的能力,为以后的计算机硬件课程的学习奠定良好的基础。
1
1
第1章组成电路的芯片介绍
1.174160芯片
引脚:
QAQBQCQD为输出端口,进行计数值。
ENTENP为使能端。
CLRN清零端。
LDN预置。
ABCD预置数据输入。
CLK时钟脉冲输入。
74160芯片符号:
图1-174160芯片符号
74160芯片功能如下:
74160是十进制计数器当计数到1001时,输出进位RCO=1。
ENT和ENP为使能端,正常工作时为1。
CLRN为清零端,低电平有效。
LDN低电平有效,CLK为输入工作信号。
ENP
ENT
LDN
CLRN
CLK
功能
1
1
1
1
上升沿
正常计数
×
×
0
1
上升沿
同步设初态
0
1
1
1
×
保持RCO=1进位
×
0
1
1
×
保持RCO=0不进位
×
×
×
0
×
异步清0
电子表设计过程中,由秒逢60向分钟进位,秒表由两个74160组成模60计数器。
分逢60时向时进1,分钟由秒控制进位,也是由两个74160组成模60计数器,原理同秒计数一样。
小时逢24清零,由分和秒同时控制,是由两个74160组成的模24计数器。
2
模60计数器,如秒的输出端M0M3M4M6都为1时在下一个上升沿到来时,LDN=0,输出端开始清零,同时RCO=1向分钟产生进位。
第2章电子表电路图
2.1可调电子表
2.1.1电子表封装总图
图2-1电子表总电路图
图2-1中,74160clock为电子表电路封装后的模块。
XIANSHIDZB为显示程序封装后的模块,其中rs为数据/命令选择端,rw为读写选择端,en为使能端。
d[7..0]为数据口。
两个模块组合后成为电子表的电路总图,通过将程序下载到实验板上,实现了电子表的计数,调节,复位,显示等功能。
RESET为清零端正常计数时为1。
当RESET=0时,时分秒全部清零。
CLK为电子表正常工作提供脉冲信号。
TMCLK为手动校正脉冲,K0K1=01时,CLK脉冲不工作,校正小时,在TMCLK上升沿到来时小时的计数器加1;K0K1=10时,CLK脉冲不工作,校正分钟,在TMCLK上升沿到来时分钟的计数器加1;当K0K1为00或11时正常计数,手动脉冲不工作,在CLK上升沿到来时,秒的计数器加1。
2.1.2可调74160时钟原理图
1.74160时钟部分如图2-2(a):
图2-2(a)74160时钟电路图
图2-2(a)中最右端为秒的模60,M7M6M5M4M3M2M1M0为秒钟的输出端;中间为分钟的模60,F7F6F5F4F3F2F1F0为分钟的输出端;最左端为小时的模24,S7S6S5S4S3S2S1S0为小时的输出端;D0D1D2D3为各74160模块的输入端,要求接地全部为低电平;MCLK为74160的输入脉冲。
RESET为复位键,控制电子表在任意情况下复位清零。
正常工作时K1K0为00或者11,工作脉冲为MCLK,手动脉冲TCLK无效。
RESET为1,对SLDN,NFLDN,NMLDN为影响。
即NFLDN=FLDN,NMLDN=MLDN
FCLK=
·K0·TMCLK+
·K0·MCLK
TFEN=FEN+
·K0
SCLK=K1·
·TMCLK+K1·
·MCLK
TSEN=SEN+K1·
MLDN=M0M3M4M6
FLDN=
·K0·MLDN+F0F3F4F6=1·MLDN+F0F3F4F6
SLDN=K1·
·FLDN+S0S1S5=1·FLDN+S0S1S5
FEN=MLDN
SEN=FLDN
MC=RCO,当M3M2M1M0=1001时,RCO=1产生进位,使秒模块高位ENT、ENP都为1,正常工作。
M6M4M3M0=1111时,MLDN=LDN=0输出端清零,分钟加1。
TFEN为分钟的使能端,正常工作下
·K0=0,TFEN=FEN;分钟的脉冲信号为FCLK=MCLK,FLDN=1·MLDN+F0F3F4F6,TFEN=FEN+0,
RCO=FC;当F6F4F3F0=1111时,FLDN=0秒产生进位,使时钟钟加1。
TSEN为小时的使能端,正常工作下,满足下面公式:
TSEN=SEN=FLDN=
·K0·MLDN+F0F3F4F6=MLDN+F0F3F4F6
小时的脉冲信号为SCLK=K1·
·TMCLK+K1·
·MCLK,
74160计数器的小时模块的LDN端口SLDN=K1·
·FLDN+S0S1S5=FLDN+S0S1S5,RCO=SC,FLDN=1,SEN=1时,小时开始加1。
当S5S1S0=111,F6F4F3F0=1111,M6M4M3M0=1111在下一个上升沿到来时输出全部为0,时钟走一个周期了。
RESET=0,即复位时满足公式如下面:
秒钟模块的LDN端口:
NMLDN=MLDN·0=0;
分钟模块的LDN端口:
NFLDN=FLDN·0=0;
时钟模块的LDN端口:
SLDN=0·(1·FLDN+S0S1S5)=0;
当接到下一个MCLK脉冲上升沿开始复位清零。
2.74160校正部分如图2-2(b):
图2-2(b)74160时钟调节电路图
(1)只对分钟和小时校正。
(2)设置秒脉冲MCLK和一个手动校时脉冲TCLK。
(3)当正常计数时,秒脉冲连接到计数器上,手动脉冲无效。
(4)当校正电子表时,把手动脉冲连接到计数器相应位上,使相应位上的脉冲无效。
(5)当手动脉冲有上升沿时,相应的位加1,其它位照常计数,不受校时手动脉冲影响。
(6)当按下复位键时,电子表复位清零。
(7)设置3个功能选择按钮,实现下表的功能。
RESETK1K0
功能
FENCLK
TFEN
SHICLK
TSEN
100
①正常计数
MCLK
FEN
MCLK
SEN
101
②调节分钟
TCLK
1
MCLK
SEN
110
③调节小时
MCLK
FEN
TCLK
1
111
④正常计数
MCLK
FEN
MCLK
SEN
0dd
清零复位
d
d
d
d
表2-174160按键功能表
以上5个功能的说明如下:
①④正常计数:
时钟全部是秒脉冲,使能端分别是FEN、SEN
②调节分钟:
分钟时钟是手动脉冲,分钟使能端分别是1。
小时正常计数。
③调节小时:
小时时钟是手动脉冲,小时使能端分别是1。
分钟正常计数。
⑤复位电子表:
通过控制74160lLDN端来同步并入清零。
调节按钮电路公式:
FCLK=
·K0·TMCLK+
·K0·MCLK
TFEN=FEN+
·K0
SCLK=K1·
·TMCLK+K1·
·MCLK
TSEN=SEN+K1·
(8)某位调节到最大值时候,不向高位进位,执行清零:
调节分钟到59后,FLDN=0使分钟清零,此时MLDN无效。
调节小时到23后,SLDN=0使小时清零,此时FLDN无效。
清零公式:
FLDN=
·K0·MLDN+F0F3F4F6
SLDN=K1·
·FLDN+S0S1S5
正常计数:
因为
·K0=K1·
=1,所以有:
FLDN=1·MLDN+F0F3F4F6
SLDN=1·FLDN+S0S1S5
复位公式:
NMLDN=MLDN·0=0
NFLDN=FLDN·0=0
SLDN=0·(1·FLDN+S0S1S5)=0
2.2LCD液晶显示器的显示程序
源程序
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityXIANSHIDZBis
Port(Clk:
instd_logic;--状态机时钟信号,同时也是液晶时钟信号
R0,R1,R2:
instd_logic_vector(7downto0);
rs:
bufferstd_logic;
rw:
outstd_logic;--液晶读写信号
en:
outstd_logic;--液晶使能信号
Clk_Out:
bufferstd_logic;--除输出的秒脉冲
d:
bufferstd_logic_vector(7downto0));--LCD的数据线
endXIANSHIDZB;
architectureBehavioralofXIANSHIDZBis
typexianshiisarray(0to31)ofstd_logic_vector(7downto0);--显示缓冲
signalqx:
xianshi:
=((others=>"00100000"));
typestateis(clear,ids,dlnf,dcb,ddram1,outdata1,ddram2,outdata2);--ddram2,
signalCount:
std_logic_vector(15downto0);
signalLCLK_OUT:
std_logic;
signalCounts:
integerrange0to3000000:
=0;--;std_logic_vector(22downto0);
signalCurrent_State:
state;
signaltempa:
std_logic_vector(4downto0):
="00000";
begin
process(Clk_Out,clk)----秒脉冲
begin
if(rising_edge(clk))then
Counts<=Counts+1;
if(Counts=3000000)then--10000000是1秒
Clk_Out<=notClk_Out;
endif;
endif;
endprocess;
qx
(2)<="0011"&R0(7DOWNTO4);
qx(3)<="0011"&R0(3DOWNTO0);
qx(5)<="00111010";--:
qx(7)<="0011"&R1(7DOWNTO4);
qx(8)<="0011"&R1(3DOWNTO0);
qx(10)<="00111010";--:
qx(12)<="0011"&R2(7DOWNTO4);
qx(13)<="0011"&R2(3DOWNTO0);
process(Clk,LClk_Out)--LCD用脉冲--LClk_Out,6ms
begin
if(rising_edge(clk))then
Count<=Count+1;
if(Count=0)then
LClk_Out<=notLClk_Out;endif;endif;
endprocess;
en<=LClk_Out;
process(LClk_Out,Current_State)--液晶驱动控制器
begin
ifrising_edge(LClk_Out)then
rs<='0';--写指令
rw<='0';
caseCurrent_Stateis
whenclear=>
d<="00000001";--01H,清屏
Current_State<=dlnf;
whendlnf=>
d<="00111000";--38H--5*7
Current_State<=ids;
whenids=>
d<="00000110";--06H:
ltor
Current_State<=dcb;
whendcb=>
d<="00001100";--0cH
Current_State<=ddram1;--准备写入地址
whenddram1=>--显示第一行
d<="10000000"+tempa(3downto0);
Current_State<=outdata1;--ddram2;
whenoutdata1=>
rs<='1';
d<=qx(conv_integer(tempa));
tempa<=tempa+1;
iftempa="10000"then
Current_State<=ddram2;
else
Current_State<=ddram1;
endif;
whenddram2=>--显示第2行
d<="11000000"+tempa(3downto0);
Current_State<=outdata2;
whenoutdata2=>RS<='1';
d<=qx(conv_integer(tempa));
tempa<=tempa+1;
iftempa="00000"then
Current_State<=ddram1;else
Current_State<=ddram2;endif;
whenothers=>null;
endcase;
endif;
endprocess;
endBehavioral;
第3章仿真波形图
3.1仿真结果和仿真波形图
3.1.1正常计时波形图
图3-1(a)正常计时
图3-1(b)正常计时
电子表正常工作时,时钟全部是秒脉冲MCLK,使能端分别是FEN、SEN。
复位端RESET=1正常工作。
图3-1(a)为调节按钮K0、K1同为0,正常计时,99.59ns时,秒钟走过59开始进位,分钟加1。
图3-1(b)为而调节按钮K0、K1同为1,正常计时,88.79ns时,秒钟走过59开始进位,分钟加1。
分秒逢60进1,小时逢24为一周期。
3.1.2校正电子表波形图
图3-2校正电子表
图3-2中110ns前校正分钟,K1K0=01在手动脉冲TMCLK下一个上升沿到来时,分钟开始加1。
而秒和小时正常计数,不受手动脉冲的影响。
110ns后校正小时,K1K0=10在手动脉冲TCLK下一个上升沿到来时,小时开始加1,而秒和分正常计数,不受手动脉冲的影响。
3.1.3复位电子表波形图
图3-3复位电子表
图3-3为复位电子表,140ns下按下RESET键,RESET置0,NMLDN,NFLDN,SLDN被置0,当接受到下一个MCLK脉冲上升沿,140.1ns开始同步设出态,电子表复位置零。
结 论
电子表要实现计数、清零和校正,复位等功能。
首先想到由计数器对时钟信号进行计数并产生进位,通过加上手动调节脉冲来对电子表进行校正,至于复位,想到可以通过置零各74160的LDN,是满足同步设出态,来同步并入清零。
但这只是思路,在进行画图时遇到了好多困难,我画图比较早,大概一月前吧课题下来了,就试着画了下,自己怎么想就怎么话,感觉和写程序代码一样,错了就不断调试,刚开始没加加手动脉冲,而是借用正常计数的脉冲CLK,不过这样,有局限性,调节速度和秒计时一样,比较慢。
所以外加了手动脉冲TMCLK,调节时经TMCLK周期缩短,问题出现了,调节时出现跳动不均匀现象,才发现,在进行调节分和小时时,正常的秒脉冲产生的MLDN对调节分时有影响,这才加了个限制,调节分钟和小时时,要切断相应的MLDN,FLDN,即公式:
FLDN=
·K0·MLDN+F0F3F4F6
SLDN=K1·
·FLDN+S0S1S5
至于复位清零端,刚开始没有加,今天中午老师说要加上复位端,自己按自己思路感觉可以将各74160的LDN全部置零,此时旁边的同学在用74160的异步清零,我心里有点迟疑,她们和我都不一样。
但最终还是继续走自己的思路,结果是:
可以这样做。
而她们的异步置零,也是可以的。
通过不断调试测试,逐渐实现正常计时,调整电子表等功能,虽然花了不少精力时间,走了不少弯路,今天上午在实验板上下载成功,电子表正常计时,调节分钟小时正常,复位清零端也无误。
当看到期待的结果时,感觉一切都没有白费。
电路图是自己按自己的思路画的,这样加深了对计数器74160的认识,巩固了数字逻辑相关方面的知识。
自己对这门课程也增加了信心。
谢辞
感谢学校给提供的这次课程设计实习,给我们一个自我锻炼,将知识应用到实践中的机会。
感谢邹老师给同学们提过的这次课题及详细指导书,和对我实验报告格式的耐心教导。
感谢我的同学对我的帮助,尤其在将程序下载到开发板时。
参考文献
[1]欧阳星明.数字逻辑(第四版).武汉:
华中科技大学出版社,2009-2
[2]邹红文.数字逻辑指导书.洛阳:
洛阳理工学院,2011-2
[3]74160pdf中文资料
[4]
附 录
电子表下载验证步骤
(1)安装驱动程序先把实验板接好,然后:
我的电脑→属性→硬件→设备管理器。
自动搜索出一个设备。
到安装路径下找到“USB-Blaster”。
(2)下载
设置