EDA数字钟的设计实验报告.docx

上传人:b****5 文档编号:4042438 上传时间:2022-11-27 格式:DOCX 页数:12 大小:543.07KB
下载 相关 举报
EDA数字钟的设计实验报告.docx_第1页
第1页 / 共12页
EDA数字钟的设计实验报告.docx_第2页
第2页 / 共12页
EDA数字钟的设计实验报告.docx_第3页
第3页 / 共12页
EDA数字钟的设计实验报告.docx_第4页
第4页 / 共12页
EDA数字钟的设计实验报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

EDA数字钟的设计实验报告.docx

《EDA数字钟的设计实验报告.docx》由会员分享,可在线阅读,更多相关《EDA数字钟的设计实验报告.docx(12页珍藏版)》请在冰豆网上搜索。

EDA数字钟的设计实验报告.docx

EDA数字钟的设计实验报告

成绩

指导教师

日期

五邑大学实验报告

 

实验课程名称:

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   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:

="0000";

cnt0:

="0000";

elsif clk'event and clk='1' then

if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)

co<='1';----进位

cnt0:

="1001";----低位为9

elsif cnt0<"1001" then----小于9时

cnt0:

=cnt0+1;----计数

else

cnt0:

="0000";

if cnt1<"0101" then----高位小于5时

cnt1:

=cnt1+1;

else

cnt1:

="0000";

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命令,即弹出设置窗口,命名为57。

 

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   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:

="0000";

cnt0:

="0000";

elsif(clk'event and clk='1') then

if (en='1' or setmin='1') then

if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)

co<='1';----进位

cnt0:

="1001";----低位为9

elsif cnt0<"1001" then----小于9时

cnt0:

=cnt0+1;----计数

else

cnt0:

="0000";

if cnt1<"0101" then----高位小于5时

cnt1:

=cnt1+1;

else

cnt1:

="0000";

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   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);

signal counter  :

 std_logic_vector(3 downto 0);

begin

p1:

 process(reset,sethour,en)

begin

if reset='1' then

   count<="0000";

   counter<="0000";

 

 elsif(clk'event and clk='1') then

   if (en='1' or sethour ='1') then

   if (counter<2) then

   if (count=9) then

       count<="0000";

       counter<=counter + 1;

   else

       count<=count+1;

   end if;

   else

       if (count=3) then

       count<="0000";

       counter<="0000";

   else

       count<=count+1;

   end if;  

   end if;

   end if;

   end if ;

   end process;

daout(7 downto 4)<=counter;

daout(3 downto 0)<=count;

end behav;

 

 

13. 绘制原理图。

选择File→new命令。

在New窗口中的DesignFiles栏选择编译文件的语言类型,这里选择Block Diagram/Schematic选项,按OK按钮后将打开原理图编辑窗口。

双击原理图编辑窗口任何位置,弹出输入文件的对话框,分别在Name栏键入元件名input、SECOND、minute、HOUR和输出引脚output,并用单击拖动的方法参考电路图接好电路,作为本项工程的顶层电路原理设计图。

 

14.全程编译。

选择Processing→Start Compilation命令,启动全程编译。

 

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语言编程掌握能力,掌握这门技术为今后更深层次的学习奠定了基础,使自己受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1