毕业设计论文基于eda技术的快速计时器设计管理资料Word格式.docx
- 文档编号:7697509
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:22
- 大小:264.96KB
毕业设计论文基于eda技术的快速计时器设计管理资料Word格式.docx
《毕业设计论文基于eda技术的快速计时器设计管理资料Word格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于eda技术的快速计时器设计管理资料Word格式.docx(22页珍藏版)》请在冰点文库上搜索。
EDA技术就是以大规模可编程逻辑器件为载体,以硬件描述语言为系统逻辑描述的表达方式,以计算机、大规模可编程逻辑器件的开发软件及试验开发系统为设计工具,通过有关的开发软件,自动完成电子系统的设计。
利用EDA技术进行电子设计它可以实现用软件的方式设计硬件;
系统可现场编程,在线升级;
整个系统低功耗,多功能等特点,成为现代电子设计发展的趋势[1][2][3]。
EDA技术
随着数字集成技术的飞速发展,数字系统的规模和技术复杂度也在急剧增长,人工设计数字系统变得十分困难,必须依靠EDA技术。
EDA(ElectronicDesignAutomation)技术就是电子设计自动化,用EDA技术设计数字系统的实质是一种自顶向下的分层设计方法[4]。
在每一层次上,都有描述、划分、综合和验证四种类型的工作。
描述是把系统设计输入到EDA软件的过程,它可以采用图形输入、硬件描述语言或二者混合使用的方法输入。
整个设计过程只有该部分由设计者完成。
划分、综合和验证则采用EDA软件平台自动完成。
这样做极大地简化了设计工作,提高了效率,因此,采用EDA技术设计数字系统得到了越来越广泛的应用[1]。
与手工设计相比EDA技术有如下特点[7]:
Ø
采用自顶向下设计方案
应用硬件描述语言(HDL)描述设计
能够自动完成仿真和测试
开发技术的标准化和规范化
对工程技术人员的硬件知识和经验要求低
系统设计意义
快速计时器由于其计时精确,分辨率高(),在各种竞技场所得到了广泛的应用。
本数字快速计时器可用于体育比赛,计时精度大于1/100S,计时器能显示1/100S的时间,计时器的最长计时时间为1小时,。
系统具有简单、工作稳定可靠等优点,具有一定的实际意义。
与原有的数控系统的控制电路部分相比采用EDA技术的快速计时器使得数控系统具有更高的可靠性、实时性、高运算速度以及高集成度。
2数字快速计时器的设计方案及要求
本文介绍的数字快速计时器设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。
快速计时器的工作原理与多功能时钟基本相同,唯一不同的是,由于快速计时器的计时时钟信号,秒,所以整个快速计时器的工作时钟是在100Hz的时钟信号下完成。
当快速计时器的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:
0~59;
ss表示秒:
xx表示百分之一秒:
0~99),当快速计时器的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:
0~99),由于快速计时器的功能和钟表有所不同,所以快速计时器的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
系统设计要求
,显示的最长时间为59分59秒。
数字快速计时器的计时精度是10ms。
复位开关可以在任何情况下使用,即便在计时过程中,只要按一下复位开关,计时器就清零,并做好下次计时的准备。
具有启/停开关,即按一下启/停开关,启动计时器开始计时,再按一下复位开关则停止计时。
系统设计方案
根据系统设计要求,系统的组成框图如图1所示。
图1系统的组成框图
系统设计采用自顶向下的设计方法,系统的整体组装设计主要由控制模块、时基分频模块、计时模块和显示模块四部分组成。
(1)控制模块
计时控制模块的作用是对计时过程进行控制。
计时控制模块可用两个按钮快速计时器的启动、停止和复位。
(2)计时模块
计时模块执行计时功能,计时的方法是对标准时钟脉冲计数[6]。
,所以计数器可以由四个十进制计数器和两个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
(3)显示模块
计时显示电路的作用是将计时值在LED七段数码管上显示出来。
计时电路产生的计时值经过BCD七段译码管后,驱动LED数码管。
计时显示电路的实现方案采用扫描显示,即每次只驱动一位数码管,各位数据轮流驱动对应的数码管进行显示。
3程序设计及分析
时基分频模块的VHDL源程序()
architectureARTOFCB10IS
SIGNALCOUNT:
std_logic_vector(3downto0);
BEGIN
PROCESS(CLK)
BEGIN
IFRISING_EDGE(CLK)THEN
IFCOUNT="
1001"
THENCOUNT<
="
0000"
;
CO<
='
1'
ELSECOUNT<
=COUNT+1;
CO<
0'
ENDIF;
ENDPROCESS;
ENDART;
程序分析:
时基分频模块的VHDL源程序()的功能是:
当时钟信号CLK发生变化,将启动进程语句PROCESS。
如果此时有信号CLK的上升沿,此时若计数值COUNT小于9,即COUNT<
"
计数器将进行正常计数,即执行COUNT<
=COUNT+'
;
否则当计数值COUNT达到9时COUNT变为0,CO输出高电平,作为十进制计数的进位溢出信号,当计数值COUNT为其它值时输出低电平。
控制模块的VHDL源程序()
architectureBEHAVEOFCTRLIS
CONSTANTS0:
STD_LOGIC_VECTOR(1DOWNTO0):
00"
CONSTANTS1:
01"
CONSTANTS2:
11"
CONSTANTS3:
10"
TYPESTATESIS(S0,S1,S2,S3);
SIGNALCURRENT_STATE,NEXT_STATE:
STATES;
COM:
PROCESS(SP,CURRENT_STATE)
CASECURRENT_STATEIS
WHENS0=>
EN<
IFSP='
THENNEXT_STATE<
=S1;
ELSENEXT_STATE<
=S0;
WHENS1=>
IFSP='
=S2;
WHENS2=>
=S3;
WHENS3=>
ENDCASE;
ENDBEHAVE;
控制模块的VHDL源程序()是用VDHL设计的有限状态机。
SYNCH是主控时序进程;
COM是主控组合进程。
在上面的结构体说明部分,定义了含四个状态的数据类型STATES,然后将现态CURRENT_STATE和次态NEXT_STATE变量的数据类型定义为STATES,数据类型定义为SIGNAL。
对于此程序,如果异步清零信号CLR有过一个复位脉冲,当前状态被异步设置为S0。
与此同时,启动组合进程,执行“WHENS0=>
…”语句,并使次态NEXT_STATE获得S1,而当此后的第一个CLK上升沿到来时,现态CURRENT_STATE自动转向S1状态。
随着时钟信号的到来,将根据控制信号SP而转向不同的状态,同时输出相应的信号EN去控制外部对象。
计时模块的VHDL源程序
十进制计数器的VHDL源程序()
ENTITYCDU10IS
PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
EN:
CN:
OUTSTD_LOGIC;
COUNT10:
outstd_logic_vector(3downto0));
ENDCDU10;
architectureARTOFCDU10IS
SIGNALSCOUNT10:
BEGIN
COUNT10<
=SCOUNT10;
PROCESS(CLK,CLR,EN)
IF(CLR='
)THEN
SCOUNT10<
CN<
ELSIFRISING_EDGE(CLK)THEN
IF(EN='
)THEN
IFSCOUNT10="
THENCN<
SCOUNT10<
ELSECN<
=SCOUNT10+'
ENDIF;
ENDPROCESS;
ENDART;
十进制计数器的VHDL源程序()的功能是:
当时钟信号CLK、复位信号CLR或时钟使能信号EN中任一信号发生变化,都将启动进程语句PROCESS。
此时如果CLR为’1’,将对计数器清零,即复位,这项独立于CLK的,因而称异步;
如果CLR为’0’,则看是否有时钟信号的上升沿:
如果此时有CLK信号,又测得EN=‘1‘,即允许计数器计数,此时若计数值小于9,即SCOUNT10<
计数器将进行正常计数,即执行SCOUNT10<
否则当计数值SCOUNT10达到9时,输出高电平,作为十进制计数的进位溢出信号,当计数值SCOUNT10为其它值时输出低电平;
但如果测得EN=‘0‘使SCOUNT10保持原值,即将计数值向端口输出:
=SCOUNT10。
六进制计数器的VHDL源程序()
ENTITYCDU6IS
COUNT6:
ENDCDU6;
architectureARTOFCDU6IS
SIGNALSCOUNT6:
COUNT6<
=SCOUNT6;
)THENSCOUNT6<
ELSIFRISING_EDGE(CLK)THEN
IFSCOUNT6="
0101"
SCOUNT6<
SCOUNT6<
=SCOUNT6+'
六进制计数器的VHDL源程序()的功能是:
此时如果CLR为’1’,将对计数器清零,即复位;
如果此时有CLK信号,又测得EN=‘1‘,即允许计数器计数,此时若计数值小于5,即SCOUNT6<
计数器将进行正常计数,即执行SCOUNT6<
否则当计数值SCOUNT6达到5时,输出高电平,作为十进制计数的进位溢出信号,当计数值SCOUNT6为其它值时输出低电平;
但如果测得EN=‘0‘使SCOUNT6保持原值,即将计数值向端口输出:
=SCOUNT6。
计时器的VHDL源程序()
ENTITYCOUNTIS
S_1MS:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
S_10MS:
S_100MS:
S_1S:
S_10S:
S_1MIN:
S_10MIN:
HOUR:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOUNT;
architectureARTOFCOUNTIS
COMPONENTCDU10
PORT(CLK,CLR,EN:
CN:
COUNT10:
ENDCOMPONENTCDU10;
COMPONENTCDU6
COUNT6:
ENDCOMPONENTCDU6;
SIGNALA,B,C,D,E,F,G,H:
std_logic;
U1:
CDU10PORTMAP(CLK,CLR,EN,A,S_1MS);
U2:
CDU10PORTMAP(A,CLR,EN,B,S_10MS);
U3:
CDU10PORTMAP(B,CLR,EN,C,S_100MS);
U4:
CDU10PORTMAP(C,CLR,EN,D,S_1S);
U5:
CDU6PORTMAP(D,CLR,EN,E,S_10S);
U6:
CDU10PORTMAP(E,CLR,EN,F,S_1MIN);
U7:
CDU6PORTMAP(F,CLR,EN,G,S_10MIN);
U8:
CDU10PORTMAP(G,CLR,EN,H,HOUR);
以上程序是计数器的顶层VHDL描述,计时器执行计时功能,计时的方法是对标准时钟脉冲计数。
计数器由四个十进制计数器和两个六进制计数器构成,其中毫秒位、十毫秒位、秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
为了达到连接底层元件形成更高层次的电路设计结构,文件使用了元件例化语句。
文件在实体中首先定义了计数器顶层设计文件的端口信号,然后在architecture和BEGIN之间利用COMPONENT语句对准备调用的元件作了声明,并定义了A,B,C,D,E,F,G,H八个信号作为器件内部的连接线。
最后利用端口映射语句PORTMAP()将六个十进制计数器和两个六个进制计数器连接起来构成一个完整的计数器。
(详细功能见仿真图的分析)
显示模块的VHDL源程序
数据选择器的VHDL源程序()
ENTITYMULXIS
PORT(CLK,CLR,EN:
OUTBCD:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
S_10MS:
INSTD_LOGIC_VECTOR(3DOWNTO0);
S_100MS:
S_1S:
S_10S:
S_1MIN:
S_10MIN:
HOUR:
S_1MS:
SEG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDMULX;
architectureARTOFMULXIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGINIFCLR='
THEN
COUNT<
1111"
ELSIFRISING_EDGE(CLK)THEN
IFEN='
THENIFCOUNT="
ELSE
COUNT<
=COUNT+'
ENDIF;
IFCLK'
EVENTANDCLK='
CASECOUNTIS
WHEN"
=>
OUTBCD<
=S_1MS;
SEG<
11111110"
0001"
=S_10MS;
11111101"
WHEN"
0010"
=S_100MS;
SEG<
11111011"
0011"
=S_1S;
11110111"
0100"
=S_10S;
11101111"
=S_1MIN;
11011111"
0110"
=S_10MIN;
10111111"
WHEN"
0111"
=HOUR;
01111111"
1000"
WHENOTHERS=>
00000000"
ENDCASE;
程序分析:
此程序中包含两个进程,信号CLK都将启动这两个进程。
对于第一个进程:
当信号CLK发生变化,如果此时复位信号CLR为高电平,COUNT将置为“1111”;
否则如果遇到信号CLK的上升沿,又测得EN=‘1‘,即允许计数,此时若计数值小于9,即SCOUNT<
计数器将进行正常计数,即执行COUNT<
否则当计数值COUNT达到9时,输出高电平,作为十进制计数的进位溢出信号,当计数值COUNT为其它值时输出低电平;
对于第二个进程:
当信号CLK发生变化,此时如果遇到信号CLK的上升沿,将执行CASE语句。
根据信号COUNT的值赋予不同的OUTBCD和SEG的值。
从而实现数据选择器的功能。
BCD七段译码驱动器的VHDL源程序()
ENTITYBCD7IS
PORT(BCD:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDBCD7;
architectureARTOFBCD7IS
LED<
1111110"
WHENBCD="
"
0110000"
1101101"
1111001"
0110011"
1011011"
1011111"
1110000"
1111111"
1111011"
0000000"
此程序主要由WHEN_ELSE结构的并行语句构成,根据信号BCD的值赋值于LED。
比如,BCD为“0001”,则LED为“0110000”。
顶层设计的VHDL源程序()
libraryieee;
use;
ENTITYMBIS
PORT(SP,CLR,CLK:
CO,EN:
OUTSTD_LOGIC;
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDMB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 eda 技术 快速 计时器 设计 管理 资料