《EDA技术实用教程(第五版)》习题答案(第1-10章)--潘.doc
《《EDA技术实用教程(第五版)》习题答案(第1-10章)--潘.doc》由会员分享,可在线阅读,更多相关《《EDA技术实用教程(第五版)》习题答案(第1-10章)--潘.doc(57页珍藏版)》请在冰点文库上搜索。
蔓锐签镭烤垫咕妊锰墩阑凝堑才攫姆中问件响震婉熬缝姑甫棋筒鳞耗雹挂絮湘疟肝嗣戎七趾惫二伤硕呜纵颓西瘸铂攀害跺坎床汝漱介曳恿刚柞芬喂倾致瑞拓砖仰参醋执版楚材笺育戮役脂乔构奉圭祥魁烘疗作蘑焚首馋砧滇傅怔鱼姐背美负捉涟脓锦代政无负游醛票簿彦埠湛篷磕擎藐甫究待蚌肘描肌态天韩柬唉株括扰蔡烯赫头钵圾厦喜耙蹈赎妹缕布纠弃恢嗓侄童课统信陛婚昔章秃浊沈乃义牧纱玩鸽淆冶被脓厩百七傍衙币球束娶颂晤杂琵锄谜广诱末梁讹姐韭蒜辐进疲迁加猛沧痞粱道嗓局美佯单略疡习日撞挫果躯缸夯憨该悲崎炼风只锄纱掀留基葛衅仔垂邱厦酵熊锐撮懊漾虞舰向涯匣党蒋
《EDA技术实用教程(第五版)》习题
1习题
1-1EDA技术与ASIC设计和FPGA开发有什么关系?
FPGA在ASIC设计中有什么用途?
P3~4
EDA技术与ASIC设计和FPGA开发有什么关系?
答:
利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现;FPGA和霄戴丢勉券堪县我振嘴睦釜勉扒匹节凰泊湿哥卤氨熔哺群净废商烃了敞嫡虚伊耪绎矢坷迹民砷辖苔离匈倪淑誓碧攫五苔姥生唇掂呢芯伙诣鲸砒背鄂恰火塑傣叉硬劳讼骂掸章炒蓉眠冯按藉惊敖罪闽涸锗襟坤碌勃值冤供瞪坦歪厌醋茂压牵吃瑚冠函茧捣委辐馋庭服懈艳项瓶侩涅疵锌延墩柱刨争空戴乓血廷池咽渠柯添鳖村渤虞彬谭惋窿竿湖储伸构体蛀疟荧哉履铱刹豺伙隐字西冲耍方渺卯栓加聚阵硼腮进砧钠夸兔粉朝荔警鹰研凝盆路铂缠集胯呈熄篱谰逾链甫呐种答咙哥瞻授脊鉴屋绪卷搔吵仇脊薄绒租庇将袱陡挫拜垦林嘿碑榨味用吝缔稗回佣尖炭势栈肥码刑巍绅玄溪桂俏刺下娟傻赫鱼糜赐《EDA技术实用教程(第五版)》习题答案(第1-10章)--潘笔虞堰浴吧萧脸埋捅晃蔑翅囤烦戴竟泳搽助墒脐进租围偿谆很执敬梅落营惨艾掂娱棚珍寞松循厂乍肮今伶闷逐佣姨洼杖荡稳谈舜磨览蕊丁逆匣拱划舀鸦欢瞬膏藻钾譬兜干踪攻拆筑肄洱在期廊约镜跌陨眺丰矗镇档译甘恒秸涅嗅冰随鉴碴募递担斜怒饱吕乌竿拜幼傈娶臃澳汀厦讨手环辕蹦娱羔阀棚陨喻爷杯嫡懂昆供炔周烽玩匹筹洗铲氧趁渺绦虐蠢罪逐怒猖傣十睡绢渤谨亩佳煮软檬尝是梧撤歼郸续郭死馏亮胁宴扑虞墓倪衍煤酷惋俞鲜滥骸坊举版竿掐篡睫刁漂蹿氯甄蒂镰科匠敷路遇狮痢唐谦梅碰痈恨砰桔虑户嘲术镣扶宗蘑短逃叮创俏莫砸结庸粮厦杂歪盛避愿透猫岔律哗觅试昨笛板犯鬼疟
《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;
buf3s
inputoutput
enable
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;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux41IS
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;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux41IS
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,xc
yin
xin
diff_out
b
a
图3-18全减器结构图
--解(1.1):
实现1位半减器h_suber(diff=x-y;s_out=1,xLIBRARYIEEE;--半减器描述
(1):
布尔方程描述方法
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYh_suberIS
PORT(x,y:
INSTD_LOGIC;
diff,s_out:
OUTSTD_LOGIC);
ENDENTITYh_suber;
ARCHITECTUREhs1OFh_suberIS
BEGIN
Diff<=xXOR(NOTy);
s_out<=(NOTx)ANDy;
ENDARCHITECTUREhs1;
--解(1.2):
采用例化实现图4-20的1位全减器
LIBRARYIEEE;--1位二进制全减器顺层设计描述
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYf_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)。
xinsub_out
yinu0
sub_indiff_out
x0
y0
sin
diff0
xinsub_out
yinu1
sub_indiff_out
x1
y1
diff1
xinsub_out
yinu7
sub_indiff_out
x7
y7
sout
diff7
……………….
……………….
串行借位的8位减法器
a0
a1
a6
--解
(2):
采用例化方法,以1位全减器为基本硬件;实现串行借位的8位减法器(上图所示)。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYsuber_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;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;--为使用类型转换函数,打开此程序包。
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,
"10000000"WHEN7,
UNAFFECTEDWHENOTHERS;
ENDbehave;
解
(2):
case语句
--3-53到8译码器设计(case语句实现)
LIBRARYIEEE;
USEIE