电子信息EDA技术实验指导书Word文件下载.docx
- 文档编号:17014813
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:27
- 大小:538.47KB
电子信息EDA技术实验指导书Word文件下载.docx
《电子信息EDA技术实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子信息EDA技术实验指导书Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitytestis
Port(led:
outstd_logic;
key:
instd_logic
);
endtest;
architectureBehavioraloftestis
begin
led<
=key;
endBehavioral;
(5)输入程序后,存盘,如图11所示:
图11存盘
(6)点击Processing->
StartCompilation编译该文件,系统将开始编译,结束后,给出提示信息和编译结果,如图5-12所示:
图12编译结果显示
(7)仿真
(8)建立时序仿真文件,如图9所示,选择“VectorWaveformFile”,出现图10的界面,在Name空白处击右键,Insert→InsertNodeorBus。
图10
图11
在图11中单击
图12
在12中单击
,再单击
→OK→OK。
如图13所示
图13
仿真文件存盘时,文件名字必须与顶层文件同名,即test,默认即可。
图14
图15
图15是为仿真输入赋值的。
如想赋值‘1’,单击
。
(9)单击菜单进行仿真
图16
仿真结果如图17。
图17仿真波形
(5)点击Assignment->
Pins进行引脚分配,实验箱上拨码开关和LED对应的引脚分别为58和98,分配结果如图18所示。
图18引脚分配
(6)参照步骤(5)重新编译系统,系统将生成FPGA配置文件,在编译过程中若显示警告可不理会;
(7)准备下载,注意打开实验箱电源,并连接下载电缆;
(8)点击Tools->
Programmer将配置文件下载到FPGA,系统显示如图19所示,注意选择下载模式为JTAG,若下载线硬件显示“NoHardware”(如图19所示),则点击HardwareSetup按钮,系统显示如图20,双击USB-Baster,设定其为当前选定硬件,再点Close返回。
图19下载界面
图20下载线配置
这时,系统界面如图21,选中Program/Configure,点击Start,将配置文件下载到FPGA。
图21配置好下载电缆的下载界面
观察实验效果,尝试开关拨码开关K1,发光二极管D1-1将随之亮灭。
实验一、计数器程序设计
1、实验目的:
1)了解计数器的工作原理;
2)用VHDL语言编写60进制计数器,通过设计熟悉EDA开发的基本流程;
3)熟悉QuartusII软件的使用,练习使用文本编辑器;
4)掌握VHDL编写中的一些小技巧。
2、实验要求:
(1)在实验报告结果分析中要对测量所得数据进行分析
3、实验内容:
利用VHDL语言设计60进制计数器,编译、仿真、下载
4、主要仪器设备及试剂:
1)计算机一台,实验箱
2)QUARTUSII8.1环境
5、实验步骤
按照QUARTUSII软件使用方法,为60进制计数器建工程。
工程名应为cntm60(实体名)。
参考程序如下。
要求编译、仿真、下载。
libraryieee;
--调用ieee库
useieee.std_logic_1164.all;
--使用ieee库中的1164包
useieee.std_logic_unsigned.all;
--使用ieee库中的无符号包
entitycntm60is
port(ci:
instd_logic;
--来至低级的进位
nreset:
--清零端
load:
--置数端
d:
instd_logic_vector(7downto0);
--与置数端对应的数据输入端
clk:
时钟端
co:
进位输出端
qh:
bufferstd_logic_vector(3downto0);
--计数器的高位输出端
ql:
bufferstd_logic_vector(3downto0));
--计数器的低位输出端
endcntm60;
architecturebehaveofcntm60is
co<
='
1'
when(qh="
0101"
andql="
1001"
andci='
)else'
0'
;
process(clk,nreset)
begin
if(nreset='
)then
qh<
="
0000"
ql<
elsif(clk'
eventandclk='
if(load='
=d(7downto4);
=d(3downto0);
elsif(ci='
if(ql=9)then
if(qh=5)then
else
=qh+1;
endif;
=ql+1;
endprocess;
endbehave;
实验二、七段译码器器设计
1)了解七段译码器的原理。
2)进一步熟悉EDA开发的基本流程。
利用VHDL语言完成动态译码器的设计,仿真,下载。
useieee.std_logic_arith.all;
entitydecl7is
port(
a:
instd_logic_vector(3downto0);
sel:
outstd_logic_vector(2downto0);
ledl7:
outstd_logic_vector(6downto0));
enddecl7;
architecturebehaveofdecl7is
sel<
="
111"
process(a)
caseais
when"
=>
ledl7<
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1101111"
1010"
1110111"
1011"
1111100"
1100"
0111001"
1101"
1011110"
1110"
1111001"
1111"
1110001"
whenothers=>
null;
endcase;
endprocess;
实验三、多功能数字钟设计
1)了解数字钟的原理;
3)进一步掌握自顶向下的数字系统设计方法,并体会其优越性;
利用综合设计方法完成数字钟的设计,仿真,下载。
5、实验原理
多功能数字钟应该具有的功能有:
显示时-分-秒、整点报时、小时和分钟可调等基本功能。
首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。
在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位,用4位二进制码(BCD码)显示个位。
实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描的确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。
对于报警信号,由于实验箱上只有一个小的扬声器,而要使扬声器发声,必须给其一定频率的信号进行驱动,频率越高,声音越尖。
另外由于人耳的听觉范围是300Hz~3.4KHz左右,所以设计时也要选择恰当的发声频率。
实验内容
本实验的任务就是设计一个多功能数字钟,要求显示格式为小时-分钟-秒钟,整点报时,报时时间为10秒,即从整点前10秒钟开始报警,且前五次报警的声音频率较低,最后一次报警声音的频率较高,类似于收音机整点报时,即从xx-59-50秒开始,依次为嘀、嘀、嘀、嘀、嘀、嗒。
系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
报时的喇叭采用实验箱的扬声器模块,整点报时时嘀声用1.25KHz(对10KHz信号进行8分频),嗒声用2.5KHz(对10KHz信号进行4分频)。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
实验步骤
完成多功能数字钟的实验步骤如下:
1.首先打开QuartusII软件,新建一个工程,并新建一个VHDLFile。
2.按照自己的想法,编写VHDL程序
3.对自己编写的VHDL程序进行编译并仿真。
4.仿真无误后,根据引脚对照表,对实验中用到的时钟信号、按键开关、七段码管及扬声器输出进行管脚绑定,然后再重新编译一次。
5.用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。
6.按动S1和S2按键,观察时钟的小时和分钟会不会递增。
7.将时间调整到xx时59分,观察时钟到了第50秒时是否会发出嘀、
嘀、嘀、嘀、嘀、嗒的报时声。
注意:
此实验需管脚复用
-------------------------------------
--Title:
多功能数字钟--
-------------------------------------
--------------------------------------------------------------------
entityexp15is
port(Clk:
instd_logic;
--时钟输入
Rst:
--复位输入
S1,S2:
--时间调节输入
SPK:
outstd_logic;
--扬声器输出
Display:
outstd_logic_vector(7downto0);
--七段码管显示输出
SEG_SEL:
bufferstd_logic_vector(2downto0)--七段码管扫描驱动
endexp15;
architecturebehaveofexp15is
signalDisp_Temp:
integerrange0to15;
signalDisp_Decode:
std_logic_vector(7downto0);
signalSEC1,SEC10:
integerrange0to9;
signalMIN1,MIN10:
signalHOUR1,HOUR10:
signalClk_Count1:
std_logic_vector(13downto0);
--产生1Hz时钟的分频计数器
signalClk1Hz:
std_logic;
signalMusic_Count:
std_logic_vector(2downto0);
process(Clk)
if(Clk'
eventandClk='
)then
if(Clk_Count1<
10000)then
Clk_Count1<
=Clk_Count1+1;
else
00000000000001"
Clk1Hz<
=Clk_Count1(13);
process(Clk1Hz,Rst)
if(Rst='
)then--系统复位
SEC1<
=0;
SEC10<
MIN1<
MIN10<
HOUR1<
HOUR10<
elsif(Clk1Hz'
eventandClk1Hz='
)then--正常运行
if(S1='
)then--调节小时
if(HOUR1=9)then
=HOUR10+1;
elsif(HOUR10=2andHOUR1=3)then
=HOUR1+1;
elsif(S2='
)then--调节分钟
if(MIN1=9)then
if(MIN10=5)then
=MIN10+1;
=MIN1+1;
elsif(SEC1=9)then
if(SEC10=5)then
=SEC10+1;
=SEC1+1;
process(Clk)
Music_Count<
=Music_Count+1;
if(MIN10=5andMIN1=9andSEC10=5)then--在59分50秒开始提示
if((SEC1MOD2)=0)then--在偶数秒开始发声
SPK<
=Music_Count
(2);
--嘀
elsif(MIN10=0andMIN1=0andSEC10=0andSEC1=0)then
=Music_Count
(1);
--嗒
process(SEG_SEL)
case(SEG_SEL+1)is
when"
000"
=>
Disp_Temp<
=HOUR10;
001"
=HOUR1;
010"
=10;
011"
=MIN10;
100"
=MIN1;
101"
110"
=SEC10;
=SEC1;
)then--扫描累加
SEG_SEL<
=SEG_SEL+1;
Display<
=Disp_Decode;
process(Disp_Temp)--显示转换
caseDisp_Tempis
when0=>
Disp_Decode<
00111111"
--0
when1=>
00000110"
--1
when2=>
01011011"
--2
when3=>
01001111"
--3
when4=>
01100110"
--4
when5=>
01101101"
--5
when6=>
01111101"
--6
when7=>
00000111"
--7
when8=>
01111111"
--8
when9=>
01101111"
--9
when10=>
01000000"
---
whenothers=>
00000000"
--全灭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子信息 EDA 技术 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)