多功能数字时钟的设计EDA课程设计报告.docx
- 文档编号:3732287
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:61
- 大小:501.09KB
多功能数字时钟的设计EDA课程设计报告.docx
《多功能数字时钟的设计EDA课程设计报告.docx》由会员分享,可在线阅读,更多相关《多功能数字时钟的设计EDA课程设计报告.docx(61页珍藏版)》请在冰豆网上搜索。
多功能数字时钟的设计EDA课程设计报告
多功能数字时钟的设计
1绪论
1.1设计目的
本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,加深对计算机体系结构的理解。
通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
通过对实用数字钟的设计,巩固和综合运用计算机原理的基本理论和方法,理论联系实际,提高设计、分析、解决计算机技术实际问题的独立工作能力。
1.2设计要求
(1)熟练掌握VHDL语言的结构特点并能运用到具体实际中。
(2)学会利用复杂的可编程逻辑器件进行简单的电子系统设计。
(3)熟悉并掌握基于EDA实验开发系统设计实际问题的方法和步骤。
(4)通过设计过程提高自己运用所学知识来分析解决问题的能力。
1.3设计内容
本课程设计中使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35开发板上的资源和QuartusII软件,实现一个多功能数字时钟。
本设计的任务要求显示格式为小时-分钟-秒钟,整点报时,报时时间为10秒,即从整点前10秒钟开始进行报时提示,喇叭开始发声,直到过整点时,在5秒LED开始闪烁,过整点后,停止闪烁。
系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
扩展内容:
用16*16点阵显示实现日期的动态显示用4×4键盘阵列键盘替换按键实现日期、时钟的调整,用液晶显示模块日期、时间的显示。
1.4设计环境
本次课题设计方要用到的开发环境是Altera公司的EDA设计工具软件QuartusII。
Altera公司的工作与EDA厂家紧密结合,使QuartusII软件可以与其它工业标准的设计输入、综合和校验工具相连接。
设计者可以使用Altera或标准EDA输入工具进行设计,使用QuartusII编译器对Altera器件的设计进行编译,并使用Altera或其它EDA校验工具进行仿真。
目前,QuartusII支持与Cadence,MentorGraphics,Synopsys,Viewlogic等EDA工具接口。
QuartusII的设计输入、处理和校验功能都集中在统一的开发环境下,这样可以加快动态调试,缩短开发周期。
QuartusII软件支持多种硬件描述语言设计输入,包括VHDL,VerilogHDL和Altera自己的硬件描述语言AHDL。
QuartusII软件提供丰富的库单元供设计调用,其中包括74系列的全部器件和一些基本的逻辑门,多种特殊的逻辑宏功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function).调用库单元进行设计,可以大大减轻工作量。
2VHDL简介
2.1VHDL硬件描述语言简介
模块是VHDL的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。
一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构描述。
一个模块可以在另一个模块中使用。
说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。
语句定义设计的功能和结构。
说明部分和语句可以散布在模块中的任何地方;但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。
为了使模块描述清晰和具有良好的可读性,最好将所有的说明部分放在语句前。
本书中的所有实例都遵守这一规范。
在模块中,可用下述方式描述一个设计:
(1)数据流方式;
(2)行为方式;
(3)结构方式;
(4)上述描述方式的混合。
VHDL模型中的所有时延都根据时间单位定义。
在顺序过程中出现的语句是过程赋值模块化的实例。
模块化过程赋值在下一条语句执行前完成执行。
过程赋值可以有一个可选的时延。
时延可以细分为两种类型:
(1)语句间时延:
这是时延语句执行的时延。
(2)语句内时延:
这是右边表达式数值计算与左边表达式赋值间的时延。
在VHDL中可使用如下方式描述结构:
(1)内置门原语(在门级);
(2)开关级原语(在晶体管级);
(3)用户定义的原语(在门级);
(4)模块实例(创建层次结构)。
3各模块电路及其简介
3.1分频器模块
图3.1分频器模块
因为本实验选用频率为10KHZ,对于秒表的计时和进行数码管的动态扫描来说,频率都太大了,因此要将10KHz进行分频处理,本次设计将分成1Hz频率。
3.2控制调节模块
图3.2控制调节模块
本模块用于时间与日期的切换与时间的调节、日期的调节以及复位调节,其中K1用于时间与日期的切换,S1、S2用于时间的调节,S3、S4、S5用于日期的调节,最后S8为复位按键。
3.3报警模块
图3.3报警模块
报警模块中有两个报警输出,其一为蜂鸣器,在整点前十秒开始发声;其二为LED灯显示输出,在最后5秒按照一定的规律亮灯。
本模块受到前一模块输出分、秒的控制。
3.4数码管显示模块
图3.4数码管显示模块
很显然,此模块是用来进行数码管显示的,先进行动态扫描,然后将程序中要求输出的部分通过7段数码管显示出来。
其中K1用于控制显示部分是日期还是时间。
比之于静态显示,动态显示有着不可替代的优点:
占用数据线少,功耗
小。
3.516*16点阵控制模块
图3.516*16点阵控制模块
本模块用于控制后面的16*16点阵显示模块,其中keyc用于控制点阵的行扫描,S为4根数据总线,用于控制点阵数据的动态显示。
3.616*16点阵显示模块
图3.616*16点阵显示模块
该模块用于满足实验内容中用16*16点阵动态显示日期的要求。
可以看出,输出为每一行的数据,通过动态扫描之后就可以动态的显示所有的16行数据。
4设计步骤
4.1新建一个工程
(1)打开QuartusII12.1sp1仿真软件,点击File=>NewProjectWizard按钮创建一个新的工程。
弹出如图所示对话框:
(2)再点击Next按钮出现下一对话框并将工程名和文件名都命名为zjh:
(3)然后再点击Next按钮出现下一对话框将Family设置为cycloneIII,将Package设置为FBGA,将Picount设置为780,将Speedgrade设置为8并选择EP3C80F780C8器件,如图所示:
(4)最后点击Next=>Finish按钮完成新工程的创建。
4.2新建一个VHDL文件
(1)点击File=>New按钮出现如图所示对话框:
(2)选择VHDLFile完成文件创建,创建完成后如图所示:
4.3VHDL程序的编译及仿真
4.3.1VHDL程序的编译
将编写好的符合实验要求的VHDL程序复制在上图所示的对话框内,然后点击Processing=>StartCompilation按钮开始进行编译,编译完成并确保程序无误后开始进行管脚分配。
4.3.2管脚分配
(1)点击Assignments=>AssignmentsEditor按钮出现如图所示对话框:
(2)再点击List、>>、OK按钮出现如图所示管脚分配对话框:
(3)然后按如下表所示的管脚顺序进行分配:
Display[0]
Location
PIN_G16
Yes
Display[1]
Location
PIN_G17
Yes
Display[2]
Location
PIN_F18
Yes
Display[3]
Location
PIN_G18
Yes
Display[4]
Location
PIN_G15
Yes
Display[5]
Location
PIN_G14
Yes
Display[6]
Location
PIN_G12
Yes
Display[7]
Location
PIN_M21
Yes
K1
Location
PIN_AH12
Yes
keyc[0]
Location
PIN_L5
Yes
keyc[1]
Location
PIN_H6
Yes
keyc[2]
Location
PIN_H7
Yes
keyc[3]
Location
PIN_H5
Yes
keyr[0]
Location
PIN_C17
Yes
keyr[1]
Location
PIN_D15
Yes
keyr[2]
Location
PIN_D14
Yes
keyr[3]
Location
PIN_D13
Yes
keyr[4]
Location
PIN_D12
Yes
keyr[5]
Location
PIN_D10
Yes
keyr[6]
Location
PIN_C10
Yes
keyr[7]
Location
PIN_C9
Yes
keyr[8]
Location
PIN_D21
Yes
keyr[9]
Location
PIN_C21
Yes
keyr[10]
Location
PIN_D20
Yes
keyr[11]
Location
PIN_D19
Yes
keyr[12]
Location
PIN_C19
Yes
keyr[13]
Location
PIN_D18
Yes
keyr[14]
Location
PIN_C18
Yes
keyr[15]
Location
PIN_D17
Yes
led[0]
Location
PIN_AE8
Yes
led[1]
Location
PIN_J22
Yes
led[2]
Location
PIN_M24
Yes
led[3]
Location
PIN_L24
Yes
S1
Location
PIN_AF5
Yes
S2
Location
PIN_AH6
Yes
S3
Location
PIN_AH7
Yes
S4
Location
PIN_AH8
Yes
S5
Location
PIN_AG10
Yes
S8
Location
PIN_AG7
Yes
SEG_SEL[0]
Location
PIN_C22
Yes
SEG_SEL[1]
Location
PIN_D22
Yes
SEG_SEL[2]
Location
PIN_G9
Yes
spk
Location
PIN_L23
Clk
Location
PIN_A14
Yes
(4)分配完成后再进行一次编译以使管脚分配生效。
4.3.3下载与仿真
用下载线将电脑USB接口和试验箱VGA接口相连接,点击Tools=>Programmer按钮将OutputFile内的文件添加进去,再点击Start按钮将结果下载到试验箱内。
观察并操作试验箱看仿真结果能否满足数字时钟的设计需求。
5心得与体会
这次的EDA课程设计是我大学的第三次课程设计,由于刚开始设计思路不清晰,对QuartusII12.1sp1仿真软件的运用也不熟练而且相关的知识准备也不充分,所以拿到设计题目后感觉不知所措,不知道如何开始。
但是通过一段时间的查阅资料和请教同学老师我发现设计多功能数字时钟也并不十分困难,在他们的帮助与指导下我的课程设计也就顺利的一步步展开。
通过这次课程设计让我体会到在实际的操作过程中,要把理论中所学的知识灵活地运用起来,在程序调试中会遇到各种各样的问题,而耐心就是我们最好的帮手,遇事不能急、不能慌,慢慢分析才能解决问题。
这次课程设计提高了我解决问题的能力,使我学会了在设计中怎样去查找问题,然后怎样解决问题。
这次课程设计让我可以熟练的掌握了QuartusII12.1sp1仿真软件的操作,也了解了如何运用VHDL语言和FPGA芯片去解决实际问题,总之通过这次课程设计自己还是有了不小的收获与提高。
6参考文献
1《SOPCIIEDA实验指导书》(第二版)
2《SOPCII使用手册》(第二版)
3
4《EDA技术基础》.谭会生编著.湖南大学出版社,2004
5《EDA技术实用教程》(第三版),潘松、黄继业编著,科学出版社,2010
7附录
附录一VHDL程序清单
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
--------------------------------------------------------------------
entityzjhis
port(Clk:
instd_logic;--时钟输入
S8:
instd_logic;--复位输入
S1,S2:
instd_logic;--ChangeHour,Minute
S3,S4,S5:
instd_logic;--ChangeYear,MonthandDay
spk:
outstd_logic;--蜂鸣器
led:
outstd_logic_vector(3downto0);--整点输报时输出
Display:
outstd_logic_vector(7downto0);--七段码管显示输出
SEG_SEL:
bufferstd_logic_vector(2downto0);--七段码管扫描驱动
keyc:
outstd_logic_vector(3downto0);
keyr:
outstd_logic_vector(15downto0);
K1:
instd_logic--显示切换
);
endzjh;
--------------------------------------------------------------------
architecturebehaveofzjhis
signalDisp_Temp:
integerrange0to15;
signalDisp_Decode:
std_logic_vector(7downto0);
signalSEC1,SEC10:
integerrange0to9;
signalMIN1,MIN10:
integerrange0to9;
signalHOUR1,HOUR10:
integerrange0to9;
signalYear1,Year10:
integerrange0to9;
signalMonth1,Month10:
integerrange0to9;
signalDay1,Day10:
integerrange0to9;
signalMusic_Count:
std_logic_vector(2downto0);
signalClk_Count1:
std_logic_vector(13downto0);--产生1Hz时钟的分频计数器
signalClk1Hz:
std_logic;
signalled_count:
std_logic_vector(2downto0);
signalled_display:
std_logic_vector(3downto0);
signalcdount:
std_logic_vector(3downto0);
signaldount:
std_logic_vector(12downto0);
signals:
std_logic_vector(3downto0);
signalm,d,y:
integerrange0to31;
begin
process(Clk)
begin
if(Clk'eventandClk='1')then
if(Clk_Count1<10000)then
Clk_Count1<=Clk_Count1+1;
else
Clk_Count1<="00000000000001";
endif;
endif;
endprocess;
Clk1Hz<=Clk_Count1(13);
process(Clk1Hz,S8)
begin
if(S8='0')then--系统复位
SEC1<=0;
SEC10<=0;
MIN1<=0;
MIN10<=0;
HOUR1<=0;
HOUR10<=0;
Year10<=1;
Year1<=3;
Month10<=0;
Month1<=1;
Day10<=0;
Day1<=1;
elsif(Clk1Hz'eventandClk1Hz='1')then--正常运行
if(K1='1')then
if(S3='0')then--调节年
if(Year1=9)then
Year1<=0;
Year10<=Year10+1;
elsif(Year10=9andYear1=9)then
Year1<=0;
Year10<=0;
else
Year1<=Year1+1;
endif;
endif;
if(S4='0')then--调节月
if(Month1=9)then
Month1<=0;
Month10<=Month10+1;
elsif(Month10=1andMonth1=2)then
Month1<=0;
Month10<=0;
Year1<=Year1+1;
else
Month1<=Month1+1;
endif;
endif;
if(S5='0')then--调节日
if(Day1=9)then
Day1<=0;
Day10<=Day10+1;
elsif(Day10=3andDay1=1)then
Day1<=0;
Day10<=0;
Month1<=Month1+1;
else
Day1<=Day1+1;
endif;
endif;
elsif(K1='0')then
if(S1='0')then--调节小时
if(HOUR1=9)then
HOUR1<=0;
HOUR10<=HOUR10+1;
elsif(HOUR10=2andHOUR1=3)then
HOUR1<=0;
HOUR10<=0;
Day1<=Day1+1;
else
HOUR1<=HOUR1+1;
endif;
elsif(S2='0')then--调节分钟
if(MIN1=9)then
MIN1<=0;
if(MIN10=5)then
MIN10<=0;
HOUR1<=HOUR1+1;
else
MIN10<=MIN10+1;
endif;
else
MIN1<=MIN1+1;
endif;
endif;
endif;
if(SEC1=9)then
SEC1<=0;
if(SEC10=5)then
SEC10<=0;
if(MIN1=9)then
MIN1<=0;
if(MIN10=5)then
MIN10<=0;
if(HOUR10>=2andHOUR1>=3)then
HOUR10<=0;
HOUR1<=0;
--Day+=1;
if(Day10=3andDay1=0)then
Day10<=0;
Day1<=1;
--Month+=1;
if(Month10=1andMonth1=2)then
Month10<=0;
Month1<=1;
--Year+=1;
if(Year10=9andYear1=9)then
Year10<=0;
Year1<=0;
endif;
if(Year1<9)then
Year1<=Year1+1;
elsif(Year1=9)then
Year10<=Year10+1;
Year1<=0;
endif;
endif;
if(Month1<9)then
Month1<=Month1+1;
elsif(Month1=9)then
Month10<=Month10+1;
Month1<=0;
endif;
endif;
if(Day1<9)then
Day1<=Day1+1;
elsif(Day1=9)then
Day10<=Day10+1;
Day1<=0;
endif;
elsif(HOUR1<9)then
HOUR1<=HOUR1+1;
elsif(HOUR1=9)then
HOUR1<=0;
HOUR10<=HOUR10+1;
endif;
else
MIN10<=MIN10+1;
endif;
else
MIN1<=MIN1+1;
endif;
else
SEC10<=SEC10+1;
endif;
else
SEC1<=SEC1+1;
endif;
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 数字 时钟 设计 EDA 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)