矿大EDA实验报告.docx

上传人:b****5 文档编号:12282675 上传时间:2023-04-17 格式:DOCX 页数:62 大小:723.91KB
下载 相关 举报
矿大EDA实验报告.docx_第1页
第1页 / 共62页
矿大EDA实验报告.docx_第2页
第2页 / 共62页
矿大EDA实验报告.docx_第3页
第3页 / 共62页
矿大EDA实验报告.docx_第4页
第4页 / 共62页
矿大EDA实验报告.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

矿大EDA实验报告.docx

《矿大EDA实验报告.docx》由会员分享,可在线阅读,更多相关《矿大EDA实验报告.docx(62页珍藏版)》请在冰豆网上搜索。

矿大EDA实验报告.docx

矿大EDA实验报告

 

EDA实验报告

 

学院:

计算机学院

专业:

计算机科学与技术

姓名:

班级:

学号:

指导老师:

 

实验一

一、实验目的

熟悉Quartus2的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

二、实验原理

VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE),本次实验是用VHDL设计一个简单的组合电路,并结合QuartusII环境和实验电路进行硬件测试。

三、实验任务

1、首先利用Quartus2完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形。

最后在试验系统上进行硬件测试,验证本项设计的功能;

2、将任务1中的多路选择器看成是一个元件mux21a,利用元件例话语句描述。

四、实验程序及实验图

程序代码;

2选1选择器:

LIBRARYIEEE;--mux21a

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT);

ENDENTITY;

ARCHITECTUREoneOFmux21aIS

BEGIN

PROCESS(a,b,s)

BEGIN

IFs='0'THENy<=a;

ELSEy<=b;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREone;

时序图:

功能图;

4路选择器:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux21IS

PORT(a1,a2,a3,s0,s1:

INBIT;

outy:

OUTBIT);

ENDENTITY;

ARCHITECTUREbhvOFmux21IS

COMPONENTmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT);

ENDCOMPONENT;

signaltmp:

BIT;

BEGIN

U1:

mux21aPORTMAP(a=>a2,b=>a3,s=>s0,y=>tmp);

U2:

mux21aPORTMAP(a=>a1,b=>tmp,s=>s1,y=>outy);

ENDbhv;

时序图:

功能图:

五、实验总结

本次实验主要是熟悉Quartus2的具体操作,按照书上的操作进行,不过在这过程中也遇到不少问题,例如在进行任务2时我在mux21a文件夹里又新建了mux21文件夹,把mux21.vhd存放于其中,结果导致mux21.vhd编译总是出现错误,最后问了其他同学才知道错在哪里,虽然错了这么多次,不过对Quartus2的各个工具也十分熟悉了;同时也加深通过VHDL语言来实现组合电路的理解。

实验二

1、实验目的

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理

本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁存器组成。

其中,RST是异步清零信号,高电平有效;CLK是计数时钟,同时也是锁存信号;EN为计数器输出使能控制。

当EN为‘1’时,加法计数器的输出值加载于锁存器的数据端;当EN为‘0’时锁存器输出为高阻态。

当计数器输出“1010”时,进位信号COUT为“1”。

三、实验任务

1、设计触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程;

2、设计一个带有异步复位和同步时钟使能的十进制计数器。

四、实验程序及实验图

程序代码;

触发器:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUXIS

PORT(D,CLK:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

END;

ARCHITECTUREONEOFMUXIS

SIGNALQ1:

STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IFCLK='1'THEN

Q1<=D;

ENDIF;

ENDPROCESS;

Q<=Q1;

END;

时序图:

功能图:

下载端口设置;

计数器:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNTIS

PORT(CLK,RST,EN:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREBHVOFCNTIS

BEGIN

PROCESS(CLK,RST,EN)

VARIABLECQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='1'THEN

CQI:

=(OTHERS=>'0');

ELSIFCLK'EVENTANDCLK='1'THEN

IFEN='1'THEN

IFCQI<9THENCQI:

=CQI+1;

ELSECQI:

=(OTHERS=>'0');

ENDIF;

ENDIF;

ENDIF;

IFCQI=9THENCOUT<='1';

ELSECOUT<='0';

ENDIF;

Q<=CQI;

ENDPROCESS;

END;

时序图:

功能图:

五、实验总结

本次实验主要是在上一次实验的基础上实现硬件的测试(引脚锁定和下载),而这次实验的难点也就在于如何从电脑上把VHDL下载到硬件上来。

除了书上的一些引导操作之外还要根据EP2C35用户手册V1查找资料进行端口的设置,在这其中我的电脑因为收不到信号,所以在这一次实验没有成功,不过在第三次实验的时候再次操作了一遍完成了本次试验;在做时序仿真时因为竞争冒险经常会出现毛刺现象,该做功能仿真毛刺就消失了。

实验三

3、实验目的

学习七段数码显示译码器设计;学习VHDL是我CASE语句应用级多层次设计方法。

二、实验原理:

七段数码管由7个(a,b,c,d,e,f,g,)按照一定位置排列的发光二极管构成,通常采取共阴极或者共阳极的设计,将7个二极管的同一极接在一起,通过分别控制另外的7个电极的电平,使二极管导通(发光)或截止(不发光)。

七段数码显示译码器的功能就是根据需要显示的字符,输出能够控制七段数码管显示出该字符的编码。

三、实验任务

1、用VHDL设计7段数码管显示译码电路,并在VHDL描述的测试平台下对译码器进行功能仿真,给出仿真的波形。

2、数码管显示电路设计

利用以上设计的译码器模块,设计一个可以在7个数码管上同时显示字符的电路。

快速轮流点亮7个数码管,这样就可以实现同时显示7个字符的效果(尽管实际上同一时间只有一个数码管被点亮)。

要实现以上功能,就必须按照一定时钟节拍,轮流使译码器输出所需要字符的编码;同时控制数码管的公共电极电平,轮流点亮数码管(可以使用异步复位和同步时钟使能的十进制计数器,加实验板上的74ls138来实现)。

3、用QuartusII对2)中的设计进行编译、综合、仿真,给出其所有信号的仿真波形和时序分析数据。

4、通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。

四、实验程序及实验图

程序代码;

计数器数码管显示:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNTIS

PORT(CLK,RST,EN:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

COUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREBHVOFCNTIS

BEGIN

PROCESS(CLK,RST,EN)

VARIABLECQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='1'THEN

CQI:

=(OTHERS=>'0');

ELSIFCLK'EVENTANDCLK='1'THEN

IFEN='1'THEN

IFCQI<9THENCQI:

=CQI+1;

ELSECQI:

=(OTHERS=>'0');

ENDIF;

ENDIF;

ENDIF;

IFCQI=9THENCOUT<='1';

ELSECOUT<='0';

ENDIF;

CASECQIIS

WHEN"0000"=>Q<="1000000";--shumaguanxianshi

WHEN"0001"=>Q<="1111001";

WHEN"0010"=>Q<="0100100";

WHEN"0011"=>Q<="0110000";

WHEN"0100"=>Q<="0011001";

WHEN"0101"=>Q<="0010010";

WHEN"0110"=>Q<="0000010";

WHEN"0111"=>Q<="1111000";

WHEN"1000"=>Q<="0000000";

WHEN"1001"=>Q<="0011000";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDBHV;

时序图:

功能图:

五、实验总结

本次实验有一个综合效果,将计数器与数码管显示连接起来,达到在数码管上铜鼓控制按键实现技术效果,实验中需要注意的是对Q的赋值,因为书上写的是阴极,而在实验机上的数码管是阳极的,所以应写成反码形式,而在做时序图的时候发现Q的输出值显示为十进制,不是二进制形式,是因为在赋值前未加“B”符号,如果加上的话就会显示为二进制了;

CASECQIIS

WHEN"0000"=>Q<=B"1000000";--shumaguanxianshi

WHEN"0001"=>Q<=B"1111001";

WHEN"0010"=>Q<=B"0100100";

WHEN"0011"=>Q<=B"0110000";

WHEN"0100"=>Q<=B"0011001";

WHEN"0101"=>Q<=B"0010010";

WHEN"0110"=>Q<=B"0000010";

WHEN"0111"=>Q<=B"1111000";

WHEN"1000"=>Q<=B"0000000";

WHEN"1001"=>Q<=B"0011000";

WHENOTHERS=>NULL;

ENDCASE;

 

实验一利用原理图输入法设计4位全加器

一、实验目的:

掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方法。

通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。

二、实验原理:

一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。

1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。

半加器h-adder由与门、同或门和非门构成。

 

四位加法器由4个全加器构成

 

三、实验内容:

1.熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。

QuartusII设计流程见教材第五章:

QuartusII应用向导。

2.设计1位全加器原理图

(1)生成一个新的图形文件(file->new->graphiceditor)

(2)按照给定的原理图输入逻辑门(symbol->entersymbol)

(3)根据原理图连接所有逻辑门的端口,并添加输入/输出端口

(4)为管脚和节点命名:

在管脚上的PIN_NAME处双击鼠标左键,然后输入名字;

选中需命名的线,然后输入名字。

(5)创建缺省(Default)符号:

在File菜单中选择CreateSymbolFilesforCurrentFile项,即可创建一个设计的符号,该符号可被高层设计调用。

3.利用层次化原理图方法设计4位全加器

(1)生成新的空白原理图,作为4位全加器设计输入

(2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.

4.新建波形文件(file->new->OtherFiles->VectorWaveformFile),保存后进行仿真(Processing->StartSimulation),对4位全加器进行时序仿真。

给出波形图,并分析仿真结果是否正确。

1位半加器:

原理图:

仿真波形:

1位全加器:

原理图:

仿真波形:

4位全加器:

原理图:

仿真波形:

4位全加器仿真结果正确:

例:

0011(A)+0111(B)+0(CI)结果为1010(S),进位CO为0。

5.思考如何在原理图中输入一个总线,并与其他总线连接?

先选中细线,然后右击,选”busline”,总线是以粗线条表示。

与其他总线连接:

例如一根8位的总线bus1[7..0]欲与另三根分别为1、3、4个位宽的连线相接,则它们的标号可分别表示为bus1[0],bus1[3..1],bus1[7..4]。

 

实验二简单组合电路的设计

一、实验目的:

熟悉QuartusIIVHDL文本设计流程全过程。

学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

二、实验原理

VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE),本次实验是用VHDL设计一个简单的数字组合逻辑电路,并结合QuartusII环境和实验电路进行硬件测试。

三、实验内容:

1)根据实验一中一位全加器的电路原理图,改用VHDL语言文本输入方法,设计一位全加器,要求采用结构化的描述方法。

设计完成后,利用QuartusII集成环境进行时序分析、仿真,记录仿真波形和时序分析数据。

2)用VHDL语言设计一个四选一数据选择器电路。

要求先设计一个二选一数据选择器mux21,然后利用元件例化语句设计四选一数据选择器mux41,同样请给出时序分析数据和仿真结果。

3)硬件测试(选用器件EPF10K10Pin84)

管脚锁定:

1)一位全加器aPIO23(I/O19)30SW1

bPIO24(I/O20)35SW2

ciPIO25(I/O21)36SW3

sPIO21(I/O16)27LED10

coPIO19(I/O8)29LED12

2)四选一数据选择器a1PIO2330SW1

a0PIO2435SW2

d3PIO2738SW5

d2PIO2839SW6

d1PIO2947SW7

d0PIO3042SW8

yout29LED12

四、思考题

比较原理图输入法和文本输入法的优缺点。

 

实验结果:

一位全加器的VHDL描述:

半加器的VHDL描述:

LIBRARYIEEE;

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;

或门的VHDL描述:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYor2aIS

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDENTITYor2a;

ARCHITECTUREoneOFor2aIS

BEGIN

c<=aORb;

ENDARCHITECTUREone;

一位全加器的VHDL描述:

LINRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYf_adderIS

PORT(ain,bin,cin:

INSTD_LOGIC;

cout,sum:

outSTD_LOGIC);

ENDENTITYf_adder;

ARCHITECTUREfd1OFf_adderIS

COMPUTERh_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;

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;

仿真波形:

硬件测试结果及分析:

ainPIN_233SW1

binPIN_234SW2

cinPIN_235SW3

coutPIN_1LED1

sumPIN_2LED2

SW1

SW2

SW3

LED1

LED2

0

0

0

0

0

1

0

1

0

0

1

1

1

0

0

1

0

1

1

1

0

1

1

1

得结果正确。

四选一数据选择器的VHDL描述:

二选一数据选择器的VHDL描述:

ENTITYmux21aIS

PORT(a,b:

INBIT;s:

INBIT;y:

OUTBIT);

ENDENTITYmux21a;

ARCHITECTUREoneOFmux21aIS

BEGIN

y<=aWHENs='0'ELSEb;

ENDARCHITECTUREone;

四选一数据选择器的VHDL描述:

libraryieee;

useieee.std_logic_1164.all;

entitymux41ais

port(d0,d1,d2,d3,a0,a1:

instd_logic;

yout:

outstd_logic);

endentitymux41a;

architecturefd1ofmux41ais

componentmux21a

port(a,b,s:

instd_logic;

y:

outstd_logic);

endcomponent;

signale,f:

std_logic;

begin

u1:

mux21aportmap(a=>d0,b=>d2,s=>a1,y=>e);

u2:

mux21aportmap(a=>d1,b=>d3,s=>a1,y=>f);

u3:

mux21aportmap(a=>e,b=>f,s=>a0,y=>yout);

endarchitecturefd1;

仿真波形:

硬件测试结果及分析:

a1PIN_233SW1

a0PIN_234SW2

d0PIN_235SW3

d1PIN_236SW4

d2PIN_237SW5

d3PIN_238SW6

youtPIN_1LED1

 

SW1

SW2

SW3

SW4

SW5

SW6

LED1

0

0

1

0

0

0

0

1

0

1

0

0

1

0

0

1

0

0

1

1

0

0

0

1

此结果正确。

回答问题:

原理图输入法的优点:

1.设计者进行电子线路设计不需要增加新的相关知识;

2.设计过程形象直观;

3.由于设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用。

原理图输入法的缺点:

1.图形文件兼容性差;

2.随着电路设计规模的扩大,原理图输入描述方式必然引起一系列难以克服的困难,如电路功能原理的易读性下降,错误排查困难,整体调整和结构升级困难等;

3.由于图形文件的不兼容性,性能优秀的电路模块的移植和再利用十分困难;

4.由于在原理图中已确定了设计系统的基本电路结构和元件,留给综合器和适配器的优化选择的空间已十分有限,因此难以实现用户所希望的面积,速度以及不同风格的综合优化;

5.在设计中,由于必须直接面对硬件模块的选用,因此行为模型的建立将无从谈起,从而无法实现真实意义上的自顶向下的设计方案。

但是HDL文本输入的设计方法,基本上克服了用原理图输入法存在的所有弊端,所以HDL输入设计仍然是最基本、最有效和通用的输入方法。

 

实验三简单时序电路的设计

一、实验目的:

熟悉QuartusII的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。

二、实验原理

时序逻辑电路是现代复杂数字电路的重要组成部分,往往占到整个设计的90%以上。

触发器是时序电路的基本单元,本实验中将涉及到边沿触发和电平触发两种电路结构,其中边沿触发是实际电路实现的主要方式。

三、实验内容

1)设计一个上升沿触发的D触发器

输入:

D

输出:

Q

触发时钟:

CLK

2)设计同步/异步清零D触发器

触发器有两种清零方式:

同步——当触发沿到来时,若清零信号有效,则实现清零;异步——任何时候清零信号一旦有效,触发器马上清零,而不论触发沿是否到来。

在以上设计的D触发器基础上,加入清零端rst,分别实现同步和异步清零方式。

3)设计一个高电平有效的锁存器

输入:

D

输出:

Q

触发:

E

电平触发的锁存器与沿触发的触发器不同之处在于当触发端处于有效电平时,输出等于输出,随输入变化;触发端无效时输出保持不变。

4)在QuartusII环境下对以上设计的模块进行编译

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

当前位置:首页 > 经管营销 > 经济市场

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

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