收藏 分享(赏)

《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc

上传人:tangtianxu2 文档编号:2857755 上传时间:2018-09-28 格式:DOC 页数:57 大小:771KB
下载 相关 举报
《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc_第1页
第1页 / 共57页
《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc_第2页
第2页 / 共57页
《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc_第3页
第3页 / 共57页
《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc_第4页
第4页 / 共57页
《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

1、EDA 技术实用教程( 第五版) 习题1 习 题1-1 EDA 技术与 ASIC 设计和 FPGA 开发有什么关系? FPGA 在 ASIC 设计中有什么用途?P34EDA 技术与 ASIC 设计和 FPGA 开发有什么关系?答:利用 EDA 技术进行电子系统设计的最后目标是完成专用集成电路 ASIC 的设计和实现;FPGA 和 CPLD 是实现这一途径的主流器件。FPGA 和 CPLD 的应用是 EDA 技术有机融合软硬件电子设计技术、SoC(片上系统)和 ASIC 设计,以及对自动设计与自动实现最典型的诠释。FPGA 在 ASIC 设计中有什么用途?答:FPGA 和 CPLD 通常也被称为

2、可编程专用 IC,或可编程 ASIC。FPGA 实现 ASIC 设计的现场可编程器件。1-2 与软件描述语言相比, VHDL 有什么特点? P46答:编译器将软件程序翻译成基于某种特定 CPU 的机器代码,这种代码仅限于这种CPU 而不能移植,并且机器代码不代表硬件结构,更不能改变 CPU 的硬件结构,只能被动地为其特定的硬件电路结构所利用。综合器将 VHDL 程序转化的目标是底层的电路结构网表文件,这种满足 VHDL 设计程序功能描述的电路结构,不依赖于任何特定硬件环境;具有相对独立性。综合器在将VHDL(硬件描述语言)表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,

3、它不是机械的一一对应式的“翻译” ,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。l-3 什么是综合? 有哪些类型? 综合在电子设计自动化中的地位是什么? P6什么是综合? 答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。有哪些类型? 答:(1)从自然语言转换到 VHDL 语言算法表示,即自然语言综合。(2)从算法表示转换到寄存器传输级(RegisterTransport Level,RTL),即从行为域到结构域的综合,即行为综合。(3)从 RTL 级表示转换到逻辑门(包括触发器)的

4、表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC 设计),或转换到 FPGA 的配置网表文件,可称为版图综合或结构综合。综合在电子设计自动化中的地位是什么? 答:是核心地位(见图 1-3) 。综合器具有更复杂的工作环境,综合器在接受 VHDL 程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库信息,以及获得优化综合的诸多约束条件信息;根据工艺库和约束条件信息,将 VHDL 程序转化成电路实现的相关信息。1-4 在 EDA 技术中,自顶向下的设计方法的重要意义是什么? P810答:在 EDA 技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过

5、程。1-5 IP 在 EDA 技术的应用和发展中的意义是什么? P2325答:IP 核具有规范的接口协议,良好的可移植与可测试性,为系统开发提供了可靠的保证。1-6 叙述 EDA 的 FPGA/CPLD 设计流程,以及涉及的 EDA 工具及其在整个流程中的作用。 (P1214)答:1.设计输入(原理图/HDL 文本编辑)(EDA 设计输入器将电路系统以一定的表达方式输入计算机);2.综合(EDA 综合器就是将电路的高级语言 (如行为描述)转换成低级的,可与 FPGACPLD 的基本结构相映射的网表文件或程序。);3.适配(EDA 适配器的功能是将由综合器产生的网表文件配置于指定的目标器件中,使

6、之产生最终的下载文件,如JEDEC、JAM 格式的文件。);4.时序仿真(EDA 时序仿真器就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。)与功能仿真(EDA 功能仿真器直接对 VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及任何具体器件的硬件特性。);5.编程下载(EDA 编程下载把适配后生成的下载或配置文件,通过编程器或编程电缆向 FPGA 或 CPLD下载,以便进行硬件调试和验证(Hardware Debugging)。);6.硬件测试(最后是将含有载入了设计的 FPGA 或 CPLD

7、 的硬件系统进行统一测试,以便最终验证设计项目在目标系统上的实际工作情况,以排除错误,改进设计。其中 EDA 的嵌入式逻辑分析仪是将含有载入了设计的 FPGA 的硬件系统进行统一测试,并将测试波形在 PC 机上显示、观察和分析。)。2 习 题2-1 OLMC(输出逻辑宏单元)有何功能? 说明 GAL 是怎样实现可编程组合电路与时序电路的。 P3436OLMC 有何功能? 答:OLMC 单元设有多种组态,可配置成专用组合输出、专用输入、组合输出双向口、寄存器输出、寄存器输出双向口等。说明 GAL 是怎样实现可编程组合电路与时序电路的? 答:GAL (通用阵列逻辑器件)是通过对其中的 OLMC(逻

8、辑宏单元)的编程和三种模式配置(寄存器模式、复合模式、简单模式) ,实现组合电路与时序电路设计的。2-2 什么是基于乘积项的可编程逻辑结构? P3334,40 什么是基于查找表的可编程逻辑结构? P4042什么是基于乘积项的可编程逻辑结构?答:GAL、CPLD 之类都是基于乘积项的可编程结构;即包含有可编程与阵列和固定的或阵列的 PAL(可编程阵列逻辑)器件构成。什么是基于查找表的可编程逻辑结构?答:FPGA(现场可编程门阵列)是基于查找表的可编程逻辑结构。2-3 FPGA 系列器件中的 LAB 有何作用? P4244答:FPGA(Cyclone/Cyclone II)系列器件主要由逻辑阵列块

9、 LAB、嵌入式存储器块(EAB) 、I/O 单元、嵌入式硬件乘法器和 PLL 等模块构成;其中 LAB(逻辑阵列块)由一系列相邻的 LE(逻辑单元)构成的;FPGA 可编程资源主要来自逻辑阵列块 LAB。2-4 与传统的测试技术相比,边界扫描技术有何优点 ? P4750答:使用 BST(边界扫描测试)规范测试,不必使用物理探针,可在器件正常工作时在系统捕获测量的功能数据。克服传统的外探针测试法和“针床”夹具测试法来无法对 IC内部节点无法测试的难题。2-5 解释编程与配置这两个概念。 P5156答:编程:基于电可擦除存储单元的 EEPROM 或 Flash 技术。CPLD 一股使用此技术进行

10、编程。CPLD 被编程后改变了电可擦除存储单元中的信息,掉电后可保存。电可擦除编程工艺的优点是编程后信息不会因掉电而丢失,但编程次数有限,编程的速度不快。配置:基于 SRAM 查找表的编程单元。编程信息是保存在 SRAM 中的,SRAM 在掉电后编程信息立即丢失,在下次上电后,还需要重新载入编程信息。大部分 FPGA 采用该种编程工艺。该类器件的编程一般称为配置。对于 SRAM 型 FPGA 来说,配置次数无限,且速度快;在加电时可随时更改逻辑;下载信息的保密性也不如电可擦除的编程。2-6 请参阅相关资料,并回答问题:按本章给出的归类方式,将基于乘积项的可编程逻辑结构的 PLD 器件归类为 C

11、PLD;将基于查找表的可编程逻辑结构的 PLD 器什归类为FPGA,那么,APEX 系列属于什么类型 PLD 器件? MAX II 系列又属于什么类型的 PLD 器件?为什么? P4751答:APEX(Advanced Logic Element Matrix)系列属于 FPGA 类型 PLD 器件;编程信息存于 SRAM 中。MAX II 系列属于 CPLD 类型的 PLD 器件;编程信息存于 EEPROM 中。3 习 题3-1 说明端口模式 INOUT 和 BUFFER 有何异同点。P60 INOUT : 具有三态控制的双向传送端口BUFFER: 具有输出反馈的单向东湖出口。3-2 画出与

12、以下实体描述对应的原理图符号元件 :ENTITY buf3s IS -实体 1:三态缓冲器PORT(input:IN STD_LOGIC; -输入端enable:IN STD_LOGIC; -使能端output:OUT STD_LOGIC); -输出端END buf3s ;buf3sinput outputenableENTITY mux21 IS -实体 2: 2 选 1 多路选择器PORT(in0, in1,sel: IN STD_LOGIC;output:OUT STD_LOGIC);mux21in0outputin1sel3-3 试分别用 IF_THEN 语句和 CASE 语句的表达方

13、式写出此电路的 VHDL 程序,选择控制信号 s1 和 s0 的数据类型为 STD_LOGIC_VECTOR;当 s1=0,s0=0;s1=0,s0=1 ;s1=1,s0=0和 s1=1,s0=1时,分别执行 y y y y y NULL ;END CASE;END PROCESS;END ARCHITECTURE case_mux41;3-4 给出 1 位全减器的 VHDL 描述;最终实现 8 位全减器。要求:1)首先设计 1 位半减器,然后用例化语句将它们连接起来,图 4-20 中 h_suber 是半减器,diff 是输出差(diff=x-y),s_out 是借位输出(s_out=1,x

14、xin,y=yin, diff=a, s_out=b);u2: h_suber PORT MAP(x=a, y=sub_in, diff=diff_out,s_out=c);sub_out x0,yin=y0,diff_out=diff0,sub_in=sin,sub_out=a0);u1:f_suber PORT MAP(xin=x1,yin=y1,diff_out=diff1,sub_in=a0,sub_out=a1);u2:f_suber PORT MAP(xin=x2,yin=y2,diff_out=diff2,sub_in=a1,sub_out=a2);u3:f_suber PORT

15、 MAP(xin=x3,yin=y3,diff_out=diff3,sub_in=a2,sub_out=a3);u4:f_suber PORT MAP(xin=x4,yin=y4,diff_out=diff4,sub_in=a3,sub_out=a4);u5:f_suber PORT MAP(xin=x5,yin=y5,diff_out=diff5,sub_in=a4,sub_out=a5);u6:f_suber PORT MAP(xin=x6,yin=y6,diff_out=diff6,sub_in=a5,sub_out=a6);u7:f_suber PORT MAP(xin=x7,yin=

16、y7,diff_out=diff7,sub_in=a6,sub_out=sout);END ARCHITECTURE s8;3-5 用 VHDL 设计一个 3-8 译码器,要求分别用(条件)赋值语句、case 语句、if else 语句或移位操作符来完成。比较这 4 种方式中,哪一种最节省逻辑资源。解(1):条件赋值语句-3-5 3 到 8 译码器设计 (条件赋值语句实现)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; -为使用类型转换函数,打开此程序包。ENTITY decoder3to8 I

17、Sport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0);END decoder3to8;ARCHITECTURE behave OF decoder3to8 ISBEGINWITH CONV_INTEGER(DIN) SELECTDOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT NULL;END CASE;END PROCESS;END behave;解(3):if_else 语句-3-5 3 到 8 译码器设计 (if_else 语句实现)LIBRARY

18、IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; -为使用类型转换函数,打开此程序包。ENTITY decoder3to8 ISport( DIN: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT: OUT BIT_VECTOR(7 DOWNTO 0);END decoder3to8;ARCHITECTURE behave OF decoder3to8 ISBEGINPROCESS (DIN)BEGINIF CONV_INTEGER(DIN)=0 THEN DOUT5)END g_5_c

19、mp;ARCHITECTURE BHV OF g_5_cmp ISBEGINPROCESS(d_in)BEGINIF(d_in“0101“) THENcmp_out=0,补码=原码。elsepatch_data DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT DOUT NULL;END CASE;END PROCESS;END behave;3-10 利用 if 语句设计一个 3 位二进制数 A20、B20的比较器电路。对于比较(AB)、(A=B)的结果分别给出输出信号 LT=1、GT=1、E

20、Q=1。-3-10 利用 if 语句设计一个 3 位二进制数 A20、B20的比较器电路。 -对于比较(AB)、(A=B)的结果分别给出输出信号 LT=1、GT=1、EQ=1。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COMP ISPORT( A,B: IN STD_LOGIC_VECTOR(2 DOWNTO 0); -两个 3 位输入LT: OUT STD_LOGIC; -小于输出GT: OUT STD_LOGIC; -大于输出 EQ: OUT STD_LOGIC); -等于

21、输出END ENTITY COMP;ARCHITECTURE ONE OF COMP ISBEGINPROCESS(A,B)BEGINIF (AB) THEN GTB); -大于- EQ “1001“ THEN cc:=cc+“00000110“;END IF;IF cc(7 DOWNTO 4) “1001“ THEN cc:=cc+“01100000“;END IF;cc:=a+cc;IF cc(3 DOWNTO 0) “1001“ THEN cc:=cc+“00000110“;END IF;IF cc(7 DOWNTO 4) “1001“ THEN cc:=cc+“01100000“;EN

22、D IF;IF a “1001“ THEN cc:=cc+“00000110“;END IF;IF cc(7 DOWNTO 4) “1001“ THEN cc:=cc+“01100000“;END IF;END IF;diff0);END IF;IF(B(1)=1)THEN RR10);END IF;IF(B(2)=1)THEN RR20);END IF;IF(B(3)=1)THEN RR30);END IF;END PROCESS;u0: addern PORT MAP(a=RR0,b=RR1,result=ZZ0); u1: addern PORT MAP(a=ZZ0,b=RR2,resu

23、lt=ZZ1); u2: addern PORT MAP(a=ZZ1,b=RR3,result=R);END ARCHITECTURE ONE;-3-13a 16 位乘法器(通过底层 3-13_MULTSB 和顶层 GENERIC 参数和传递例化语句实现)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MULT16B ISPORT(D1,D2: IN STD_LOGIC_VECTOR(15 DOWNTO 0);Q: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END;ARCHITECTURE BHV OF MULT16B

24、ISCOMPONENT MULTSB -MULTS8 模块的调用声明GENERIC(S: integer); -照抄 MULTSB 实体中关于参数“端口”定义的语句PORT(R: OUT std_logic_vector(2*S-1 DOWNTO 0);A,B: IN std_logic_vector(S-1 DOWNTO 0);END COMPONENT ;BEGINu1: MULTSB GENERIC MAP(S=16) PORT MAP(R=Q,A=D1,B=D2);END;3-14 用循环语句设计一个 7 人投票表决器。-解:3-14 用循环语句设计一个 7 人投票表决器,及一个 4

25、位 4 输出最大数值检测电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY vote_7 ISPORT( DIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-7 位表决输入(1:同意,0:不同意)G_4: OUT STD_LOGIC; -超过半数指示CNTH: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-表决结果统计数END vote_7;ARCHITECTURE BHV OF vote_7 ISBEGINPROCESS(DIN)VA

26、RIABLE Q: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINQ:=“000“;FOR n IN 0 TO 6 LOOP - n 是 LOOP 的循环变量IF(DIN(n)=1) THEN Q:=Q+1; END IF;END LOOP;CNTH=4 THEN G_4B 时 E=1;当 AB 时 GT=1;当 AB) THEN GTB 时 GT=1;当 AX0,b=X1,s=S0,y=N0);u2: mux21a PORT MAP(a=X2,b=X3,s=S0,y=N1);u3: mux21a PORT MAP(a=N0,b=N1,s=S1,y=OUTY);END;-

27、解 2:单层结构 mux41a.vhd 程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41a ISPORT(x1,x2,x3,x4,s0,s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41a;ARCHITECTURE one OF mux41a ISsignal N0,N1: STD_LOGIC;BEGINcom1: PROCESS(x1,x2,s0)BEGINIF s0=0 THENN00);END IF;IF(B(1)=1)THEN RR10);END IF;IF(B(2

28、)=1)THEN RR20);END IF; IF(B(3)=1)THEN RR30);END IF;END PROCESS;u0: addern PORT MAP(a=RR0,b=RR1,result=ZZ0); u1: addern PORT MAP(a=ZZ0,b=RR2,result=ZZ1); u2: addern PORT MAP(a=ZZ1,b=RR3,result=R);END ARCHITECTURE ONE;-解: 3-14 用循环语句设计一个 7 人投票表决器,及一个 4 位 4 输出最大数值检测电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_116

29、4.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY vote_7 ISPORT( DIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-7 位表决输入(1:同意,0:不同意)G_4: OUT STD_LOGIC; -超过半数指示CNTH: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-表决结果统计数END vote_7;ARCHITECTURE BHV OF vote_7 ISBEGINPROCESS(DIN)VARIABLE Q: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINQ:=“00

30、0“;FOR n IN 0 TO 6 LOOP - n 是 LOOP 的循环变量IF(DIN(n)=1) THEN Q:=Q+1; END IF;END LOOP;CNTH=4 THEN G_4 0 THEN Rut(i):=1;Din:=Din-Rig;ELSE Rut(i):=0; END IF;Rig:=Rig/2;END LOOP;RETURN Rut;END nat_to_Bit8;END n_pack;5 习 题5-1 在 VHDL 设计中,给时序电路清 0(复位)有两种不同方法,它们是什么 ?如何实现? 同步和异步复位。P122124-解 1:5-1 【例 5-4】含异步复位和时

31、钟使能的 D 触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 ISPORT(CLK,RST,EN,D: IN STD_LOGIC;Q: OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1:STD_LOGIC; -类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS (CLK,Q1,RST,EN)BEGINIF RST=1 THEN Q10); -计数器异步复位 ELSIF LOAD=0 THEN Q:=DATA; -允许加载ELSIF CLKEVENT AND

32、CLK=1 THEN -检测时钟上升沿IF EN=1 THEN -检测是否允许计数或加载(同步使能)IF Q0); -大于等于 9 时,计数值清零END IF;END IF;END IF; IF Q=9 THEN COUT0); -计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿IF EN=1 THEN -检测是否允许计数或加载(同步使能)IF COUT=1 THEN Q:=DATA; -允许加载ELSEIF Q0); -大于等于 9 时,计数值清零END IF;END IF;END IF;END IF; IF Q=9 THEN COUT=1; -计

33、数大于 9,输出进位信号ELSE COUT=0;END IF;DOUT=Q; -将计数值向端口输出END PROCESS;END behav;5-6 分别给出 RTL 图(图 5-19 和图 5-19)的 VHDL 描述,注意其中的 D 触发器和锁存器的表述。 图 5-18 RTL 图 1-解 1:图 5-18 RTL 图的 VHDL 程序 mux21a.vhd 底层设计描述。- 用 WHEN_ELSE 实现 2 选 1 多路选择器程序(mux21a.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a ISPORT(a,b :

34、IN STD_LOGIC;s : IN STD_LOGIC;y : OUT STD_LOGIC);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINy=a WHEN s=0 ELSE b;END ARCHITECTURE one;-解 2:实现图 5-18 RTL 图的 VHDL 程序 DFF6.vhd 底层设计描述。- 电平触发 D 型触发器程序 (DFF6.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF6 ISPORT(CLK: IN STD_LOGIC;D: IN STD

35、_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF6 ISBEGINPROCESS(CLK,D)BEGINIF CLK=1THEN Q=D;END IF;END PROCESS;END bhv;- 5-6 给出图 5-18 RTL 图的 VHDL 描述。-解 3:实现图 5-18 RTL 图的 VHDL 程序 T5_18.vhd 顶层设计描述。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY T5_18 ISPORT(D1,D2,CLK : IN STD_LOGIC;Q : OUT STD_LOG

36、IC);END ENTITY T5_18;ARCHITECTURE one OF T5_18 ISCOMPONENT mux21a -调用 2 选 1 多路选择器声明语句PORT(a,b : IN STD_LOGIC;s : IN STD_LOGIC;y : OUT STD_LOGIC);END COMPONENT;COMPONENT DFF6 -调用电平型 D 触发器声明语句PORT(CLK: IN STD_LOGIC;D: IN STD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;SIGNAL DD: STD_LOGIC; -定义 1 个信号作为内部的连接线。BEGINu1: mux21a PORT MAP(CLK,D2,D1,DD);u2: DFF6 PORT MAP(CLK,DD,Q);

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

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报