EDA实验总结报告Word文档下载推荐.docx

上传人:b****5 文档编号:18676059 上传时间:2022-12-31 格式:DOCX 页数:19 大小:686.84KB
下载 相关 举报
EDA实验总结报告Word文档下载推荐.docx_第1页
第1页 / 共19页
EDA实验总结报告Word文档下载推荐.docx_第2页
第2页 / 共19页
EDA实验总结报告Word文档下载推荐.docx_第3页
第3页 / 共19页
EDA实验总结报告Word文档下载推荐.docx_第4页
第4页 / 共19页
EDA实验总结报告Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

EDA实验总结报告Word文档下载推荐.docx

《EDA实验总结报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA实验总结报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

EDA实验总结报告Word文档下载推荐.docx

useieee.std_Logic_1164.all;

ENTITYmux4IS

PORT(

a0,a1,a2,a3:

INSTD_LOGIC;

s:

INSTD_LOGIC_VECTOR(1DOWNTO0);

y:

OUTSTD_LOGIC);

ENDmux4;

ARCHITECTUREarchmuxOFmux4IS

BEGIN

y<

=a0WHENs="

00"

else--当s=00时,y=a0

a1WHENs="

01"

else--当s=01时,y=a1

a2WHENs="

10"

else--当s=10时,y=a2

a3;

--当s取其它值时,y=a2

ENDarchmux;

五、运行结果

六.实验总结

真值表分析:

当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3.

实验二血型配对器的设计

1、进一步熟悉QuartusII软件的使用。

2、掌握简单组合逻辑电路的设计方法与功能仿真技巧。

3、进一步学习QuartusII中基于原理图设计的流程。

人类有O、A、B、AB4种基本血型,输血者与受血者的血型必须符合图示原则。

设计一血型配对电路,用以检测输血者与受血者之间的血型关系是否符合,如果符合,输出为1,否则为0。

已知:

AB血型是万能受血者,O血型是万能献血者!

如果要输血给O型血,那么可以的血型是O型!

如果要输血给A型血,那么可以的血型是A,O型!

如果要输血给B型血,那么可以的血型是B,O型!

如果要输血给AB型血,那么可以的血型是A,B,AB,O型!

1、用VHDL语言编写程序实现血型配对器的功能

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYVxuexingIS

PORT(

P,Q,R,S:

F:

OUTSTD_LOGIC

);

ENDVxuexing;

ARCHITECTUREAOFVxuexingIS

BEGIN

F<

=((NOTP)AND(NOTQ))OR(RANDS)OR((NOTP)ANDS)OR((NOTQ)ANDR);

ENDA;

2、对所编写的电路进行编译及正确的仿真。

实验分析

真值表

P,Q表示输血者的血型;

R,S,表示受血者的血型。

当两者符合血型配合原则时,F=1,否则为0.

四、运行结果

五、实验总结

本实验给出了四种不同的血型编码,PQ(1,1),RS(1,1)表示AB型血,P,Q(1,0),RS(1,0)表示B型血,PQ(0,1),RS(0,1)表示A型血,PQ(0,0),RS(0,0)表示O型血。

根据真值表,并根据实验的原理图,画出电路图并进行连接。

实验三简单数字钟的设计

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

2、进一步学习QuartusII中基于VHDL设计的流程。

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

4、掌握简单时序逻辑电路的设计方法与功能仿真技巧。

简单数字钟应该具有显示时-分-秒的功能。

首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转

1、用原理图的方式编写一个12/24进制的计数器,并创建为SYMBOL文件。

2、用VHDL的方式编写一个60进制的计数器,并创建为SYMBOL文件。

3、创建顶层文件。

调用已编写的SYMBOL文件,设计简单的数字钟电路。

二十四进制VHDL

ENTITYCNT24ISPORT(

CP,EN,Rd,LD:

D:

INSTD_LOGIC_VECTOR(5DOWNTO0);

Co:

OUTSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDCNT24;

ARCHITECTURESTROFCNT24IS

SIGNALQN:

STD_LOGIC_VECTOR(5DOWNTO0);

Co<

='

1'

WHEN(QN="

010111"

ANDEN='

ELSE'

0'

;

PROCESS(CP,RD)

BEGIN

IF(Rd='

)THEN

QN<

="

000000"

ELSIF(CP'

EVENTANDCP='

IF(LD='

QN<

=D;

ELSIF(EN='

=QN+1;

ENDIF;

ENDPROCESS;

Q<

=QN;

ENDSTR;

六十进制VHDL

ENTITYjsq60IS

PORT(en,rd,cp:

qh:

bufferSTD_LOGIC_VECTOR(3DOWNTO0);

ql:

Co:

OUTSTD_LOGIC);

ENDjsq60;

ARCHITECTUREbOFjsq60IS

Co<

='

when(qh="

0101"

andql="

1001"

anden='

)else'

PROCESS(cp,rd)

IF(rd='

qh<

="

0000"

ql<

ELSIF(cp'

EVENTANDcp='

IF(en='

IF(ql=9)THEN

ql<

IF(qh=5)THEN

qh<

ELSEqh<

=qh+1;

endif;

else

=ql+1;

ENDPROCESS;

ENDb;

原理图

24进制

60进制

时钟仿真结果

此设计问题可分为主控电路,计数器模块和扫描显示三大部分,计数器在之前的学习中已经非常熟悉,只要掌握60,12进制的技术规律,用同步或异步计数器都可以实现。

二扫描电路我们学过两种驱动方式:

BCD码驱动方式和直接驱动方式。

实验四简单交通灯的设计

1、了解交通灯的亮灭规律。

2、了解交通灯控制器的工作原理。

3、进一步熟悉VHDL语言编程,了解实际设计中的优化方案。

交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车子如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。

要完成本实验,首先必须了解交通路灯的亮灭规律。

依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。

其交通灯的亮灭规律为:

初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

1、用VHDL的方式编写一个简单的交通控制灯电路

程序:

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytrafficis

port(clk,enb:

instd_logic;

ared,agreen,ayellow,bred,bgreen,byellow:

bufferstd_logic;

acounth,acountl,bcounth,bcountl:

bufferstd_logic_vector(3downto0));

endtraffic;

architectureoneoftrafficis

begin

process(clk,enb)

variablelightstatus:

std_logic_vector(5downto0);

begin

if(clk'

eventandclk='

)then

lightstatus:

=ared&

agreen&

ayellow&

bred&

bgreen&

byellow;

if((acounth="

andacountl="

)or(bcounth="

andbcountl="

))then

Caselightstatusis

When"

010100"

=>

lightstatus:

001100"

acountl<

acounth<

bcountl<

bcounth<

if(enb='

100010"

0011"

0010"

0100"

endif;

when"

100001"

whenothers=>

endcase;

else

if(acountl="

=acounth-1;

=acountl-1;

if(bcountl="

=bcounth-1;

=bcountl-1;

ared<

=lightstatus(5);

agreen<

=lightstatus(4);

ayellow<

=lightstatus(3);

bred<

=lightstatus

(2);

bgreen<

=lightstatus

(1);

byellow<

=lightstatus(0);

endprocess;

endone;

  

分析:

  这里a代表东西方向,b代表南北方向,acounth是表示东西方向五进制计数acountl是东西方向六进制计数,bcounth则表示南北方向五进制,bounthl则是南北方向六进制计数

东西方向为0时,东西方向红灯亮(ared=1)

东西方向在1~4之间,东西方向绿灯亮(即agreen=1)南北方向的红灯亮起(即bred=1)

此设计问题可分为主控电路,译码驱动电路和扫描显示部分。

但是,这远远不能满足实际生活的需要,还应设置倒计时秒数,因此可在此电路基础上外加一个定时模块。

实验五流水灯的设计

1、了解流水灯的工作原理。

要完成本实验,首先必须了解流水灯的原理。

所谓的流水灯实际上就是由多个LED发光二极管构成的电路,当发光二极管可以依次点亮时,即能呈现流水的效果。

实验内容

1、设计能带8个LED发光管发光,并按照要求轮流发光,产生流水灯的流动效果。

2、应具有两种以上不同风格的流动闪亮效果。

比如依次点亮或者依次熄灭。

(选作)

3、有起动、停止控制键。

4、有流动闪亮效果选择设置键。

5、对所编写的电路进行编译及正确的仿真。

三、实验程序

ENTITYyiweijicun1IS

PORT(CP,R,DSR,DSL:

S:

STD_LOGIC_VECTOR(2DOWNTO0);

D:

STD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDyiweijicun1;

ARCHITECTUREyiweijicun_archOFyiweijicun1IS

SIGNALIQ:

STD_LOGIC_VECTOR(7DOWNTO0);

PROCESS(CP,R,IQ)

IF(R='

)THENIQ<

=(OTHERS=>

'

ELSIF(CP'

EVENTANDCP='

)THEN

CASECONV_INTEGER(S)IS

WHEN0=>

NULL;

WHEN1=>

IQ<

WHEN2=>

=DSR&

IQ(7DOWNTO1);

WHEN3=>

=IQ(6DOWNTO0)&

DSL;

WHEN4=>

=IQ(0)&

WHEN5=>

IQ(7);

WHEN6=>

=IQ(7)&

WHEN7=>

=IQ(6DOWNTO0)&

IQ(0);

WHENOTHERS=>

NULL;

ENDCASE;

ENDIF;

=IQ;

ENDyiweijicun_arch;

结果分析:

   d[0]~d[7]为八个输入端,s[0]和s[1]控制流水灯得输出,s=1保持,s=2实现左移功能,s=3实现右移功能,因为延迟的原因,在s=2时,需要经过一段时间才能实现循环右移的功能,流水灯的实现其实是运用了8位移位寄存器,它只是运用了其中的保持左移与右移的功能,8LO位移位寄存器还有循环右移,循环左移,算数右移,算数左移等功能。

了解了移位寄存器的功能和原理

通过这次实验,加深了VHDL语言的运用能力,更进一步了解了8位移位寄存器的功能。

实验六乘法器的设计

1、了解乘法器的工作原理。

2、了解复杂时序电路的设计流程。

具体设计原理参见教材188页。

1、设计一个能进行两个十进制数相乘的乘法器,乘数和被乘数均小于100。

(可以参考教材231页的VHDL代码来设计)

libraryIEEE;

useIEEE.std_logic_1164.all;

entityone_bit_adderis

port(

A:

inSTD_LOGIC;

B:

C_in:

S:

outSTD_LOGIC;

C_out:

outSTD_LOGIC

endone_bit_adder;

architectureone_bit_adderofone_bit_adderis

S<

=AxorBxorC_in;

C_out<

=(AandB)or(C_inand(AxorB));

entitysichenis

inSTD_LOGIC_VECTOR(3downto0);

data_out:

outSTD_LOGIC_VECTOR(6downto0)

endsichen;

architecturemulti_archofsichenis

signalA_MULT_B0:

STD_LOGIC_VECTOR(2downto0);

signalA_MULT_B1:

signalA_MULT_B2:

signalS_TEMP1:

STD_LOGIC_VECTOR(1downto0);

signalS_TEMP2:

signalC_TEMP:

STD_LOGIC_VECTOR(6downto0);

signalC0_out_B0,C1_out_B0,C2_out_B0:

STD_LOGIC;

signalC0_out_B1,C1_out_B1,C2_out_B1:

signalZERO:

componentone_bit_adder

endcomponent;

U_0_0:

one_bit_adderportmap(A=>

A_MULT_B0

(1),B=>

A_MULT_B1(0),C_in=>

ZERO,S=>

C_TEMP

(1),C_out=>

C0_out_B0);

U_0_1:

A_MULT_B0

(2),B=>

A_MULT_B1

(1),C_in=>

C0_out_B0,S=>

S_TEMP1(0),C_out=>

C1_out_B0);

U_0_2:

ZERO,B=>

A_MULT_B1

(2),C_in=>

C1_out_B0,S=>

S_TEMP1

(1),C_out=>

C2_out_B0);

U_1_0:

A_MULT_B2(0),B=>

S_TEMP1(0),C_in=>

C_TEMP

(2),C_out=>

C0_out_B1);

U_1_1:

A_MULT_B2

(1),B=>

S_TEMP1

(1),C_in=>

C0_out_B1,S=>

S_TEMP2(0),C_out=>

C1_out_B1);

U_1_2:

A_MULT_B2

(2),B=>

C2_out_B0,C_in=>

C1_out_B1,S=>

S_TEMP2

(1),C_out=>

C2_out_B1);

A_MULT_B0(0)<

=A(0)andB(0);

A_MULT_B0

(1)<

=A

(1)andB(0);

A_MULT_B0

(2)<

=A

(2)andB(0);

A_MULT_B1(0)<

=A(0)andB

(1);

A_MULT_B1

(1)<

=A

(1)andB

(1);

A_MULT_B1

(2)

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

当前位置:首页 > 解决方案 > 工作计划

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

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