EDA总复习.docx

上传人:b****6 文档编号:7513417 上传时间:2023-01-24 格式:DOCX 页数:49 大小:161.57KB
下载 相关 举报
EDA总复习.docx_第1页
第1页 / 共49页
EDA总复习.docx_第2页
第2页 / 共49页
EDA总复习.docx_第3页
第3页 / 共49页
EDA总复习.docx_第4页
第4页 / 共49页
EDA总复习.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

EDA总复习.docx

《EDA总复习.docx》由会员分享,可在线阅读,更多相关《EDA总复习.docx(49页珍藏版)》请在冰豆网上搜索。

EDA总复习.docx

EDA总复习

第一章

1、名词解释

VHDL:

超高速集成电路硬件描述语言

ASIC:

专用集成电路

FPGA:

现场可编程门阵列

CPLD:

复杂可编程逻辑器件

2、EDA技术最终实现目标的ASIC的三种途径:

(1)超大规模可编程逻辑器件

(2)半定制或全定制ASIC

(3)混合ASIC

3、VHDL综合的含义和特点

含义:

将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。

特点:

(1)从自然语言转换到VHDL语言等算法表示,即自然语言综合

(2)从算法表示转换到寄存器传输级,即从行为域到结构域的综合,即行为综合

(3)RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合;

(4)从逻辑门表示转换到版图表示,或转换到FPGA的配置网表文件,可称为结构综合。

第二章

1、FPGA/CPLD设计流程的几个步骤:

设计输入—综合—适配—时序仿真与功能仿真—编程下载—硬件测试

2、原理图输入与VHDL文本输入设计的区别:

答:

原理图输入是绘制特定功能的电路原理图

“告诉我你要设计什么样的系统硬件,我就画给你”

VHDL是用语言多层次描述系统硬件

“告诉我你的电路行为,那么VHDL编译器会完成这个电路行为的硬件系统”

但是设计师并不能控制电路怎么实现。

VHDL文本输入的优点:

易修改

不依赖于任何特定硬件环境,可移植性好

更灵活

3、IP核的含义及分类

答:

含义:

就是知识产权核或知识产权模块的意思

分类:

软IP:

用硬件描述语言描述的功能块

固IP:

完成了综合的功能块

硬IP:

提供设计的最终阶段产品:

掩模

第三章

1、名词解释:

LUT:

LookUpTable(可编程查找表)

SARM:

静态随机存储器

2.FPGA-FieldProgrammableGateArray

CPLD-ComplexProgrammableLogicDevice

3.乘积项可编程结构--可编程逻辑器件(PLD)

SRAM查找表逻辑方法--可编程门阵列(PGA)

4.PAL(可编程阵列逻辑)

与阵列可编程

或阵列不可编程

GAL(通用阵列逻辑器件)(GeneralArrayLogicDevice)

第四章

◆实例:

多路选择器设计,触发器设计,异步时序电路设计,全加器设计,计数器设计,移位寄存器设计

1、多路选择器设计

4选1的多路选择器原理:

名称:

mux41

端口设置:

输入端:

a,b,c,d

选择控制输入端:

s0,s1

输出端:

y

实现功能:

当s0s1=00时选择输出y=a;否则当s0s1=01时选择输出y=b;否则当s0s1=10时选择输出y=c;否则选择输出y=d。

ENTITYmux41IS

PORT(a,b,c,d,s0,s1:

INBIT;

y:

OUTBIT);

ENDENTITYmux41;

ARCHITECTUREoneOFmux41IS

BEGIN

y<=aWHENs0='0'ands1='0'ELSE

bWHENs0='0'ands1='1'ELSE

cWHENs0='1'ands1=‘0'ELSE

d;

ENDARCHITECTUREone;

2、D触发器设计

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF1IS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhvOFDFF1IS

SIGNALQ1:

STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'

THENQ1<=D;

ENDIF;

Q<=Q1;--将内部的暂存数据向端口输出

ENDPROCESS;

ENDbhv;

3、时序电路设计

ARCHITECTUREbhvOFMULTI_DFFIS

SIGNALQ1,Q2:

STD_LOGIC;

BEGIN

PRO1:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'

THENQ1<=NOT(Q2ORA);

ENDIF;

ENDPROCESS;

PRO2:

PROCESS(Q1)

BEGIN

IFQ1'EVENTANDQ1='1'

THENQ2<=D;

ENDIF;

QQ<=Q2;

ENDPROCESS;

4、半加器设计

absoco

0000

0110

1010

1101

【例4-16】

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;

【例4-17】

LIBRARYIEEE;--半加器描述

(2):

真值表描述法

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYh_adderIS

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDENTITYh_adder;

ARCHITECTUREfh1OFh_adderis

SIGNALabc:

STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

abc<=a&b;

PROCESS(abc)

BEGIN

CASEabcIS

WHEN"00"=>so<='0';co<='0';

WHEN"01"=>so<='1';co<='0';

WHEN"10"=>so<='1';co<='0';

WHEN"11"=>so<='0';co<='1';

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREfh1;

【例4-19】

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;

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;

5、多路选择器设计

4选1的多路选择器原理:

实现功能:

当s0s1=00时选择输出y=a;否则当s0s1=01时选择输出y=b;否则当s0s1=10时选择输出y=c;否则选择输出y=d。

ENTITYmux41IS

PORT(a,b,c,d,s0,s1:

INSTD_LOGIC;y:

OUTSTD_LOGIC);

ENDENTITYmux41;

ARCHITECTUREoneOFmux41IS

SIGNALss:

STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

Process(a,b,c,d,s0,s1)

ss<=s0&s1;

BEGIN

•CASEssIS

•WHEN"00"=>y<=a;

•WHEN"01"=>y<=b;

•WHEN"10"=>y<=c;

•WHEN"11"=>y<=d;

•WHENOTHERS=>NULL;

•ENDCASE;

6、利用QUARTUSⅡ库中元器件D触发器(图形符号见图1)和元件例化,完成如下图所示的电路设计。

LIBRARYieee;

USEieee.std_logic_1164.ALL;

ENTITYshifterIS

PORT(din,clk:

INstd_logic;

dout:

OUTstd_logic);

ENDshifter;

ARCHITECTUREaOFshifterIS

COMPONENTdff

PORT(D,clk:

INstd_logic;

Q:

OUTstd_logic);

ENDCOMPONENT;

SIGNALd:

std_logic_vector(4DOWNTO0);

BEGIN

d(0)<=din;

U0:

dffPORTMAP(D=>d(0),clk=>clk,Q=>d

(1));

U1:

dffPORTMAP(D=>d

(1),clk=>clk,Q=>d

(2));

U2:

dffPORTMAP(D=>d

(2),clk=>clk,Q=>d(3));

U3:

dffPORTMAP(D=>d(3),clk=>clk,Q=>d(4));

dout<=d(4);

ENDa;

6、计数器的设计

【例4-21】

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;--运算符重载函数

ENTITYCNT4IS

PORT(CLK:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

END;

ARCHITECTUREbhvOFCNT4IS

SIGNALQ1:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

Q1<=Q1+1;

ENDIF;

Q<=Q1;

ENDPROCESS;

ENDbhv;

【例4-20】

ENTITYCNT4IS

PORT(CLK:

INBIT;

Q:

BUFFERINTEGERRANGE15DOWNTO0);

END;

ARCHITECTUREbhvOFCNT4IS

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

Q<=Q+1;

ENDIF;

ENDPROCESS;

ENDbhv;

带有异步复位和同步使能的10进制计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10IS

PORT(CLK,RST,EN:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

ENDCNT10;

ARCHITECTUREbehavOFCNT10IS

BEGIN

PROCESS(CLK,RST,EN)

VARIABLECQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='1'THENCQI:

=(OTHERS=>'0');--计数器复位

ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿

IFEN='1'THEN--检测是否允许计数

IFCQI<"1001"THENCQI:

=CQI+1;--允许计数

ELSECQI:

=(OTHERS=>'0');--大于9,计数值清零

ENDIF;

ENDIF;

ENDIF;

IFCQI="1001"THENCOUT<='1';

--计数大于9,输出进位信号

ELSECOUT<='0';

ENDIF;

CQ<=CQI;--将计数值向端口输出

ENDPROCESS;

ENDbehav;

练习:

1:

设计一个带有异步清零和同步使能端的3位增1/减1计数器:

当输入信号UP等于1时计数器增1;当输入信号UP等于0时计数器减1。

输出为计数后的值及进位信号。

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Entityup_downis

Port(clk,rst,en,up:

instd_logic;

Sum:

outstd_logic_vector(2downto0);

Cout:

outstd_logic);

End;

Architectureaofup_downis

Signalcount:

std_logic_vector(2downto0);--定义信号

Begin

Process(clk,rst)--进程,敏感信号

Begin

Ifrst=’0’thenCount<=(others=>’0’);--异步清零

Elsifrising_edge(clk)then--如果上升沿

Ifen=’1’then

Caseupis

When‘1’=>count<=count+1;

Whenothers=>count<=count-1;

Endcase;

Endif;

Endif;

Endprocess;

Sum<=count;

Cout<=’1’whenen=’1’and((up=’1’andcount=7)or(up=’0’andcount=0))

else‘0’;--进位信号

End;

习题:

4.7设计含有异步清零和设计使能的16位二进制加减可控计数器

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Entityup_downis

Port(clk,rst,en,up:

instd_logic;

Sum:

outstd_logic_vector(15downto0);

End;

Architectureaofup_downis

Signalcount:

std_logic_vector(15downto0);--定义信号

Begin

Process(clk,rst)--进程,敏感信号

Begin

Ifrst=’0’thencount<=(others=>’0’);--异步清零

Elsifrising_edge(clk)then--如果上升沿

Ifen=’1’then

Caseupis

When‘1’=>count<=count+1;

Whenothers=>count<=count-1;

Endcase;

Endif;

Endif;

Endprocess;

Sum<=count;

End;

练习:

设计一个带有同步并行加载功能的8位右移移位寄存器,其移空位用输入端sda的值来填补。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYshifterIS

PORT(clk,sda,load:

INSTD_LOGIC;

Din:

instd_logic_vector(7downto0);

QB:

OUTstd_logic_vector(7downto0));

ENDshifter;

ARCHITECTUREbehaveOFshifterIS

SIGNALreg:

std_logic_vector(7downto0);

BEGIN

PROCESS(clk,load)

BEGIN

ifclk’eventandclk=‘1’then

ifloda=‘1’thenreg<=din;

elsereg<=sda&Din(7downto1);

endif;

endif;

endprocess;

QB<=reg;

Endbehav;;

习题4.4

如上图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件

练习:

设计一个JK触发器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYJKff_v1IS

PORT(J,K:

INSTD_LOGIC;

clk:

INSTD_LOGIC;

set:

INSTD_LOGIC;

reset:

INSTD_LOGIC;

Q,QB:

OUTSTD_LOGIC);

ENDJKff_v1;

ARCHITECTUREbehaveOFJKff_v1IS

SIGNALQ_temp,QB_temp:

STD_LOGIC;

BEGIN

PROCESS(clk,set,reset)

BEGIN

IF(set='0'ANDreset='1')THEN

Q_temp<='1';

QB_temp<='0';

ELSIF(set='1'ANDreset='0')THEN

Q_temp<='0';

QB_temp<='1';

ELSIF(clk'EVENTANDclk='1')THEN

IF(J='0'ANDK='1')THEN

Q_temp<='0';

QB_temp<='1';

ELSIF(J='1'ANDK='0')THEN

Q_temp<='1';

QB_temp<='0';

ELSIF(J='1'ANDK='1')THEN

Q_temp<=NOTQ_temp;

QB_temp<=NOTQB_temp;

ENDIF;

ENDIF;

Q<=Q_temp;

QB<=QB_temp;

ENDPROCESS;

ENDbehave;

第六章

1、信号与变量的异同

相同点:

从硬件电路系统来看,变量和信号相当于逻辑电路系统中的连线和连线上的信号值,常量相当于独立中的恒定电平,如GND或者VCC。

区别:

接受与保持信号的方式和信息保持与传递的区域大小上。

例如

信号可以设置传输延迟量,而变量不能;

2、进程中的信号与变量赋值语句

【例6-1】

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF3IS

PORT(CLK,D1:

INSTD_LOGIC;

Q1:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhvOFDFF3IS

BEGIN

PROCESS(CLK)

VARIABLEQQ:

STD_LOGIC;

BEGIN

IFCLK'EVENTANDCLK='1'THEN

QQ:

=D1;

ENDIF;

Q1<=QQ;

ENDPROCESS;

END;

【例6-2】

...

ARCHITECTUREbhvOFDFF3IS

SIGNALQQ:

STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

QQ<=D1;

ENDIF;

Q1<=QQ;

ENDPROCESS;

END;

例6—8带进位循环左移(8位移位寄存器)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSHIFTIS

PORT(CLK,CO:

INSTD_LOGIC;--时钟和进位输入

MD:

INSTD_LOGIC_VECTOR(2DOWNTO0);

--移位模式控制字

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

--待加载移位的数据

QB:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

--移位数据输出

CN:

OUTSTA_LOGIC);--进位输出

ENDENTITY;

ARCHITECTUREbehavOFSHIFTIS

SIGNALREG:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALCY:

STD_LOGIC;

BEGIN

PROCESS(CLK,MD,CO)

BEGI

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

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

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

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