《EDA技术课后参考答案(陈炳权_曾庆立).doc》由会员分享,可在线阅读,更多相关《EDA技术课后参考答案(陈炳权_曾庆立).doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、答案由个人做出,可能有不全或错误之处,欢迎大家批评指正。第一章 1.EDA的英文全称及其中文含义是什么?答:EDA是Electronic Design Automation,其中文含义是“电子设计自动化”。2.什么叫EDA技术?简述EDA技术的发展历程。答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定
2、目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。 3.简述用EDA技术设计电路的设计流程。答 EDA设计流程包括:设计准备、设计输入、设计处理、设计校验、器件编程、器件测试和设计验证。4.什么叫”综合”和”网表文件”?答: (A)在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。(1)从自然语言转换到 VHDL 语言算法表示,即 自然语言综合。(2)从算法表示转换到寄存器 传输级(RegisterTransport Level,RTL),即从行为
3、域到结构域的综合,即行为综合。(3)从 RTL 级表示转换到逻 辑门(包括触发器)的表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC 设计),或转换到 FPGA 的配置网表 文件,可称为版图综合或结构综合。 综合在电子设计自动化中处于核心地位。 (B)网表文件是描述电路的连接关系的文件,一般以文本文件的形式存在。英文为 netlist file格式有cdl, spice, aucdl.等5. 从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答: EDA技术的学习主要应掌握4个方面的内容: 大规模可编程逻辑器件; 硬件描述语言; 软
4、件开发工具; 实验开发系统。6.目前流行的主流厂家的EDA的软件工具有哪些?比较这些EDA软件的差异。答: (1)目前比较流行的主流厂家的EDA的软件工具有Altera的MAX+plus II、Quartus II 、Lattice的ispEXPERT、Xilinx的Foundation Series。 (2)Max+plus II 是A1tera公司推出的一个使用非常广泛的EDA软件工具,它支持原理图、VHDL和Verilog语言的文本文件,以及波形图与EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计。它具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在适配
5、之后,Max+plus II生成供时序仿真用的Edif、VHDL和Verilog 3种不同格式的网表文件。Max+plus II界面友好,使用便捷,被誉为业界最易学易用的EDA软件,并支持主流的第三方EDA工具,支持除APEx20K系列之外的所有A1tera公司的FPGACPLD大规模逻辑器件。 Quartus II是A1tera公司新近推出的EDA软件工具,其设计工具完全支持VHDL和Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。第三方的综合工具,如Leonardo Spectrum、Synplify pro和FPGA Compiler II有着更好的综合效果,Qu
6、artus II可以直接调用这些第三方工具,因此通常建议使用这些工具来完成VHDL/Verilog源程序的综合。同样,Quartus II具备仿真功能,也支持第三方的仿真工具,如Modelsim。此外,Quartus II为A1tera DSP开发包进行系统模型设计提供了集成综合环境,它与MATLAB和DSP Builder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。Quartus II还可与SOPC Builder结合,实现SOPC系统开发。ispExPERT是Lattice公司的主要集成环境。通过它可以进行VHDL、Verilog及ABEL语言的设计输入
7、、综合、适配、仿真和在系统下载。ispExPERT是目前流行的EDA软件中最容易掌握的设计工具之一,它界面友好、操作方便、功能强大,并与第三方EDA工具兼容良好。 Foundation Series是Xilinx公司较成熟的集成开发EDA工具。它采用自动化的、完整的集成设计环境。Foundation项目管理器集成Xilinx实现工具,并包含了强大的书馆Synopsys FPGA Express综合系统,是业界最强大的EDA设计工具之一。7. 简要阐述EDA技术的发展趋势和应用领域答:从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。EDA的范畴包括:机械
8、、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有 EDA的应用。第二章 VHDL硬件描述语言1、简述实体(ENTITY)、结构体(ARCHITECTURE)与原理图的关系。答:结构来说 实体就是原理图的外观,结构体中的具体程序就是原理图中的具体实现。2、子程序调用与元件例化有何区别,函数与过程在具体使用上有何不同。答:从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL综合器为子程序的每一次调用都生成一个电路逻辑块。所不同的是,元件的例化将产生一个新的设计层次,而子程序调用只对应于当前层次的一部分。函数和过程的不同在于:函数只有一个输出,只能通过函数体内的RET
9、URN语句来实现,函数体内不能有信号赋值语句;而过程却可以有不止一个输出,而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的RETURN语句没有用处,因此不少过程都将其省略了。函数的调用只能通过表达式来实现,过程的调用则是通过过程调用语句来实现的。3、什么是重载函数?重载算符有何用处?如何调用重载算符函数。答:(1)什么是重载函数? 根据操作对象变换处理功能。 (2)重载算符有何用处? 用于两个不同类型的操作数据自动转换成同种数据类型,并进行运算处理。 (3)如何调用重载算符函数?采用隐式方式调用,无需事先声明。4、在VHDL程序中配置有何用处?答:配置可以把特定的结构体关联
10、到一个确定的实体,正如配置一词本身的含义一样。配置语句就是用来为较大的系统设计提供管理和工程组织的。配置也是 VHDL 设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。总之用于设置VHDL的工作参数以及工作模式。配置用来选择实体的多个结构体的哪一个被使用。5. 嵌套 BLOCK 的可视性规则是什么?以嵌套 BLOCK 的语句方式设计三个并列的 3 输入或门。答:BLOCK是 VHD 中具有的一种划分机制,这种机制允许设计者合理地将一个模块分为数个区域,在每个块都能对其局部信号、数据类型和常量加以描述和定义。任何能在结构体的说明部分进行说明的对象都能在
11、BLOCK 说明部分中进行说明。相关参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY triple_input ISPORT (A :IN STD_LOGIC; B :IN STD_LOGIC; C :IN STD_LOGIC; OUTA :OUT STD_LOGIC );END triple_input;ARCHITECTURE ADO OF triple_input IS BEGIN OUTA= A AND B AND C; END ADO;6.简述函数与过程的异同点,过
12、程与进程的异同点。答:子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。函数和过程都是串行的。它们的区别在于:过程的调用可以通过其界面获得多个返回值,而函数只能返回一个值;在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数;过程一般被看作一种语句结构,而函数通常是表达式的一部分;过程可以单独存在,而函数通常作为语句的一部分调用。过程和进程的相同点:只能使用顺序语句,可以单独存在。不同点:过程不能像进程那样可以从本结构体的其他块或进程结构中直接读取信号值或者信号赋值。7、判断下列 VHDL 标识符是否合法,如果不合法则指出原因:16#0FA#,10#
13、12F#,8#789#,8#356#,2#0101010#,74HC245,74HC574,CLR/RESET,IN 4/SCLK, D100%。答:识符用法规定:(1)只能包含英文字母,数字,下划线(2)标识符的首字符只能是字母。故:(1)16#0FA#错在首字符是数字,且包含非法字符“#“。 10#12F#、8#789#,8#356#,2#0101010#,74HC245也是犯同一错误。(2)74HC574,CLR/RESET,IN4/SCLK,D100%都是非法,包含非法字符.8、讨论数据对象信号与变量间的异同处,说明它们的使用对所形成的硬件结构有何影响。答:在VHDL中,对象是指用来保
14、持数据的一些客体单元。信号跟变量是VHDL中的重要客体。信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成模块。在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。变量主要是对暂时数据进行局部存储,它是一个局部量。信号与变量在使用前都必需先声明后使用,否则会产生编译错误。信号可以architecture、package、entitiy中声明,是全局量可以在全局使用。变量可以process、function、procedure中声明,也只能在process、function、procedur中使用不是全局变量。他们之间的主要区别有:信号赋值至少要有延时;而变
15、量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。 从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接
16、受赋值时存在的延时特性。9. 运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。下面给出一个新的数据类型AGE,并且下面的转换函数已经实现:function CONV_INTEGER(ARG:AGE) return INTEGER;请仿照本章中的例子,利用此函数编写一个“+”运算符重载函数,支持下面的运算:SIGNALa,c : AGE;.c B 时, E=1;当 Ab)thenX=1;Y=0;Z=0;elsif(ab)thenX=0;Y=1;Z=0;ELSEX=0;Y=0;Z=1;endif;endprocess;endbehave;11. 在 VHDL 编程中,为什么应尽可能使
17、用子类型对类型的取值范围给予限定。答:由于子类型与其基本数据类型属同一数据类型,因此属于子类型的和属于基本数据 类型的数据对象间的赋值和被赋值可以直接进行,不必进行数据类型的转换。利用子类型定义数据对象的好处是,除了使程序提高可读性和易处理外,其实质性的好处还在于有利于提高综合的优化效率,这是因为综合器可以根据子类型所设的约束范围,有效地推知参与综合的寄存器的最合适的数目。12、判断下面 3 例 VHDL 程序中是否有错误,若有错误则指出错误原因:程序1Signal A, EN : std_logic; Process (A, EN)Variable B : std_logic;Beginif
18、 EN = 1 thenB = A;end if;end process;程序 2Architecture one of sample isvariable a, b, c : integer;beginc = a + b;end;程序 3library ieee;use ieee.std_logic_1164.all;entity mux21 isport ( a, b : in std_logic; sel : in std_logic; c : out std_logic;); end sam2;architecture one of mux21 isbeginif sel = 0 th
19、en c := a;else c := b;end if;end two;答:程序1: 将“B=A”改成“B:=A”程序2:-将“c=a+b”改成“c:=a+b”程序3: 将“;)”改成“)” 将“sam2”改成“entity mux21” 增加“process(a,b,sel) beginif sel= 0 then c:=a; else c:=b; end if; -应改成“if sel= 0 then c=a; else c=b; end if;”增加“end process;” 将“two”改成“architecture one”13、分别用 CASE 语句和 IF设计3-8译码器。答
20、:CASE语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder38 ISPORT (EN:IN STD_LOGIC;A0,A1,A2:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY decoder38;ARCHITECTUR bhv OF decoder38 ISSIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN SYYYYYYYYNULL; END CASE;END IF;END PROCESS;END ARCHITECTU
21、RE bhv;IF语句:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder38 ISPORT (EN:IN STD_LOGIC;A0,A1,A2:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY decoder38;ARCHITECTUR bhv OF decoder38 ISBEGINPROCESS (EN,A2,A1,A0)BEGINIF (EN=1) THEN IF(A2=0) THEN IF(A1=0) THEN IF(A0=0) THEN Y=0000000
22、1; ELSE Y=00000010; ELSIF(A1=1) THEN IF(A0=0) THEN Y=00000100; ELSE Y=00001000; END IF; END IF; ELSIF(A2=1) THEN IF(A1=0) THEN IF(A0=0) THEN Y=00010000; ELSE Y=00100000; END IF; ELSIF(A1=1) THEN IF(A0=0) THEN Y=01000000; ELSE Y=10000000; END IF; END IF; END IF;END IF;END PROCESS;END ARCHITECTURE bhv
23、;library ieee;use ieee.std_logic_1164.all;entity sss is port (a: in std_logic_vector(2 downto 0); cout:out std_logic_vector(7 downto 0);end ;architecture one of sss isbegin process(a) begin if a=000 then cout =11111110; elsif a=001 then cout =11111101; elsif a=010 then cout =11111011; elsif a=011 th
24、en cout =11110111; elsif a=100 then cout =11101111; elsif a=101 then cout =11011111; elsif a=110 then cout =10111111; elsif a=111 then cout x,b=y,ci=tmp,su=sum,co=cout); u2:df port map(d=cout,cl=clock,q1=tmp); end architecture one;-底层文件1:D触发器library ieee;use ieee.std_logic_1164.all; entity df is por
25、t (d,cl:in std_logic; q1:out std_logic); end; architecture two of df is signal qq:std_logic; begin process(cl,qq) begin if cl event and cl=1 then qq=d; end if; end process; q1a,b1=b,cou=d,so=e); u2:h_adder port map(a1=e,b1=ci,cou=f,so=su); u3:or2a port map(a1=d,b1=f,c=co); end architecture three;-底层
26、文件2-1:半加器library ieee;use ieee.std_logic_1164.all; entity h_adder is port (a1,b1:in std_logic; so,cou:out std_logic); end; architecture four of h_adder is begin so=not(a1 xor(not b1); cou=a1 and b1; end architecture four;-底层文件2-2:或门library ieee;use ieee.std_logic_1164.all; entity or2a is port (a1,b1
27、:in std_logic; c:out std_logic); end; architecture five of or2a is begin c=a1 or b1; end architecture five;16. 设计5位可变模数计数器。设计要求:令输入信号M1和M0 控制计数模,即令(M1,M0)=(0,0)时为模19 加法计数器,(M1,M0)=(0,1)时为模4计数器,(M1,M0) =(1,0) 为模10 加法计数器,(M1,M0)=(1,1)时为模6计数器。答:Entity mod_cal is Port(M1,M0:in bit; Count:out std_logic_v
28、ector(4 downto 0); Clk:in std_logic);End entity;Architecture behav of mod_cal isSignal count1:std_logic_vector(4 downto 0);Begin Process(clk,M1,M0) Variable sel is bit_vector(1 downto 0); Begin Sel:=M1&M0; If clkevent and clk=1then Count1if Count1=”10011”then Count1if Count1=”00100”then Count1if Cou
29、nt1=”01010”then Count1if Count1=”00110”then Count1=”00000”; End if; End case; End if;End process;Count=count1;End behav;17. 什么是 VHDL 结构体的行为描述风格,叙述行为描述的优缺点。答:如果 VHDL 的结构体只描述了所希望电路的功能或者说电路行为,而没有直接指明或涉及实现这些行为的硬件结构,包括硬件特性、连线方式、逻辑行为方式,则称为行为风格的描述或行为描述。优点:抽象程度最高,最能体现VHDL描述高层次结构和系统的能力。缺点:只表示输入与输出间转换的行为,它不包含
30、任何结构信息。18结构化描述与调用子程序有何异同点,VHDL 程序中是如何进行结构化描述的?结构化描述需要哪些语句?答:略19. 试举一例,在一个结构体中同时含有3种不同描述风格的VHDL语句结构。答:略20. 以数据流的方式设计一个 2 位比较器,再以结构描述方式将已设计好的比较器连接起来构成一个 8 位比较器答:略21. 采用VHDL进行数字系统设计有哪些特点?答:HDL系统设计的基本点:(1)与其他硬件描述语言相比,VHDL具有以下特点:(2)功能强大、设计灵活。(3)强大的系统硬件描述能力。 (4)易于共享和复用。22. VHDL的基本程序结构由几部分组成?各部分的功能是什么?答:由5
31、个部分组成,包含实体、结构体、配置、程序包和库。实体作为一个设计实体的组成部分,其功能是对这个设计实体与外部电路进行接口描述。结构体(ARCHITECTURE)是设计实体的一个重要部分,结构体将具体实现一个实体。在利用 VHDL 进行工程设计中,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个或几个库中以供调用,这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体(程序包)或预先设计好的各种设计实体(元件库程序包)。因此可以把库看成是一种用来存储预先完成的程序包、数据集合体和元件的仓库。已在设计实体中定义的数据类型、子程序或数据对象对于其它设
32、计实体是不可用的,或者说是不可见的。为了使已定义的常数、数据类型、元件调用说明以及子程序能被更多的 VHDL 设计实体方便地访问和共享,可以将它们收集在一个 VHDL 程序包中,多个程序包可以并入一个 VHDL 库中,使之适用于更一般的访问和调用范围,这一点对于大系统开发多个或多组开发人员同步并行工作显得尤为重要。配置可以把特定的结构体关联到一个确定的实体,正如配置一词本身的含义一样。配置也是 VHDL 设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。23. 说明端口模式BUFFER与INOUT有何异同点?答:INOUT为输入输出双向端口,即从端口内部
33、看,可以对端口进行赋值,即输出数据。也可以从此端口读入数据,即输入。BUFFER为缓冲端口,功能与INOUT类似,区别在于当需要读入数据时,只允许内部回读内部产生的输出信号,即反馈。举个例子,设计一个计数器的时候可以将输出的计数信号定义为BUFFER,这样回读输出信号可以做下一计数值的初始值。24. 用VHD设计一个实现三输入的多数表决器。答:library ieee; use ieee.std_logic_1164.all; entity bjq3 is port(a,b,c:in std_logic; y:out std_logic); end; architecture x of bjq
34、3 is signal ty:std_logic_vector(2 downto 0); begin ty=a&b&c; with ty select y=0 when 000, 0 when 001, 0 when 010, 1 when 011, 0 when 100, 1 when 101, 1 when 110, 1 when 111, X when others; end;25. 用PROCESS语句描述带同步复位的JK触发器。答:library ieee; use ieee.std_logic_1164.all; entity jk_ff is port(clk,reset,j,k
35、:in std_logic; q,qb:out std_logic); end; architecture behave of jk_ff is signal tq,tqb:std_logic; begin q=tq;qb=tqb; process(clk,reset) begin if (clkevent and clk=1) then if (reset=0) then tq=0;tqb=1; elsif (j=0)and(k=0) then tq=tq;tqb=tqb; elsif (j=0)and(k=1) then tq=0;tqb=1; elsif (j=1)and(k=0) then tq=1;tqb=0; elsif