EDA课程设计数字秒表Word文件下载.doc
《EDA课程设计数字秒表Word文件下载.doc》由会员分享,可在线阅读,更多相关《EDA课程设计数字秒表Word文件下载.doc(11页珍藏版)》请在冰豆网上搜索。
第五章:
主要VHDL源程序.....................................................................................4
1)十进制计数器的VHDL源程序..............................................................4
2)六进制计数器的VHDL源程序..............................................................5
3)蜂鸣器的VHDL源程序..........................................................................5
4)译码器的VHDL源程序..........................................................................6
5)控制选择器的VHDL源程序..................................................................7
6)元原件例化的VHDL源程序..................................................................8
第六章:
系统仿真.......................................................................................................10
第七章:
系统扩展思路...............................................................................................11
第八章:
设计心得总结...............................................................................................11
数字秒表的设计
一、系统设计要求
1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲。
二、实验目的
通过本次课设,加深对EDA技术设计的理解,学会用QuartusⅡ工具软件设计基本电路,熟练掌握VHDL语言,为以后工作使用打下坚实的基础。
三、实验原理
秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:
0~59;
ss表示秒:
xx表示百分之一秒:
0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:
0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
在设计秒表的时候,时钟的选择为100Hz。
变量的选择:
因为xx(0.01秒)和hh(小时)表示的范围都是0~99,所以用两个4位二进制码(BCD码)表示;
而ss(秒钟)和mm(分钟)表示的范围是0~59,所以用一个3位的二进制码和一个4位的二进制码(BCD)码表示。
显示的时候要注意的问题就是小时的判断,如果小时是00,则显示格式为mm-ss-xx,如果小时不为00,则显示hh-mm-ss。
四、系统设计方案
秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
四个10进制计数器:
用来分别对百分之一秒、十分之一秒、秒和分进行计数;
两个6进制计数器:
用来分别对十秒和十分进行计数;
分频器:
用来产生100HZ计时脉冲;
显示译码器:
完成对显示的控制。
根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。
按适配划分后的管脚定位,同相关功能块硬件电路接口连线。
用VHDL语言描述所有底层模块。
清零信号为异步清零。
当最高位记到6时停止计数显示译码器全部显示零,并发出十声警报声。
按下复位按钮后继续计数。
数字秒表拟由单片的CPLD/FPGA来实现,经分析设计要求,拟定整个系统由10个模块组成,原理图如下:
五、主要VHDL源程序
1.十进制计数器的VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycount10is
port(clk,start,clr:
instd_logic;
cout:
outstd_logic;
daout:
outstd_logic_vector(3downto0));
endcount10;
architectureoneofcount10is
signalq0:
std_logic_vector(3downto0);
signalq1:
std_logic;
begin
process(clk,clr)
ifclr='
1'
thenq0<
="
0000"
;
elsif(clk'
eventandclk='
)then
ifstart='
then
ifq0="
1001"
q1<
='
elseq0<
=q0+1;
0'
endif;
endif;
endif;
endprocess;
daout<
=q0;
cout<
=q1;
endone;
2.六进制计数器的VHDL源程序
entitycount6is
endcount6;
architecturetwoofcount10is
0101"
endtwo;
3.蜂鸣器的VHDL源程序
entityalarmis
port(clk,I:
instd_logic;
q:
outstd_logic
);
endalarm;
architecturearofalarmis
signaln:
integerrange0to20;
signalq0:
std_logic;
process(clk)
begin
ifclk'
then
ifi='
n<
=0;
elsifn<
=19andi='
q0<
=notq0;
=n+1;
elseq0<
q<
=q0;
endar;
4.译码器的VHDL源程序
entitydeledis
port(num:
instd_logic_vector(3downto0);
led:
outstd_logic_vector(6downto0));
enddeled;
architectureaofdeledis
process(num)
begin
casenumis
when"
=>
led<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"