eda技术总实验报告大学论文.docx

上传人:b****6 文档编号:5616251 上传时间:2022-12-29 格式:DOCX 页数:78 大小:1.14MB
下载 相关 举报
eda技术总实验报告大学论文.docx_第1页
第1页 / 共78页
eda技术总实验报告大学论文.docx_第2页
第2页 / 共78页
eda技术总实验报告大学论文.docx_第3页
第3页 / 共78页
eda技术总实验报告大学论文.docx_第4页
第4页 / 共78页
eda技术总实验报告大学论文.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

eda技术总实验报告大学论文.docx

《eda技术总实验报告大学论文.docx》由会员分享,可在线阅读,更多相关《eda技术总实验报告大学论文.docx(78页珍藏版)》请在冰豆网上搜索。

eda技术总实验报告大学论文.docx

eda技术总实验报告大学论文

实验报告

 

实验课程:

EDA技术

 

2012年12月27日

 

实验一一位全加器

实验二模可变计数器

实验三数字时钟

实验四序列发生和检测

实验五交通灯控制

实验六16*16点阵显示

南昌大学实验报告

学生姓名:

邱永洪学号:

6100210026专业班级:

中兴101

实验类型:

□验证□综合■设计□创新实验日期:

2012、10、12

实验一一位二进制全加器设计实验

一、实验目的

1、学习QuartusII的文本和原理图输入方法设计简单组合电路以熟悉QuartusII的使用;

2、熟悉设备和软件,掌握实验操作。

二、实验内容与要求

(1)在利用VHDL编辑程序实现半加器和或门,在主层中进行应用。

熟悉层次设计概念;

(2)给出此项设计的仿真波形;

(3)参照实验板的引脚号,选定和锁定引脚,编程下载,进行硬件测试。

三、设计思路

1,一个1位全加器可以用两个1位半加器及一个或门连接而成。

而一个1位半加器可由基本门电路组成。

半加器的真值表为

a

b

so

co

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

其中a为被加数,b为加数,co为本位向高位进位,so为本位和

因而可得表达式为:

co=ab而so=ab+ab=a⊕b

其VHDL文本如下

LIBRARYIEEE;--半加器描述

(1):

布尔方程描述方法

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYh_adderIS

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDENTITYh_adder;

ARCHITECTUREfh1OFh_adderis

BEGIN

so<=NOT(aXOR(NOTb));co<=aANDb;

ENDARCHITECTUREfh1;

 

2,而全加器的真值表如下;

ain

bin

cin

count

sum

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

其中ain为被加数,bin为加数,cin为低位向本位的进位,count为本位向高位的借位,sum为本位和

所以,一位全加器的表达式如下:

  Sum=ain⊕bin⊕cin  

count=ainbin+cinain+cinbin

3,或门VHDL文本如下

LIBRARYIEEE;--或门逻辑描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYor2aIS

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDENTITYor2a;

ARCHITECTUREoneOFor2aIS

BEGIN

c<=aORb;

ENDARCHITECTUREone;

 

四、VHDL文本输入法设计

常用的硬件描述语言(HDL)就是VHDL语言,同原理图设计方法类似,首先打开QuartusII7.2建立工程文件,然后选择菜单File->New,在DeviceDesignFiles标签选项框中选择VHDLFile。

LIBRARYIEEE;--半加器描述

(1):

布尔方程描述方法

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYh_adderIS

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDENTITYh_adder;

ARCHITECTUREfh1OFh_adderis

BEGIN

so<=NOT(aXOR(NOTb));co<=aANDb;

ENDARCHITECTUREfh1;

LIBRARYIEEE;--或门逻辑描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYor2aIS

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDENTITYor2a;

ARCHITECTUREoneOFor2aIS

BEGIN

c<=aORb;

ENDARCHITECTUREone;

LIBRARYIEEE;--1位二进制全加器顶层设计描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYf_adderIS

PORT(ain,bin,cin:

INSTD_LOGIC;

cout,sum:

OUTSTD_LOGIC);

ENDENTITYf_adder;

ARCHITECTUREfd1OFf_adderIS

COMPONENTh_adder--调用半加器声明语句

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTor2a

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALd,e,f:

STD_LOGIC;--定义3个信号作为内部的连接线。

BEGIN

u1:

h_adderPORTMAP(a=>ain,b=>bin,co=>d,so=>e);--例化语句

u2:

h_adderPORTMAP(a=>e,b=>cin,co=>f,so=>sum);

u3:

or2aPORTMAP(a=>d,b=>f,c=>cout);

ENDARCHITECTUREfd1;

六、VHDL文本输入法设计实验步骤

1.新建项目,选择项目文件夹,输入工程名称,添加文件(一般为空),选择芯片型号,选择仿真工具(一般为默认),最后生成项目。

2.新建VHDL文件,输入设计语言,保存时要注意与工程文件名相同。

如下图:

(2)文本输入

3.保存好后,进行综合编译,如果有错误,折回修改。

4、建立波形文件,导入结点,并设置好仿真结束时间,保存文件,进行仿真设置,然后进行波形仿真,如下图:

图(4)

六、仿真波形分析

.如下图:

ain00

bin00

cin01其他类似不在一一分析

count01

sum01

图(5)波形分析

 

经过分析,可知仿真结果与真值表相同

ain

bin

cin

count

sum

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

因此,仿真正确。

七、硬件测试

1.选择菜单Assignment->AssignmentEditor->Pin窗口,选择菜单ViewShowAllKnownPinNames,此时编辑器将显示所有的输入输出信号,其中“To”列是信号列,“Location”列是引脚列,“GeneralFunction”列显示该引脚的通用功能。

对于一个输入输出信号,双击对应的“Location”列,在弹出的下拉列表框内选择需要锁定的引脚号。

2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。

3.编程下载,用下载线将计算机并口和试验箱上的JTAG口接起来,接通电源。

选择Tools—>Programmer菜单,打开programmer窗口。

在mode中选中JTAG,将Program/Configure下的笑方框选中

 

4在开始编程之前,必须正确设置编程硬件。

点击“HardwareSetup”按钮,打开硬件设置口。

3)点击AddHardware按钮,出现AddHardware对话框,如图1-35所示。

图1-35编程硬件选择对话框

4)在AddHardware对话框中,从Hardwaretype列表中选择所需要硬件类型,如果是USB接口的请参照用户使用手册中的USB电缆的安装与使用,如果使用的是并口下载线则选取如图1-35所示的硬件类型,点击OK按钮,完成对硬件类型的设置。

回到编程器硬件设置窗口,点击Close按钮退出设置。

则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。

5)如果软件已运行一个工程,则在打开编程器的时候,编程器窗口会自动出现这个工程文件要加载到目标器件的文件,如果要加载其它文件可以从其它地方进行添加更改。

选好加载文件后,再点选Progam/Configure,编程模式选取JTAG模式,点击STRAT进行文件加载,直到加载进度变为100%,文件成功加载完成。

八、硬件测试结果

硬件测试:

根据真值表,本次实验中,我的ainbincin分别取的是K1.K2.K3而输出countsum取的是LED1和LED2,它们会根据K1.K2.K3的不同而显示亮灭,如输入000,由于输出countsum均为低电平,因此LED1和LED2均灭,输入111由于输入countsum均为高电平,因此LED1和LED2均亮,依据全加器真值表依次验证过后,结果与真值表相符合。

试验成功。

九、试验心得

1、通过本次实验我基本熟悉了QUARTUSII的使用,分别学会了原理图输入法和VHDL文本输入法,同时也学会了波形仿真,波形仿真要观察到程序所要的结果,应该正确设置仿真时间,否则无法全面显示程序要实现的功能。

2、在QUARTUSII软件使用方面,还是要注意一些细节问题,如原理图输入与VHDl文本输入保存文件时不能保存在同一个文件夹下,否则在文本文件编译时,会提示半加器元件已存在,导致文件编译无法通过。

工程名,vhdl文件名一定要与实体名相同等

3、硬件测试方面,要正确添加硬件、正确设置引脚进行引脚锁定,然后一定不要忘记重新全程编译一遍,接下来是下载,有时由于接触不好会下载失败,我把实验箱关掉电源,重新插了下连接线,重新打开后,下载成功。

十、参考资料

《EDA技术实用教程》《EDA/SOPC系统开发平台》

南昌大学实验报告

学生姓名:

邱永洪学号:

6100210026专业班级:

中兴101班

实验类型:

□验证□综合■设计□创新实验日期:

2012.10.19

实验二模可变计数器的设计

一、实验目的

1、学习设计脉冲分频程序的设计,掌握分频的作用。

2、学会利用控制位M来控制计数器的模值。

二、实验内容与要求

1、计设置一位控制模的位M,要求M=0,模23计数;当M=1,模109计数;

2、计数结果用三位数码管显示,显示BCD码;

3、利用Quartus软件实现波形仿真;

4、应用实验箱验证此计数器的功能。

三、实验思路

1、要求分别实现模23和模109的计数,因些我分别用GW、SW、BW代表个位,十位和百位。

还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位;当M为1时实现模109计数,用GW、SW、BW分别为个位,十位和百位计数。

2、由于要求用三个数码管显示,由于每次只能只能选中一个数码管显示管,因此我使用了数码管的动态扫描来实现视觉上多个数码管显示管同时显示的效果,这个步骤中分频计的作用很重要。

我使用了一个可变的R作为分频计的初值。

3、计数时分两种情况

1)、当M为0时,实现模23计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;计数到22时当下一个时钟上升沿到来时就清0重计。

2)、当M为1时,实现模109计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;当个位和十位均为9时,就向百位进位,同时个位和十位自身清0;计数到108时当下一个时钟上升沿到来时就清0重计。

四、实验程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcountIS

PORT(CLK,M,EN,RST:

INSTD_LOGIC;

R:

INSTD_LOGIC_VECTOR(7DOWNTO0);---分频计数初值

sel0,sel1,sel2:

bufferSTD_LOGIC;

SG:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);--数码管八段

CLK1:

bufferSTD_LOGIC;

GW,SW,BW:

bufferSTD_LOGIC_VECTOR(3DOWNTO0);--计数器的个,十,百位

COUT:

OUTSTD_LOGIC;--溢出信号

SEL:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)--位选信号

);

ENDcount;

ARCHITECTUREbehavOFcountIS

SIGNALCNT,X:

STD_LOGIC_VECTOR(7DOWNTO0);--数码管分频计数

SIGNALJ:

STD_LOGIC_VECTOR(11DOWNTO0);--12位BCD计数值

SIGNALCNT8:

STD_LOGIC_VECTOR(2DOWNTO0);--数码管选择

SIGNALA:

STD_LOGIC_VECTOR(3DOWNTO0);--数码管显示值

SIGNALMODEL:

STD_LOGIC_VECTOR(11DOWNTO0);--模长信号

BEGIN

P1:

PROCESS(CLK,R)--进程P1分出的频率用来数码管的位

BEGIN

X<=R;

IFCLK'EVENTANDCLK='1'THENCNT<=CNT+1;

IFCNT=X-1THENCLK1<='1';CNT<="00000000";--R分频:

R是一个八位的二进制数

ELSECLK1<='0';

ENDIF;

ENDIF;

ENDPROCESS;

P2:

PROCESS(EN,RST,M,CLK1)--计数

BEGIN

CASEMIS

WHEN'0'=>MODEL<="000000100010";--23

WHEN'1'=>MODEL<="000100001000";--109

ENDCASE;

GW<=J(3downto0);

SW<=J(7downto4);

BW<=J(11downto8);

IFRST='1'THENJ<=(others=>'0');

ELSIFCLK1'EVENTANDCLK1='1'THEN

IFEN='1'THEN

IFJ

IFGW=9THEN--个位为9时加7调整

J<=J+7;

IFSW=9THEN--十位为9时加103调整

J<=J+103;

ENDIF;

ELSEJ<=J+1;

ENDIF;

ELSEJ<=(others=>'0');

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

P3:

PROCESS(CLK)--数码管控制

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNT8<"010"THENCNT8<=CNT8+1;

ELSECNT8<=(OTHERS=>'0');

ENDIF;

ENDIF;

SEL(0)<=sel0;

SEL

(1)<=sel1;

SEL

(2)<=sel2;

CASECNT8IS--个、十、百分别送数码管动态显示

WHEN"000"=>sel2<='0';sel1<='1';sel0<='0';A<=GW;

WHEN"001"=>sel2<='0';sel1<='0';sel0<='1';A<=SW;

WHEN"010"=>sel2<='0';sel1<='0';sel0<='0';A<=BW;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

P4:

PROCESS(A)--七段译码程序

BEGIN

CASEAIS

WHEN"0000"=>SG<="00111111";WHEN"0001"=>SG<="00000110";

WHEN"0010"=>SG<="01011011";WHEN"0011"=>SG<="01001111";

WHEN"0100"=>SG<="01100110";WHEN"0101"=>SG<="01101101";

WHEN"0110"=>SG<="01111101";WHEN"0111"=>SG<="00000111";

WHEN"1000"=>SG<="01111111";WHEN"1001"=>SG<="01101111";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

COUT<='1'WHENJ=MODELELSE'0';

ENDbehav;

 

五、仿真波形的建立与分析

1)、仿真波形的建立如下

 

2)、仿真结果如下图所示

仿真结果图

下面分各种情况一一对其分析

1)、EN、REST键的功能检验,COUNT键的进位溢出脉冲:

2)当M=0时,实现模23计数功能:

3)当M=1时,实现模109计数功能:

六、引脚锁定

在这里我设置了八个用户开关K0-K7用来设置初值R,三个用户按键S1、S2、S3,其中S1控制EN,S2控制M,S3控制REST。

1.Assignments-.>device->

 

引脚锁定,参照下载实验板1K100的引脚号说明书,选择适当的引脚

2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。

3、编程下载,用下载线将计算机并口和试验箱上的JTAG口接起来,接通电源。

选择Tools—>Programmer菜单,打开programmer窗口。

在mode中选中JTAG,将Program/Configure下的笑方框选中

4在开始编程之前,必须正确设置编程硬件。

点击“HardwareSetup”按钮,打开硬件设置口。

点击“AddHardware”打开硬件添加窗口,在“Hardwaretype”下拉框中选择“ByteBlasterMVorByteBlasterII”,“Port”下拉框中选择“LPT1”,点击OK按钮确认,关闭HardwareSetup窗口,完成硬件设置。

5、点击“Start”按钮,开始编程下载

图(14)下载成功

 

七、硬件测试结果

下载成功后,开始在实验箱上检验结果,我设置的CLK=1KHz

(1)clk为时钟信号,由时钟信号的上升沿触发计数

(2)m为模值输入端,当其变化时,计数容量相应发生变化;

(3)rest为清零控制端,当其为高电平时清零;

(4)en为使能控制端,当其为高电平时正常计数,当其为低电平时暂停计数;

(5)、当按下S3时,使M=0数码管计数到22后开始清0,实现了模23计数;再次按下S3,M为1时,数码管计数到108后,开始清0,实现了模109计数。

而且当数码管计数到45,我把电平2置为低电平,即M为0时,个位,十位都清0,转向模22计数。

因此实验硬件测试结果与程序要实现的功能相符合。

(6)、通过八个电平开关K0-K7设置R的初值为R=250;

当按下用户按键S3时,使REST产生一个脉冲,实现清零,在数码管上看到全显示0;

实验成功。

八、试验心得

(1)、在建立波形文件时,ENDTIME设置非常重要,一开始没有设置好,在仿真波形图上看不到个位、十位和百位的计数情况,本实验ENDTIME=1ms,波形仿真中模23中,CLK为周期100

;形仿真中模109中,CLK为周期10

硬件测试时,当CLK脉冲很低时,可以看到动态扫描数码管的扫描情况,八个数码管依次显示。

(2)数码管动态显示时,要注意选通位的设置。

九、参考资料

《EDA技术实用教程》潘松黄继业

《EDA实验指导书》丁杰朱启标

南昌大学实验报告

姓名:

邱永洪学号:

6200210026专业班级:

中兴101班

实验类型:

验证□综合■设计□创新□实验日期:

2012、11、9

实验三数字钟设计

一、试验规划

1.1、实验目的

1、.学习数字钟的FPGA设计方法

2、学习分层设计方法;

3、学会动态扫描数码管的使用,及其他硬件设备的使用。

4、了解数字钟的工作原理。

5、进一步熟悉用VHDL语言编写驱动七段码管显示的代码。

6、掌握VHDL编写中的一些小技巧。

1.2设计实验说明:

1、数字时钟主要由:

分频器、扫描显示译码器、六十进制计数器、二十四进制计数器电路组成。

在整个时钟中最关键的是如何获得一个精确的1HZ计时脉冲,

2、数字时钟显示由时(24进制)、分(60进制)、秒(60进制)组成,利用扫描显示译码电路在八个数码管显示。

1.3数字时钟组成及功能:

1、分频率器:

用来产生1HZ计时脉冲;

2、二十四进制计数器:

对时进行计数

3、六十进制计数器:

对分和秒进行计数;

4、扫描显示译码器:

完成对7字段数码管显示的控制;

5、报时器:

完成到时的提醒;

1.4设计内容及步骤:

1、根据电路持点,用层次设计概念。

将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;

2、软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合;

3、适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。

熟悉了CPLD/FPGA设计的调试过程中手段的多样化;

4、按适配划分后的管脚定位,同相关功能块硬件电路接口连线;

5、所有模块尽量采用VHDL语言设计。

1.5要求:

1、精确显示时、分、秒。

2、数字时钟要求:

具有对时、分、秒置数功能(利用秒脉冲置数、键盘直接置数);

3、能够完成整点报时功能。

二、数字时钟设计方案

2.1设

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

当前位置:首页 > 工程科技 > 信息与通信

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

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