EDA技术实用教程习题答案潘.docx

上传人:b****8 文档编号:9957757 上传时间:2023-05-22 格式:DOCX 页数:89 大小:63.02KB
下载 相关 举报
EDA技术实用教程习题答案潘.docx_第1页
第1页 / 共89页
EDA技术实用教程习题答案潘.docx_第2页
第2页 / 共89页
EDA技术实用教程习题答案潘.docx_第3页
第3页 / 共89页
EDA技术实用教程习题答案潘.docx_第4页
第4页 / 共89页
EDA技术实用教程习题答案潘.docx_第5页
第5页 / 共89页
EDA技术实用教程习题答案潘.docx_第6页
第6页 / 共89页
EDA技术实用教程习题答案潘.docx_第7页
第7页 / 共89页
EDA技术实用教程习题答案潘.docx_第8页
第8页 / 共89页
EDA技术实用教程习题答案潘.docx_第9页
第9页 / 共89页
EDA技术实用教程习题答案潘.docx_第10页
第10页 / 共89页
EDA技术实用教程习题答案潘.docx_第11页
第11页 / 共89页
EDA技术实用教程习题答案潘.docx_第12页
第12页 / 共89页
EDA技术实用教程习题答案潘.docx_第13页
第13页 / 共89页
EDA技术实用教程习题答案潘.docx_第14页
第14页 / 共89页
EDA技术实用教程习题答案潘.docx_第15页
第15页 / 共89页
EDA技术实用教程习题答案潘.docx_第16页
第16页 / 共89页
EDA技术实用教程习题答案潘.docx_第17页
第17页 / 共89页
EDA技术实用教程习题答案潘.docx_第18页
第18页 / 共89页
EDA技术实用教程习题答案潘.docx_第19页
第19页 / 共89页
EDA技术实用教程习题答案潘.docx_第20页
第20页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA技术实用教程习题答案潘.docx

《EDA技术实用教程习题答案潘.docx》由会员分享,可在线阅读,更多相关《EDA技术实用教程习题答案潘.docx(89页珍藏版)》请在冰点文库上搜索。

EDA技术实用教程习题答案潘.docx

EDA技术实用教程习题答案潘

《EDA技术实用教程(第五版)》习题

1习题

1-1EDA技术与ASIC设计和FPGA开发有什么关系?

FPGA在ASIC设计中有什么用途?

P3~4

EDA技术与ASIC设计和FPGA开发有什么关系?

答:

利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现;FPGA和CPLD是实现这一途径的主流器件。

FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。

FPGA在ASIC设计中有什么用途?

答:

FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。

FPGA实现ASIC设计的现场可编程器件。

1-2与软件描述语言相比,VHDL有什么特点?

P4~6

答:

编译器将软件程序翻译成基于某种特定CPU的机器代码,这种代码仅限于这种CPU而不能移植,并且机器代码不代表硬件结构,更不能改变CPU的硬件结构,只能被动地为其特定的硬件电路结构所利用。

综合器将VHDL程序转化的目标是底层的电路结构网表文件,这种满足VHDL设计程序功能描述的电路结构,不依赖于任何特定硬件环境;具有相对独立性。

综合器在将VHDL(硬件描述语言)表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。

l-3什么是综合?

有哪些类型?

综合在电子设计自动化中的地位是什么?

P6

什么是综合?

答:

在电子设计领域中综合的概念可以表示为:

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

有哪些类型?

答:

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

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

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

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

综合在电子设计自动化中的地位是什么?

答:

是核心地位(见图1-3)。

综合器具有更复杂的工作环境,综合器在接受VHDL程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库信息,以及获得优化综合的诸多约束条件信息;根据工艺库和约束条件信息,将VHDL程序转化成电路实现的相关信息。

1-4在EDA技术中,自顶向下的设计方法的重要意义是什么?

P8~10

答:

在EDA技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。

1-5IP在EDA技术的应用和发展中的意义是什么?

P23~25

答:

IP核具有规范的接口协议,良好的可移植与可测试性,为系统开发提供了可靠的保证。

1-6叙述EDA的FPGA/CPLD设计流程,以及涉及的EDA工具及其在整个流程中的作用。

(P12~14)

答:

1.设计输入(原理图/HDL文本编辑)(EDA设计输入器将电路系统以一定的表达方式输入计算机);2.综合(EDA综合器就是将电路的高级语言(如行为描述)转换成低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序。

);3.适配(EDA适配器的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件,如JEDEC、JAM格式的文件。

);4.时序仿真(EDA时序仿真器就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。

)与功能仿真(EDA功能仿真器直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及任何具体器件的硬件特性。

);5.编程下载(EDA编程下载把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件调试和验证(HardwareDebugging)。

);6.硬件测试(最后是将含有载入了设计的FPGA或CPLD的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。

其中EDA的嵌入式逻辑分析仪是将含有载入了设计的FPGA的硬件系统进行统一测试,并将测试波形在PC机上显示、观察和分析。

)。

2习题

2-1OLMC(输出逻辑宏单元)有何功能?

说明GAL是怎样实现可编程组合电路与时序电路的。

P34~36

OLMC有何功能?

答:

OLMC单元设有多种组态,可配置成专用组合输出、专用输入、组合输出双向口、寄存器输出、寄存器输出双向口等。

说明GAL是怎样实现可编程组合电路与时序电路的?

答:

GAL(通用阵列逻辑器件)是通过对其中的OLMC(逻辑宏单元)的编程和三种模式配置(寄存器模式、复合模式、简单模式),实现组合电路与时序电路设计的。

2-2什么是基于乘积项的可编程逻辑结构?

P33~34,40什么是基于查找表的可编程逻辑结构?

P40~42

什么是基于乘积项的可编程逻辑结构?

答:

GAL、CPLD之类都是基于乘积项的可编程结构;即包含有可编程与阵列和固定的或阵列的PAL(可编程阵列逻辑)器件构成。

什么是基于查找表的可编程逻辑结构?

答:

FPGA(现场可编程门阵列)是基于查找表的可编程逻辑结构。

2-3FPGA系列器件中的LAB有何作用?

P42~44

答:

FPGA(Cyclone/CycloneII)系列器件主要由逻辑阵列块LAB、嵌入式存储器块(EAB)、I/O单元、嵌入式硬件乘法器和PLL等模块构成;其中LAB(逻辑阵列块)由一系列相邻的LE(逻辑单元)构成的;FPGA可编程资源主要来自逻辑阵列块LAB。

2-4与传统的测试技术相比,边界扫描技术有何优点?

P47~50

答:

使用BST(边界扫描测试)规范测试,不必使用物理探针,可在器件正常工作时在系统捕获测量的功能数据。

克服传统的外探针测试法和“针床”夹具测试法来无法对IC内部节点无法测试的难题。

2-5解释编程与配置这两个概念。

P51~56

答:

编程:

基于电可擦除存储单元的EEPROM或Flash技术。

CPLD一股使用此技术进行编程。

CPLD被编程后改变了电可擦除存储单元中的信息,掉电后可保存。

电可擦除编程工艺的优点是编程后信息不会因掉电而丢失,但编程次数有限,编程的速度不快。

配置:

基于SRAM查找表的编程单元。

编程信息是保存在SRAM中的,SRAM在掉电后编程信息立即丢失,在下次上电后,还需要重新载入编程信息。

大部分FPGA采用该种编程工艺。

该类器件的编程一般称为配置。

对于SRAM型FPGA来说,配置次数无限,且速度快;在加电时可随时更改逻辑;下载信息的保密性也不如电可擦除的编程。

2-6请参阅相关资料,并回答问题:

按本章给出的归类方式,将基于乘积项的可编程逻辑结构的PLD器件归类为CPLD;将基于查找表的可编程逻辑结构的PLD器什归类为FPGA,那么,APEX系列属于什么类型PLD器件?

MAXII系列又属于什么类型的PLD器件?

为什么?

P47~51

答:

APEX(AdvancedLogicElementMatrix)系列属于FPGA类型PLD器件;编程信息存于SRAM中。

MAXII系列属于CPLD类型的PLD器件;编程信息存于EEPROM中。

3习题

3-1说明端口模式INOUT和BUFFER有何异同点。

P60

INOUT:

具有三态控制的双向传送端口

BUFFER:

具有输出反馈的单向东湖出口。

3-2画出与以下实体描述对应的原理图符号元件:

ENTITYbuf3sIS--实体1:

三态缓冲器

PORT(input:

INSTD_LOGIC;--输入端

enable:

INSTD_LOGIC;--使能端

output:

OUTSTD_LOGIC);--输出端

ENDbuf3s;

ENTITYmux21IS--实体2:

2选1多路选择器

PORT(in0,in1,sel:

INSTD_LOGIC;

output:

OUTSTD_LOGIC);

mux21

in0

output

in1

sel

3-3试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序,选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=’0’,s0=’0’;s1=’0’,s0=’1’;s1=’1’,s0=’0’和s1=’1’,s0=’1’时,分别执行y<=a、y<=b、y<=c、y<=d。

--解1:

用IF_THEN语句实现4选1多路选择器

LIBRARYIEEE;

USEENTITYmux41IS

PORT(a,b,c,d:

INSTD_LOGIC;

s0:

INSTD_LOGIC;

s1:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDENTITYmux41;

ARCHITECTUREif_mux41OFmux41IS

SIGNALs0s1:

STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据

BEGIN

s0s1<=s1&s0;--s1相并s0,即s1与s0并置操作

PROCESS(s0s1,a,b,c,d)

BEGIN

IFs0s1="00"THENy<=a;

ELSIFs0s1="01"THENy<=b;

ELSIFs0s1="10"THENy<=c;

ELSEy<=d;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREif_mux41;

--解2:

用CASE语句实现4选1多路选择器

LIBRARYIEEE;

USEENTITYmux41IS

PORT(a,b,c,d:

INSTD_LOGIC;

s0:

INSTD_LOGIC;

s1:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDENTITYmux41;

ARCHITECTUREcase_mux41OFmux41IS

SIGNALs0s1:

STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型

BEGIN

s0s1<=s1&s0;--s1相并s0,即s1与s0并置操作

PROCESS(s0s1,a,b,c,d)

BEGIN

CASEs0s1IS--类似于真值表的case语句

WHEN"00"=>y<=a;

WHEN"01"=>y<=b;

WHEN"10"=>y<=c;

WHEN"11"=>y<=d;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREcase_mux41;

3-4给出1位全减器的VHDL描述;最终实现8位全减器。

要求:

1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-20中h_suber是半减器,diff是输出差(diff=x-y),s_out是借位输出(s_out=1,x

图3-18全减器结构图

--解:

实现1位半减器h_suber(diff=x-y;s_out=1,x

LIBRARYIEEE;--半减器描述

(1):

布尔方程描述方法

USEENTITYh_suberIS

PORT(x,y:

INSTD_LOGIC;

diff,s_out:

OUTSTD_LOGIC);

ENDENTITYh_suber;

ARCHITECTUREhs1OFh_suberIS

BEGIN

Diff<=xXOR(NOTy);

s_out<=(NOTx)ANDy;

ENDARCHITECTUREhs1;

--解:

采用例化实现图4-20的1位全减器

LIBRARYIEEE;--1位二进制全减器顺层设计描述

USEENTITYf_suberIS

PORT(xin,yin,sub_in:

INSTD_LOGIC;

sub_out,diff_out:

OUTSTD_LOGIC);

ENDENTITYf_suber;

ARCHITECTUREfs1OFf_suberIS

COMPONENTh_suber--调用半减器声明语句

PORT(x,y:

INSTD_LOGIC;

diff,s_out:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALa,b,c:

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

BEGIN

u1:

h_suberPORTMAP(x=>xin,y=>yin,diff=>a,s_out=>b);

u2:

h_suberPORTMAP(x=>a,y=>sub_in,diff=>diff_out,s_out=>c);

sub_out<=cORb;

ENDARCHITECTUREfs1;

(2)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是x-y-sun_in=difft)。

--解

(2):

采用例化方法,以1位全减器为基本硬件;实现串行借位的8位减法器(上图所示)。

LIBRARYIEEE;

USEENTITYsuber_8IS

PORT(x0,x1,x2,x3,x4,x5,x6,x7:

INSTD_LOGIC;

y0,y1,y2,y3,y4,y5,y6,y7,sin:

INSTD_LOGIC;

diff0,diff1,diff2,diff3:

OUTSTD_LOGIC;

diff4,diff5,diff6,diff7,sout:

OUTSTD_LOGIC);

ENDENTITYsuber_8;

ARCHITECTUREs8OFsuber_8IS

COMPONENTf_suber--调用全减器声明语句

PORT(xin,yin,sub_in:

INSTD_LOGIC;

sub_out,diff_out:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALa0,a1,a2,a3,a4,a5,a6:

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

BEGIN

u0:

f_suberPORTMAP(xin=>x0,yin=>y0,diff_out=>diff0,sub_in=>sin,sub_out=>a0);

u1:

f_suberPORTMAP(xin=>x1,yin=>y1,diff_out=>diff1,sub_in=>a0,sub_out=>a1);

u2:

f_suberPORTMAP(xin=>x2,yin=>y2,diff_out=>diff2,sub_in=>a1,sub_out=>a2);

u3:

f_suberPORTMAP(xin=>x3,yin=>y3,diff_out=>diff3,sub_in=>a2,sub_out=>a3);

u4:

f_suberPORTMAP(xin=>x4,yin=>y4,diff_out=>diff4,sub_in=>a3,sub_out=>a4);

u5:

f_suberPORTMAP(xin=>x5,yin=>y5,diff_out=>diff5,sub_in=>a4,sub_out=>a5);

u6:

f_suberPORTMAP(xin=>x6,yin=>y6,diff_out=>diff6,sub_in=>a5,sub_out=>a6);

u7:

f_suberPORTMAP(xin=>x7,yin=>y7,diff_out=>diff7,sub_in=>a6,sub_out=>sout);

ENDARCHITECTUREs8;

3-5用VHDL设计一个3-8译码器,要求分别用(条件)赋值语句、case语句、ifelse语句或移位操作符来完成。

比较这4种方式中,哪一种最节省逻辑资源。

(1):

条件赋值语句

--3-53到8译码器设计(条件赋值语句实现)

LIBRARYIEEE;

USEUSE--为使用类型转换函数,打开此程序包。

ENTITYdecoder3to8IS

port(DIN:

INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:

OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3to8;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

WITHCONV_INTEGER(DIN)SELECT

DOUT<="00000001"WHEN0,

"00000010"WHEN1,

"00000100"WHEN2,

"00001000"WHEN3,

"00010000"WHEN4,

"00100000"WHEN5,

"01000000"WHEN6,

""WHEN7,

UNAFFECTEDWHENOTHERS;

ENDbehave;

(2):

case语句

--3-53到8译码器设计(case语句实现)

LIBRARYIEEE;

USEUSE--为使用类型转换函数,打开此程序包。

ENTITYdecoder3to8IS

port(DIN:

INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:

OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3to8;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

PROCESS(DIN)

BEGIN

CASECONV_INTEGER(DIN)IS

WHEN0=>DOUT<="00000001";

WHEN1=>DOUT<="00000010";

WHEN2=>DOUT<="00000100";

WHEN3=>DOUT<="00001000";

WHEN4=>DOUT<="00010000";

WHEN5=>DOUT<="00100000";

WHEN6=>DOUT<="01000000";

WHEN7=>DOUT<="";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

ENDbehave;

解(3):

if_else语句

--3-53到8译码器设计(if_else语句实现)

LIBRARYIEEE;

USEUSE--为使用类型转换函数,打开此程序包。

ENTITYdecoder3to8IS

port(DIN:

INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:

OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3to8;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

PROCESS(DIN)

BEGIN

IFCONV_INTEGER(DIN)=0THENDOUT<="00000001";

ELSIFCONV_INTEGER(DIN)=1THENDOUT<="00000010";

ELSIFCONV_INTEGER(DIN)=2THENDOUT<="00000100";

ELSIFCONV_INTEGER(DIN)=3THENDOUT<="00001000";

ELSIFCONV_INTEGER(DIN)=4THENDOUT<="00010000";

ELSIFCONV_INTEGER(DIN)=5THENDOUT<="00100000";

ELSIFCONV_INTEGER(DIN)=6THENDOUT<="01000000";

ELSIFCONV_INTEGER(DIN)=7THENDOUT<="";

ENDIF;

ENDPROCESS;

ENDbehave;

解(4):

移位操作符

--3-53到8译码器设计(移位操作实现)

LIBRARYIEEE;

USEUSE--为使用类型转换函数,打开此程序包。

ENTITYdecoder3to8IS

port(DIN:

INSTD_LOGIC_VECTOR(2DOWNTO0);

DOUT:

OUTBIT_VECTOR(7DOWNTO0));

ENDdecoder3to8;

ARCHITECTUREbehaveOFdecoder3to8IS

BEGIN

DOUT<="00000001"SLLCONV_INTEGER(DIN);--被移位部分是常数

ENDbehave;

3-6设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。

--解:

3-6设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。

LIBRARYIEEE;

USEUSEENTITYg_5_cmpIS

PORT(d_in:

INSTD_LOGIC_VECTOR(3DOWNTO0);--输入数据

cmp_out:

OUTSTD_LOGIC);--比较输出(1:

输入数据>5)

ENDg_5_cmp;

ARCHITECTUREBHVOFg_5_cmpIS

BEGIN

PROCESS(d_in)

BEGIN

IF(d_in>"0101")THEN

cmp_out<='1';--输入数据大于5,比较输出1。

else

cmp_out<='0';--输入数据小于等于5,比较输出0。

ENDIF;

ENDPROCESS;

ENDBHV;

3-7利用if语句设计一个全加器。

--3-7利用if语句设计一个全加器

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

USEUSEENTITYf_adderIS

PORT(ain,bin,cin:

INSTD_LOGIC;

cout,sum:

OUTSTD_LOGIC);

ENDENTITYf_adder;

ARCHITECTUREfd1OFf_adderIS

BEGIN

PROCESS(ain,bin,cin)

BEGIN

IFain='1'XORbin='1'XORcin='1'THENsum<='1';ELSEs

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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