电子信息EDA技术实验指导书.docx

上传人:b****0 文档编号:17382820 上传时间:2023-07-24 格式:DOCX 页数:29 大小:538.88KB
下载 相关 举报
电子信息EDA技术实验指导书.docx_第1页
第1页 / 共29页
电子信息EDA技术实验指导书.docx_第2页
第2页 / 共29页
电子信息EDA技术实验指导书.docx_第3页
第3页 / 共29页
电子信息EDA技术实验指导书.docx_第4页
第4页 / 共29页
电子信息EDA技术实验指导书.docx_第5页
第5页 / 共29页
电子信息EDA技术实验指导书.docx_第6页
第6页 / 共29页
电子信息EDA技术实验指导书.docx_第7页
第7页 / 共29页
电子信息EDA技术实验指导书.docx_第8页
第8页 / 共29页
电子信息EDA技术实验指导书.docx_第9页
第9页 / 共29页
电子信息EDA技术实验指导书.docx_第10页
第10页 / 共29页
电子信息EDA技术实验指导书.docx_第11页
第11页 / 共29页
电子信息EDA技术实验指导书.docx_第12页
第12页 / 共29页
电子信息EDA技术实验指导书.docx_第13页
第13页 / 共29页
电子信息EDA技术实验指导书.docx_第14页
第14页 / 共29页
电子信息EDA技术实验指导书.docx_第15页
第15页 / 共29页
电子信息EDA技术实验指导书.docx_第16页
第16页 / 共29页
电子信息EDA技术实验指导书.docx_第17页
第17页 / 共29页
电子信息EDA技术实验指导书.docx_第18页
第18页 / 共29页
电子信息EDA技术实验指导书.docx_第19页
第19页 / 共29页
电子信息EDA技术实验指导书.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子信息EDA技术实验指导书.docx

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

电子信息EDA技术实验指导书.docx

电子信息EDA技术实验指导书

EDA技术

实验指导书

适用于电子信息工程专业

QUARTUSII8.1软件的使用

一、实验目的及要求:

1、练习使用QUARTUSII8.1软件,掌握利用该软件进行简单EDA设计的基本流程;

2、完成一个通过拨码开关控制发光二极管亮灭的应用,实验结束后可独立完成思考题。

二、实验环境及器材:

1、微机(已安装授权的QUARTUSII8.1软件)

2、EDA/SOPC实验开发系统

3、USBBlaster下载线一根

三、背景知识及操作流程:

QUARTUSII是ALTERA公司推出的EDA开发工具,其前身为MAXPLUSII,目前实验室安装的版本为8.1,利用该软件可进行对可编程逻辑器件的分析、综合、下载等设计。

EDA/SOPC实验开发系统是由北京百科公司生产的一套EDA实验系统,其核心芯片采用ALTERA公司的CYCLONE系列FPGA产品EP1C6Q240C8,同时配备了丰富的外部接口资源,可供学生进行EDA设计实验。

启动QUARTUS后的界面如图1所示,首先需要创建一个工程,具体操作过程如下:

图1QUARTUS软件的启动界面

(1)点击File–>NewProjectWizard创建一个新工程,系统显示如图2。

图2工程创建向导的启始页

(2)点击Next,为工程选择存储目录、工程名称、顶层实体名等,如图3所示;

(3)点击Next,若目录不存在,系统可能提示创建新目录,如图4所示,点击“是”按钮创建新目录,系统显示如图5所示;

(4)系统提示是否需要加入文件,在此不添加任何文件;

(5)点击Next,进入设备选择对话框,如图6,这里选中实验箱的核心芯片CYCLONE系列FPGA产品EP1C6Q240C8;

(6)点击Next,系统显示如图7,提示是否需要其他EDA工具,这里不选任何其他工具;

(7)点击Next后,系统提示创建工程的各属性总结,若没有错误,点击Finish,工程创建向导将生成一个工程,这时软件界面如图8,在窗口左侧显示出设备型号和该工程的基本信息等。

图3输入工程名称、存储目录

图4提示是否创建新文件夹

图5提示是否添加文件

图6芯片型号选择

图7提示是否利用其他EDA设计工具

图8工程阐述汇总

至此工程创建好完成,一下进行具体的设计了,为实现用一个拨码开关控制一个LED亮灭的功能,可用VHDL编写一个程序实现,具体操作过程如下:

(1)点击File->New创建一个设计文件,系统显示如图9;

图9创建一个设计文件

(2)选择设计文件的类型为VHDLFile;

(3)点击OK,系统显示如图10,窗口右侧为VHDL的编辑窗口。

图10新建的一个VHDL源文件的编辑窗口

(4)在编辑窗口中编辑以下程序:

libraryIEEE;

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:

instd_logic;--清零端

load:

instd_logic;--置数端

d:

instd_logic_vector(7downto0);--与置数端对应的数据输入端

clk:

instd_logic;时钟端

co:

outstd_logic;进位输出端

qh:

bufferstd_logic_vector(3downto0);--计数器的高位输出端

ql:

bufferstd_logic_vector(3downto0));--计数器的低位输出端

endcntm60;

architecturebehaveofcntm60is

begin

co<='1'when(qh="0101"andql="1001"andci='1')else'0';

process(clk,nreset)

begin

if(nreset='0')then

qh<="0000";

ql<="0000";

elsif(clk'eventandclk='1')then

if(load='1')then

qh<=d(7downto4);

ql<=d(3downto0);

elsif(ci='1')then

if(ql=9)then

ql<="0000";

if(qh=5)then

qh<="0000";

else

qh<=qh+1;

endif;

else

ql<=ql+1;

endif;

endif;

endif;

endprocess;

endbehave;

 

实验二、七段译码器器设计

1、实验目的:

1)了解七段译码器的原理。

2)进一步熟悉EDA开发的基本流程。

2、实验要求:

(1)在实验报告结果分析中要对测量所得数据进行分析

3、实验内容:

利用VHDL语言完成动态译码器的设计,仿真,下载。

4、主要仪器设备及试剂:

1)计算机一台,实验箱

2)QUARTUSII8.1环境

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitydecl7is

port(

a:

instd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0);

ledl7:

outstd_logic_vector(6downto0));

enddecl7;

architecturebehaveofdecl7is

begin

sel<="111";

process(a)

begin

caseais

when"0000"=>ledl7<="0111111";

when"0001"=>ledl7<="0000110";

when"0010"=>ledl7<="1011011";

when"0011"=>ledl7<="1001111";

when"0100"=>ledl7<="1100110";

when"0101"=>ledl7<="1101101";

when"0110"=>ledl7<="1111101";

when"0111"=>ledl7<="0000111";

when"1000"=>ledl7<="1111111";

when"1001"=>ledl7<="1101111";

when"1010"=>ledl7<="1110111";

when"1011"=>ledl7<="1111100";

when"1100"=>ledl7<="0111001";

when"1101"=>ledl7<="1011110";

when"1110"=>ledl7<="1111001";

when"1111"=>ledl7<="1110001";

whenothers=>null;

endcase;

endprocess;

endbehave;

 

实验三、多功能数字钟设计

1、实验目的:

1)了解数字钟的原理;

3)进一步掌握自顶向下的数字系统设计方法,并体会其优越性;

2、实验要求:

(1)在实验报告结果分析中要对测量所得数据进行分析

3、实验内容:

利用综合设计方法完成数字钟的设计,仿真,下载。

4、主要仪器设备及试剂:

1)计算机一台,实验箱

2)QUARTUSII8.1环境

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:

多功能数字钟--

-------------------------------------

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

--------------------------------------------------------------------

entityexp15is

port(Clk:

instd_logic;--时钟输入

Rst:

instd_logic;--复位输入

S1,S2:

instd_logic;--时间调节输入

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:

integerrange0to9;

signalHOUR1,HOUR10:

integerrange0to9;

signalClk_Count1:

std_logic_vector(13downto0);--产生1Hz时钟的分频计数器

signalClk1Hz:

std_logic;

signalMusic_Count:

std_logic_vector(2downto0);

begin

process(Clk)

begin

if(Clk'eventandClk='1')then

if(Clk_Count1<10000)then

Clk_Count1<=Clk_Count1+1;

else

Clk_Count1<="00000000000001";

endif;

endif;

endprocess;

Clk1Hz<=Clk_Count1(13);

process(Clk1Hz,Rst)

begin

if(Rst='0')then--系统复位

SEC1<=0;

SEC10<=0;

MIN1<=0;

MIN10<=0;

HOUR1<=0;

HOUR10<=0;

elsif(Clk1Hz'eventandClk1Hz='1')then--正常运行

if(S1='0')then--调节小时

if(HOUR1=9)then

HOUR1<=0;

HOUR10<=HOUR10+1;

elsif(HOUR10=2andHOUR1=3)then

HOUR1<=0;

HOUR10<=0;

else

HOUR1<=HOUR1+1;

endif;

elsif(S2='0')then--调节分钟

if(MIN1=9)then

MIN1<=0;

if(MIN10=5)then

MIN10<=0;

else

MIN10<=MIN10+1;

endif;

else

MIN1<=MIN1+1;

endif;

elsif(SEC1=9)then

SEC1<=0;

if(SEC10=5)then

SEC10<=0;

if(MIN1=9)then

MIN1<=0;

if(MIN10=5)then

MIN10<=0;

if(HOUR1=9)then

HOUR1<=0;

HOUR10<=HOUR10+1;

elsif(HOUR10=2andHOUR1=3)then

HOUR1<=0;

HOUR10<=0;

else

HOUR1<=HOUR1+1;

endif;

else

MIN10<=MIN10+1;

endif;

else

MIN1<=MIN1+1;

endif;

else

SEC10<=SEC10+1;

endif;

else

SEC1<=SEC1+1;

endif;

endif;

endprocess;

process(Clk)

begin

if(Clk'eventandClk='1')then

Music_Count<=Music_Count+1;

if(MIN10=5andMIN1=9andSEC10=5)then--在59分50秒开始提示

if((SEC1MOD2)=0)then--在偶数秒开始发声

SPK<=Music_Count

(2);--嘀

else

SPK<='0';

endif;

elsif(MIN10=0andMIN1=0andSEC10=0andSEC1=0)then

SPK<=Music_Count

(1);--嗒

else

SPK<='0';

endif;

endif;

endprocess;

process(SEG_SEL)

begin

case(SEG_SEL+1)is

when"000"=>Disp_Temp<=HOUR10;

when"001"=>Disp_Temp<=HOUR1;

when"010"=>Disp_Temp<=10;

when"011"=>Disp_Temp<=MIN10;

when"100"=>Disp_Temp<=MIN1;

when"101"=>Disp_Temp<=10;

when"110"=>Disp_Temp<=SEC10;

when"111"=>Disp_Temp<=SEC1;

endcase;

endprocess;

process(Clk)

begin

if(Clk'eventandClk='1')then--扫描累加

SEG_SEL<=SEG_SEL+1;

Display<=Disp_Decode;

endif;

endprocess;

process(Disp_Temp)--显示转换

begin

caseDisp_Tempis

when0=>Disp_Decode<="00111111";--0

when1=>Disp_Decode<="00000110";--1

when2=>Disp_Decode<="01011011";--2

when3=>Disp_Decode<="01001111";--3

when4=>Disp_Decode<="01100110";--4

when5=>Disp_Decode<="01101101";--5

when6=>Disp_Decode<="01111101";--6

when7=>Disp_Decode<="00000111";--7

when8=>Disp_Decode<="01111111";--8

when9=>Disp_Decode<="01101111";--9

when10=>Disp_Decode<="01000000";---

whenothers=>Disp_Decode<="00000000";--全灭

endcase;

endprocess;

endbehave;

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2