您好,欢迎访问三七文档
第一章1.EDA的英文全称及其中文含义是什么?答:EDA是ElectronicDesignAutomation,其中文含义是“电子设计自动化”。2.什么叫EDA技术?简述EDA技术的发展历程。答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。3.简述用EDA技术设计电路的设计流程。答EDA设计流程包括:设计准备、设计输入、设计处理、设计校验、器件编程、器件测试和设计验证。3.1简述PLD的基本类型。答:对于PLD产品,一般分为:基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的中小规模PLD,以及基于查找表(Look-Uptable)技术,SRAM工艺的大规模PLD/FPGA。EEPROM工艺的PLD密度小,多用于5,000门以下的小规模设计,适合做复杂的组合逻辑,如译码。SRAM工艺的PLD(FPGA),密度高,触发器多,多用于10,000门以上的大规模设计,适合做复杂的时序逻辑,如数字信号处理和各种算法。3.3CPLD的英文全称是什么?CPLD的结构主要由哪几部分组成?每一部分的作用如何?答:CPLD的英文全称是ComplexProgrammab1eLogicDevice。CPLD的结构主要由宏单元、可编程连线和I/O控制块三部分构成,宏单元是基本结构,可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制。3.6FPGA的英文全称是什么?FPGA的结构主要由哪几部分组成?每一部分的作用如何?答:FPGA的英文全称是FieldProgrammableGateArray。FPGA的结构主要由可编程逻辑块(CLB)(主要由逻辑函数发生器、触发器、数据选择器等电路组成)、输入/输出模块(IOB)(主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。)及可编程互连资源(PIR)(由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接,从而实现FPGA内部的CLB和CLB之间、CLB和IOB之间的连接)等3种可编程电路和一个SRAM结构的配置存储单元组成。CLB是实现逻辑功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片中;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部引脚的接口,它通常排列在芯片的四周;可编程互连资源(PIR)包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB与IOB之间以及IOB之间连接起来,构成特定功能的电路。第二章2、子程序调用与元件例化有何区别,函数与过程在具体使用上有何不同。答:从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL综合器为子程序的每一次调用都生成一个电路逻辑块。所不同的是,元件的例化将产生一个新的设计层次,而子程序调用只对应于当前层次的一部分。函数和过程的不同在于:函数只有一个输出,只能通过函数体内的RETURN语句来实现,函数体内不能有信号赋值语句;而过程却可以有不止一个输出,而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的RETURN语句没有用处,因此不少过程都将其省略了。函数的调用只能通过表达式来实现,过程的调用则是通过过程调用语句来实现的。6.简述函数与过程的异同点,过程与进程的异同点。答:子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。函数和过程都是串行的。它们的区别在于:过程的调用可以通过其界面获得多个返回值,而函数只能返回一个值;在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数;过程一般被看作一种语句结构,而函数通常是表达式的一部分;过程可以单独存在,而函数通常作为语句的一部分调用。过程和进程的相同点:只能使用顺序语句,可以单独存在。不同点:过程不能像进程那样可以从本结构体的其他块或进程结构中直接读取信号值或者信号赋值。7、判断下列VHDL标识符是否合法,如果不合法则指出原因:16#0FA#,10#12F#,8#789#,8#356#,2#0101010#,74HC245,\74HC574\,CLR/RESET,\IN4/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中,对象是指用来保持数据的一些客体单元。信号跟变量是VHDL中的重要客体。信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成模块。在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。变量主要是对暂时数据进行局部存储,它是一个局部量。信号与变量在使用前都必需先声明后使用,否则会产生编译错误。信号可以architecture、package、entitiy中声明,是全局量可以在全局使用。变量可以process、function、procedure中声明,也只能在process、function、procedur中使用不是全局变量。他们之间的主要区别有:信号赋值至少要有δ延时;而变量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。12、判断下面3例VHDL程序中是否有错误,若有错误则指出错误原因:程序1SignalA,EN:std_logic;Process(A,EN)VariableB:std_logic;Begin程序1:将“B=A”改成“B:=A”ifEN=‘1’thenB=A;endif;endprocess;程序2Architectureoneofsampleisvariablea,b,c:integer;beginc=a+b;end;程序2:将“c=a+b”改成“c:=a+b”程序3libraryieee;useieee.std_logic_1164.all;entitymux21isport(a,b:instd_logic;sel:instd_logic;c:outstd_logic;);①endsam2;②architectureoneofmux21isbegin③ifsel='0'thenc:=a;elsec:=b;endif;④⑤endtwo;⑥程序3:①将“;)”改成“)”②将“sam2”改成“entitymux21”③增加“process(a,b,sel)begin④ifsel='0'thenc:=a;elsec:=b;endif;--应改成“ifsel='0'thenc=a;elsec=b;endif;”⑤增加“endprocess;”⑥将“two”改成“architectureone”13、分别用CASE语句和IF设计3-8译码器。(课本P181)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYthreeISPORT(s0,s1,s2,a,b,c:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDthree;ARCHITECTUREBEHAVOFthreeISSIGNALABC:STD_LOGIC_VECTOR(2DOWNTO0);BEGINABC=c&b&a;PROCESS(ABC,S0,S1,S2)BEGINIF(S0='1'ANDS1='0'ANDS2='0')THENCASEABCisWHEN000=Y=11111110;WHEN001=Y=11111101;WHEN010=Y=11111011;WHEN011=Y=11110111;WHEN100=Y=11101111;WHEN101=Y=11011111;WHEN110=Y=10111111;WHEN111=Y=01111111;WHENOTHERS=Y=;ENDCASE;ELSEY=11111111;ENDIF;ENDPROCESS;ENDBEHAV;IF和case语句课本P64CASE:libraryieee;useieee.std_logic_1164.all;entitysssisport(a:instd_logic_vector(2downto0);cout:outstd_logic_vector(7downto0));end;architectureoneofsssisbeginprocess(a)begincaseaiswhen000=cout=11111110;when001=cout=11111101;when010=cout=11111011;when011=cout=11110111;when100=cout=11101111;when101=cout=11011111;when110=cout=10111111;when111=cout=01111111;whenothers=NULL;endcase;endprocess;end;IF:libraryieee;useieee.std_logic_1164.all;entitysssisport(a:instd_logic_vector(2downto0);cout:outstd_logic_vector(7downto0));end;architectureoneofsssisbeginprocess(a)beginifa=000thencout=11111110;elsifa=001thencout=11111101;elsifa=010thencout=11111011;elsifa=011thencout=11110111;elsifa=100thencout=11101111;elsifa=101thencout=11011111;elsifa=110thencout=10111111;elsifa=111thencout=01111111;endif;endprocess;end;8-3优先编码器libraryIEEE;……;entityencoder83isport(ind:instd_logic_vector(7downto0);outd:outstd_logic_vector(2downto0));end;architecturebehaveofencoder83isbeginprocess(ind)beginifind(7)=‘1'thenoutd=111;elsifind(6)=‘1'thenoutd=110;elsifind(5)=‘1'thenoutd=101;elsifind(4)=‘1'thenoutd=100;elsifind(3)=‘1'thenoutd=01
本文标题:习题课
链接地址:https://www.777doc.com/doc-6202131 .html