EDA数字钟的设计实验报告 - 图文

睡觉也偷笑 分享 2020-06-30 下载文档

成绩 指导教师 日期

五 邑 大 学 实 验 报 告

实 验 课 程 名 称:

EDA实验

院系名称: 信息工程学院 专业名称: 通信工程(物联网)

(一)实验目的:

设计并实现具有一定功能的数字钟。掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。 (二)实验器材:

计算机 一台,EDA实验箱 一台。 (三)实验原理:

四)实验内容:

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; use ieee.std_logic_unsigned.all; entity SECOND is

port(clk,clr:in std_logic;----时钟/清零信号

sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位

co:out std_logic);-------输出/进位信号 end SECOND;

architecture SEC of SECOND is begin

process(clk,clr)

variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin

if clr='1' then----当ckr为1时,高低位均为0 cnt1:=\cnt0:=\

elsif clk'event and clk='1' then

if cnt1=\and cnt0=\then----当记数为58(实际是经过59个记时脉冲) co<='1';----进位

cnt0:=\低位为9

elsif cnt0<\then----小于9时 cnt0:=cnt0+1;----计数 else

cnt0:=\

if cnt1<\then----高位小于5时 cnt1:=cnt1+1; else

cnt1:=\co<='0'; end if; end if; end if; sec1<=cnt1; sec0<=cnt0; end process; end 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 File选项。然后在VHDL文本编译窗口中输入分模块程序。然后对分模块程序进行保存、编译,封装成可调用的文件,取名为minute。 分模块的源程序如下:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity MINUTE is

port(en,setmin,clr,clk:in std_logic;----时钟/清零信号

MIN1,MIN0:out std_logic_vector(3 downto 0);----秒高位/低位

co:out std_logic);-------输出/进位信号 end MINUTE;

architecture MIN of MINUTE is begin

process(en,setmin,clr,clk)

variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin

if clr='1' then----当ckr为1时,高低位均为0 cnt1:=\cnt0:=\

elsif(clk'event and clk='1') then if (en='1' or setmin='1') then

if cnt1=\and cnt0=\then----当记数为58(实际是经过59个记时脉冲) co<='1';----进位

cnt0:=\低位为9

elsif cnt0<\then----小于9时 cnt0:=cnt0+1;----计数 else

cnt0:=\

if cnt1<\then----高位小于5时 cnt1:=cnt1+1; else

cnt1:=\co<='0'; end if; end if; end if; end iF; MIN1<=cnt1; MIN0<=cnt0; end process; end MIN;

12. 选择File→new命令。在New窗口中的DesignFiles栏选择编译文件的语言类型,这里选择VHDL File选项。然后在VHDL文本编译窗口中输入小时模块程序。然后对分模块程序进行保存、编译,封装成可调用的文件,取名为HOUR.

小时模块的源程序:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour is

port(reset,en ,sethour,clk : in std_logic;

daout : out std_logic_vector(7 downto 0)); end HOUR;

architecture behav of HOUR is

signal count : std_logic_vector(3 downto 0);


EDA数字钟的设计实验报告 - 图文 .doc 将本文的Word文档下载到电脑

下一篇:安庆外国语学校东区五年级语文期末考试卷

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx