EDA数字钟的设计实验报告文档格式.docx
《EDA数字钟的设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《EDA数字钟的设计实验报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。
2.按键实现“校时”“校分”功能;
3.用扬声器做整点报时。
当计时到达59’50”时鸣叫。
方案:
利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。
整个系统可以是若干文件组成,用PORT
MAP
实现的方式;
也可以是一个文件用多进程方式实现;
亦或者是用文本和图形混合的方式实现;
亦或者是用LPM参数化模块实现。
(五)实验步骤:
1.
新建一个文件夹,命名为shuzizhong.
2.
输入源程序。
打开QuartusⅡ,选择File→new命令。
在New窗口中的DesignFiles栏选择编译文件-的语言类型,这里选择VHDL
File选项。
然后在VHDL文本编译窗口中输入秒模块程序。
秒模块源程序如下:
library
ieee;
use
ieee.std_logic_1164.all;
ieee.std_logic_unsigned.all;
entity
SECOND
is
port(clk,clr:
in
std_logic;
----时钟/清零信号
sec1,sec0:
out
std_logic_vector(3
downto
0);
----秒高位/低位
co:
std_logic);
-------输出/进位信号
end
SECOND;
architecture
SEC
of
begin
process(clk,clr)
variable
cnt1,cnt0:
---计数
if
clr='
1'
then----当ckr为1时,高低位均为0
cnt1:
="
0000"
;
cnt0:
elsif
clk'
event
and
clk='
then
cnt1="
0101"
cnt0="
1000"
then----当记数为58(实际是经过59个记时脉冲)
co<
='
----进位
1001"
----低位为9
cnt0<
"
then----小于9时
=cnt0+1;
----计数
else
cnt1<
then----高位小于5时
=cnt1+1;
0'
if;
sec1<
=cnt1;
sec0<
=cnt0;
process;
SEC;
3.文件存盘。
选择File→Save
As命令,找到已经设立的文件夹,存盘文件名应与实体名一致。
4.创建工程。
打开并建立新工程管理窗口,选择File→New
Project
Wizard命令,即弹出设置窗口,命名为1023019857。
5.将设计文件加入工程中。
单击Next按钮,在弹出的对话框中单击File栏后的按钮,单击Add
All按钮,将与工程相关的所有VHDL文件都加入此工程。
6.选择目标芯片。
单击Next按钮,选择目标器件,首先在Device
Family下拉列表框中选择Cyclone系列。
分别选择Package为TQFP,Pincount为144和Speed
grade为8,选择此系列的具体芯片为EP3C5E144C8。
7.工具设置。
单击Next按钮后,弹出的下一个窗口是EDA工具设置窗口—EDA
Tool
Settings.
8.结束设置。
再单击Next按钮后即弹出工程设置统计窗口,单击Finish按钮,即已设定好此工程。
9.全程编译。
选择Processing→Start
Compilation命令,启动全程编译。
10.编译成功后,将VHDL文件设置成可调用的文件。
在秒模块程序文件SECOND处于打开的情况下,选择菜单File→Creat/Update→Creat
Symbol
Files
for
Current
File,进行封装(元件文件名为SECOND),以便在高层次设计中调用。
同时,在编译成功的基础上,选择Processing中的Generate
Functional
Simuliation
Netlist生成仿真文件,以方便之后的仿真使用。
11.
选择File→new命令。
在New窗口中的DesignFiles栏选择编译文件的语言类型,这里选择VHDL
然后在VHDL文本编译窗口中输入分模块程序。
然后对分模块程序进行保存、编译,封装成可调用的文件,取名为minute。
分模块的源程序如下:
MINUTE
port(en,setmin,clr,clk:
MIN1,MIN0:
MINUTE;
MIN
process(en,setmin,clr,clk)
elsif(clk'
)
(en='
or
setmin='
iF;
MIN1<
MIN0<
MIN;
12.
然后在VHDL文本编译窗口中输入小时模块程序。
然后对分模块程序进行保存、编译,封装成可调用的文件,取名为HOUR.
小时模块的源程序:
hour
port(reset,en
sethour,clk
:
daout
std_logic_vector(7
0));
HOUR;
behav
HOUR
signal
count
counter
p1:
process(reset,sethour,en)
reset='
count<
counter<
sethour
(counter<
2)
(count=9)
=counter
+
1;
=count+1;
(count=3)
daout(7
4)<
=counter;
daout(3
0)<
=count;
behav;
13.
绘制原理图。
在New窗口中的DesignFiles栏选择编译文件的语言类型,这里选择Block
Diagram/Schematic选项,按OK按钮后将打开原理图编辑窗口。
双击原理图编辑窗口任何位置,弹出输入文件的对话框,分别在Name栏键入元件名input、SECOND、minute、HOUR和输出引脚output,并用单击拖动的方法参考电路图接好电路,作为本项工程的顶层电路原理设计图。
14.全程编译。
15.引脚锁定。
选择Assignments→Assignments
Edi按模式七设置设置相应引脚。
16.
编译文件下载。
打开编程窗和配置文件。
首先将适配板上的JTAG口和USB或并口通信线连好,打开电源,在工程管理窗口选择Tool→Programmer命令,弹出如图所示的编程窗口,编程模式选择JPEG,并选中下载文件右侧的第一个小方框。
17.设置编程器。
选择USB-Blaster,单击左上角的Hardware
Setup按钮,在弹出的窗口中设置下载接口方式。
向FPGA下载SOF文件前,要选择打钩Program/Configure项,最后单击下载标示符Start按钮,即进入对目标器件FPGA的配置下载操作。
当Progress显示出100%以及在底部的处理栏中出现“Configuration
Succeeded”时,便是编程成功。
18.观察数码管的秒、分钟和小时的情况。
(六)实验结果:
秒模块编译成功:
生成波形文件成功:
仿真成功:
数字钟编译成功:
选择芯片类型:
引脚锁定:
下载:
(七)实验总结:
通过上述的设计编程,调试,下载测试工作之后,实现了数字钟的各种基本功能,其中包括:
时,分,秒计数显示功能,清零,调节小时,分钟以及整点报时。
中间操作过程中遇到的问题也都逐一在实验过程中得以解决,比如说对数字钟显示58时便产生高位进位以致产生不精准的改善等。
在数字钟的设计过程中,不仅对数字电路原理有了更加深刻的理解,也进一步巩固了对于QuartusII软件平台及VHDL语言编程掌握能力,掌握这门技术为今后更深层次的学习奠定了基础,使自己受益匪浅。