电子信息EDA技术实验指导书Word文件下载.docx

上传人:b****5 文档编号:17014813 上传时间:2022-11-27 格式:DOCX 页数:27 大小:538.47KB
下载 相关 举报
电子信息EDA技术实验指导书Word文件下载.docx_第1页
第1页 / 共27页
电子信息EDA技术实验指导书Word文件下载.docx_第2页
第2页 / 共27页
电子信息EDA技术实验指导书Word文件下载.docx_第3页
第3页 / 共27页
电子信息EDA技术实验指导书Word文件下载.docx_第4页
第4页 / 共27页
电子信息EDA技术实验指导书Word文件下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

电子信息EDA技术实验指导书Word文件下载.docx

《电子信息EDA技术实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子信息EDA技术实验指导书Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。

电子信息EDA技术实验指导书Word文件下载.docx

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"

--全灭

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

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

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

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