EDA实验报告5.docx
- 文档编号:13952387
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:26
- 大小:1.32MB
EDA实验报告5.docx
《EDA实验报告5.docx》由会员分享,可在线阅读,更多相关《EDA实验报告5.docx(26页珍藏版)》请在冰点文库上搜索。
EDA实验报告5
五邑大学
实验课程名称:
电子系统EDA
院系信息工程学院
专业通信工程(物联网工程)
一、实验目的:
设计并实现具有一定功能的数字钟。
掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。
此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。
二、实验器材:
计算机 一台,EDA实验箱 一台。
三、实验原理:
四、实验内容:
1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。
2.按键实现“校时”“校分”功能;
3.用扬声器做整点报时。
当计时到达59’50”时鸣叫。
方案:
利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。
整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。
实验电路结构图 模7
结构图信号/与芯片引脚对照表
结构图上的信号名
Cyclone系列的EP1C3TC144芯片引脚号
结构图上的信号名
Cyclone系列的EP1C3TC144芯片引脚号
结构图上的信号名
Cyclone系列的EP1C3TC144芯片引脚号
PIO0
1
PIO1
2
PIO31
72
PIO71
119
PIO2
3
PIO32
73
PIO72
114
PIO3
4
PIO33
74
PIO73
113
PIO4
5
PIO34
75
PIO74
112
PIO5
6
PIO35
76
PIO75
111
PIO6
7
PIO36
77
PIO76
143
PIO7
10
PIO37
78
PIO77
144
PIO8
11
PIO38
83
PIO78
110
PIO9
32
PIO39
84
PIO79
109
PIO10
33
PIO40
85
SPEAKER
129
PIO11
34
PIO41
96
CLOCK0
93
PIO12
35
PIO42
97
CLOCK2
17
PIO13
36
PIO43
98
CLOCK5
16
PIO14
37
PIO44
99
CLOCK9
92
PIO15
38
PIO45
103
PIO16
39
PIO46
105
PIO17
40
PIO47
106
PIO18
41
PIO48
107
PIO19
42
PIO49
108
PIO20
47
PIO60
131
PIO21
48
PIO61
132
PIO22
49
PIO62
133
PIO23
50
PIO63
134
PIO24
51
PIO64
139
PIO25
52
PIO65
140
PIO26
67
PIO66
141
PIO27
68
PIO67
142
PIO28
69
PIO68
122
PIO29
70
PIO69
121
PIO30
71
PIO70
120
五、实验步骤:
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:
="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命令,即弹出设置窗口,命名为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:
="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 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);
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.观察数码管的秒、分钟和小时的情况。
(六)实验结果:
秒模块编译成功:
生成波形文件成功:
仿真成功:
封装成功:
封装的文件:
分模块编译成功:
仿真成功:
封装后的文件:
小时模块编译成功:
仿真成功:
封装后的文件:
用原理图输入法设计的数字钟:
数字钟编译成功:
仿真成功:
选择芯片类型:
引脚锁定:
引脚锁定结果如下:
七.学习心得
通过实验,我激发了EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件QuarterⅡ的使用也更加熟练。
老师给我们的材料中,用的是GAL器件,我们最终用的是FPGA器件,也就是EP1K10TC100—3芯片,我们分析了电梯在整个运行过程中的状态,并参考资料写出了状态图,然后根据状态图用有限状态机来实现了各个状态之间的转换,进而实现了对电梯的控制。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告