EDA技术课后参考答案陈炳权曾庆立_第1页
EDA技术课后参考答案陈炳权曾庆立_第2页
EDA技术课后参考答案陈炳权曾庆立_第3页
EDA技术课后参考答案陈炳权曾庆立_第4页
EDA技术课后参考答案陈炳权曾庆立_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页答案由个人做出,可能有不全或错误之处,欢迎大家批评指正。第一章1.EDA的英文全称及其中文含义是什么?答:EDA是ElectronicDesignAutomation,其中文含义是“电子设计自动化”。2.什么叫EDA技术?简述EDA技术的发展历程。答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。3.简述用EDA技术设计电路的设计流程。答EDA设计流程包括:设计准备、设计输入、设计处理、设计校验、器件编程、器件测试和设计验证。4.什么叫”综合”和”网表文件”?答:(A)在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。(1)从自然语言转换到VHDL语言算法表示,即自然语言综合。(2)从算法表示转换到寄存器传输级(RegisterTransportLevel,RTL),即从行为域到结构域的综合,即行为综合。(3)从RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合。(4)从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。综合在电子设计自动化中处于核心地位。(B)网表文件是描述电路的连接关系的文件,一般以文本文件的形式存在。英文为netlistfile格式有cdl,spice,aucdl...等5.从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答:EDA技术的学习主要应掌握4个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统。6.目前流行的主流厂家的EDA的软件工具有哪些?比较这些EDA软件的差异。答:(1)目前比较流行的主流厂家的EDA的软件工具有Altera的MAX+plusII、QuartusII、Lattice的ispEXPERT、Xilinx的FoundationSeries。(2)Max+plusII是A1tera公司推出的一个使用非常广泛的EDA软件工具,它支持原理图、VHDL和Verilog语言的文本文件,以及波形图及EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计。它具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在适配之后,Max+plusII生成供时序仿真用的Edif、VHDL和Verilog3种不同格式的网表文件。Max+plusII界面友好,使用便捷,被誉为业界最易学易用的EDA软件,并支持主流的第三方EDA工具,支持除APEx20K系列之外的所有A1tera公司的FPGA/CPLD大规模逻辑器件。QuartusII是A1tera公司新近推出的EDA软件工具,其设计工具完全支持VHDL和Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。第三方的综合工具,如LeonardoSpectrum、Synplifypro和FPGACompilerII有着更好的综合效果,QuartusII可以直接调用这些第三方工具,因此通常建议使用这些工具来完成VHDL/Verilog源程序的综合。同样,QuartusII具备仿真功能,也支持第三方的仿真工具,如Modelsim。此外,QuartusII为A1teraDSP开发包进行系统模型设计提供了集成综合环境,它及MATLAB和DSPBuilder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。QuartusII还可及SOPCBuilder结合,实现SOPC系统开发。ispExPERT是Lattice公司的主要集成环境。通过它可以进行VHDL、Verilog及ABEL语言的设计输入、综合、适配、仿真和在系统下载。ispExPERT是目前流行的EDA软件中最容易掌握的设计工具之一,它界面友好、操作方便、功能强大,并及第三方EDA工具兼容良好。FoundationSeries是Xilinx公司较成熟的集成开发EDA工具。它采用自动化的、完整的集成设计环境。Foundation项目管理器集成Xilinx实现工具,并包含了强大的书馆SynopsysFPGAExpress综合系统,是业界最强大的EDA设计工具之一。7.简要阐述EDA技术的发展趋势和应用领域答:从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。EDA的范畴包括:机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。第二章VHDL硬件描述语言1、简述实体(ENTITY)、结构体(ARCHITECTURE)及原理图的关系。答:结构来说实体就是原理图的外观,结构体中的具体程序就是原理图中的具体实现。2、子程序调用及元件例化有何区别,函数及过程在具体使用上有何不同。答:从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL综合器为子程序的每一次调用都生成一个电路逻辑块。所不同的是,元件的例化将产生一个新的设计层次,而子程序调用只对应于当前层次的一部分。函数和过程的不同在于:函数只有一个输出,只能通过函数体内的RETURN语句来实现,函数体内不能有信号赋值语句;而过程却可以有不止一个输出,而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的RETURN语句没有用处,因此不少过程都将其省略了。函数的调用只能通过表达式来实现,过程的调用则是通过过程调用语句来实现的。3、什么是重载函数?重载算符有何用处?如何调用重载算符函数。答:(1)什么是重载函数?根据操作对象变换处理功能。(2)重载算符有何用处?用于两个不同类型的操作数据自动转换成同种数据类型,并进行运算处理。(3)如何调用重载算符函数?采用隐式方式调用,无需事先声明。4、在VHDL程序中配置有何用处?答:配置可以把特定的结构体关联到一个确定的实体,正如配置一词本身的含义一样。配置语句就是用来为较大的系统设计提供管理和工程组织的。配置也是VHDL设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。总之用于设置VHDL的工作参数以及工作模式。配置用来选择实体的多个结构体的哪一个被使用。5.嵌套BLOCK的可视性规则是什么?以嵌套BLOCK的语句方式设计三个并列的3输入或门。答:BLOCK是VHD中具有的一种划分机制,这种机制允许设计者合理地将一个模块分为数个区域,在每个块都能对其局部信号、数据类型和常量加以描述和定义。任何能在结构体的说明部分进行说明的对象都能在BLOCK说明部分中进行说明。相关参考代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYtriple_inputISPORT(A:INSTD_LOGIC;B:INSTD_LOGIC;C:INSTD_LOGIC;OUTA:OUTSTD_LOGICENDtriple_input;ARCHITECTUREADOOFtriple_inputISBEGINOUTA<=AANDBANDC;ENDADO;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中使用不是全局变量。他们之间的主要区别有:信号赋值至少要有δ延时;而变量赋值没有。信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。进程对信号敏感而不对变量敏感。信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。9.运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。下面给出一个新的数据类型AGE,并且下面的转换函数已经实现:functionCONV_INTEGER(ARG:AGE)returnINTEGER;请仿照本章中的例子,利用此函数编写一个“+”运算符重载函数,支持下面的运算:SIGNAL a,c:AGE;c<=a+20;答:function“+”(L:AGE,R:integer)returnAGEisBeginreturnCONV_AGE(L+CONV_INTEGER(R));End;10、设计16位比较器,比较器的输入是2个待比较的16位数:A=[A15…A0],B=[B15…B0],输出是D、E、F。当A=B时,D=1;当A>B时,E=1;当A<B时,F=1(参考方法:用常规的比较器设计方法,即直接利用关系操作符进行编程设计,或者利用减法器来完成,通过减法运算后的符号和结果来判别两个被比较值的大小)。答:略library

ieee;

use

ieee.std_logic_1164.all;

use

ieee.std_logic_unsigned.all;

entity

compare

is

port(a:

in

std_logic_vector(16

downto

0);

b:

in

std_logic_vector(16

downto

0);

X,Y,Z:

out

std_logic);

end

compare;

architecture

behave

of

compare

isbegin

process(a,b)

begin

if

(a

>

b)

then

X

<='1';

Y

<='0';

Z

<='0';

elsif(a

<

b)

then

X

<='0';

Y

<='1';

Z

<='0';

ELSE

X

<='0';

Y

<='0';

Z

<='1';

end

if;

end

process;

end

behave;11.在VHDL编程中,为什么应尽可能使用子类型对类型的取值范围给予限定。答:由于子类型及其基本数据类型属同一数据类型,因此属于子类型的和属于基本数据类型的数据对象间的赋值和被赋值可以直接进行,不必进行数据类型的转换。利用子类型定义数据对象的好处是,除了使程序提高可读性和易处理外,其实质性的好处还在于有利于提高综合的优化效率,这是因为综合器可以根据子类型所设的约束范围,有效地推知参及综合的寄存器的最合适的数目。12、判断下面3例VHDL程序中是否有错误,若有错误则指出错误原因:程序1SignalA,EN:std_logic;Process(A,EN)VariableB:std_logic;BeginifEN=‘1’thenB<=A;endif;endprocess;程序2Architectureoneofsampleisvariablea,b,c:integer;beginc<=a+b;end;程序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;⑥答:程序1:将“B<=A”改成“B:=A”程序2:-将“c<=a+b”改成“c:=a+b”程序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译码器。答:CASE语句:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder38ISPORT(EN:INSTD_LOGIC;A0,A1,A2:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYdecoder38;ARCHITECTURbhvOFdecoder38ISSIGNALS:STD_LOGIC_VECTOR(2DOWNTO0);BEGINS<=A2&A1&A0;PROCESS(EN,S)BEGINIF(EN=’1’)THENCASESISWHEN“000”=>Y<=””;WHEN“001”=>Y<=””;WHEN“010”=>Y<=””;WHEN“011”=>Y<=””;WHEN“100”=>Y<=””;WHEN“101”=>Y<=””;WHEN“110”=>Y<=””;WHEN“111”=>Y<=””;WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;IF语句:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder38ISPORT(EN:INSTD_LOGIC;A0,A1,A2:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYdecoder38;ARCHITECTURbhvOFdecoder38ISBEGINPROCESS(EN,A2,A1,A0)BEGINIF(EN=’1’)THENIF(A2=’0’)THENIF(A1=’0’)THENIF(A0=’0’)THENY<=’’;ELSEY<=’’;ELSIF(A1=’1’)THENIF(A0=’0’)THENY<=’’;ELSEY<=’’;ENDIF;ENDIF;ELSIF(A2=’1’)THENIF(A1=’0’)THENIF(A0=’0’)THENY<=’’;ELSEY<=’’;ENDIF;ELSIF(A1=’1’)THENIF(A0=’0’)THENY<=’’;ELSEY<=’’;ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREbhv;libraryieee;useieee.std_logic_1164.all;entitysssisport(a:instd_logic_vector(2downto0);cout:outstd_logic_vector(7downto0));end;architectureoneofsssisbeginprocess(a)beginifa="000"thencout<="11111110";elsifa="001"thencout<="11111101";elsifa="010"thencout<="11111011";elsifa="011"thencout<="11110111";elsifa="100"thencout<="11101111";elsifa="101"thencout<="11011111";elsifa="110"thencout<="10111111";elsifa="111"thencout<="01111111";endif;endprocess;end;14、若在进程中加入WAIT语句,应注意哪几个方面的问题。答:应注意以下问题:①已列出敏感信号的进程中不能使用任何形式的WAIT语句;②一般情况下,只有WAITUNTIL格式的等待语句可以被综合器所接受,其余语句格式只能在VHDL仿真器中使用;③在使用WAITON语句的进程中,敏感信号量应写在进程中的WAITON语句后面;④在不使用WAITON语句的进程中,敏感信号量应在开头的关键词PROCESS后面的敏感信号表中列出。15、图2.15中的f_adder是一位全加器,cin是输入进位,cout是输出进位。试给出此电路的VHDL描述。图2.15习题15图答:libraryieee;useieee.std_logic_1164.all;entityffisport(x,y,clock:instd_logic;sum:outstd_logic);end;architectureoneofffiscomponentf_adderport(a,b,ci:instd_logic;su,co:outstd_logic);endcomponent;componentdfport(d,cl:instd_logic;q1:outstd_logic);endcomponent;signalcout,tmp:std_logic;beginu1:f_adderportmap(a=>x,b=>y,ci=>tmp,su=>sum,co=>cout);u2:dfportmap(d=>cout,cl=>clock,q1=>tmp);endarchitectureone;--底层文件1:D触发器libraryieee;useieee.std_logic_1164.all;entitydfisport(d,cl:instd_logic;q1:outstd_logic);end;architecturetwoofdfissignalqq:std_logic;beginprocess(cl,qq)beginifcl'eventandcl='1'thenqq<=d;endif;endprocess;q1<=qq;endarchitecturetwo;--底层文件2:全加器libraryieee;useieee.std_logic_1164.all;entityf_adderisport(a,b,ci:instd_logic;su,co:outstd_logic);end;architecturethreeoff_adderiscomponenth_adderport(a1,b1:instd_logic;so,cou:outstd_logic);endcomponent;componentor2aport(a1,b1:instd_logic;c:outstd_logic);endcomponent;signald,e,f:std_logic;beginu1:h_adderportmap(a1=>a,b1=>b,cou=>d,so=>e);u2:h_adderportmap(a1=>e,b1=>ci,cou=>f,so=>su);u3:or2aportmap(a1=>d,b1=>f,c=>co);endarchitecturethree;--底层文件2-1:半加器libraryieee;useieee.std_logic_1164.all;entityh_adderisport(a1,b1:instd_logic;so,cou:outstd_logic);end;architecturefourofh_adderisbeginso<=not(a1xor(notb1));cou<=a1andb1;endarchitecturefour;--底层文件2-2:或门libraryieee;useieee.std_logic_1164.all;entityor2aisport(a1,b1:instd_logic;c:outstd_logic);end;architecturefiveofor2aisbeginc<=a1orb1;endarchitecturefive;16.设计5位可变模数计数器。设计要求:令输入信号M1和M0控制计数模,即令(M1,M0)=(0,0)时为模19加法计数器,(M1,M0)=(0,1)时为模4计数器,(M1,M0)=(1,0)为模10加法计数器,(M1,M0)=(1,1)时为模6计数器。答:Entitymod_calisPort(M1,M0:inbit;Count:outstd_logic_vector(4downto0);Clk:instd_logic);Endentity;Architecturebehavofmod_calisSignalcount1:std_logic_vector(4downto0);BeginProcess(clk,M1,M0)Variableselisbit_vector(1downto0);BeginSel:=M1&M0;Ifclk’eventandclk=’1’thenCount1<=Count1+1;CaseselisWhen“00”=>ifCount1=”10011”thenCount1<=”00000”;Endif;When“01”=>ifCount1=”00100”thenCount1<=”00000”;Endif;When“10”=>ifCount1=”01010”thenCount1<=”00000”;Endif;When“11”=>ifCount1=”00110”thenCount1<=”00000”;Endif;Endcase;Endif;Endprocess;Count<=count1;Endbehav;17.什么是VHDL结构体的行为描述风格,叙述行为描述的优缺点。答:如果VHDL的结构体只描述了所希望电路的功能或者说电路行为,而没有直接指明或涉及实现这些行为的硬件结构,包括硬件特性、连线方式、逻辑行为方式,则称为行为风格的描述或行为描述。优点:抽象程度最高,最能体现VHDL描述高层次结构和系统的能力。缺点:只表示输入及输出间转换的行为,它不包含任何结构信息。18.结构化描述及调用子程序有何异同点,VHDL程序中是如何进行结构化描述的?结构化描述需要哪些语句?答:略19.试举一例,在一个结构体中同时含有3种不同描述风格的VHDL语句结构。答:略20.以数据流的方式设计一个2位比较器,再以结构描述方式将已设计好的比较器连接起来构成一个8位比较器答:略21.采用VHDL进行数字系统设计有哪些特点?答:HDL系统设计的基本点:

(1)及其他硬件描述语言相比,VHDL具有以下特点:

(2)功能强大、设计灵活。

(3)强大的系统硬件描述能力。

(4)易于共享和复用。22.VHDL的基本程序结构由几部分组成?各部分的功能是什么?答:由5个部分组成,包含实体、结构体、配置、程序包和库。实体作为一个设计实体的组成部分,其功能是对这个设计实体及外部电路进行接口描述。结构体(ARCHITECTURE)是设计实体的一个重要部分,结构体将具体实现一个实体。在利用VHDL进行工程设计中,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个或几个库中以供调用,这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体(程序包)或预先设计好的各种设计实体(元件库程序包)。因此可以把库看成是一种用来存储预先完成的程序包、数据集合体和元件的仓库。已在设计实体中定义的数据类型、子程序或数据对象对于其它设计实体是不可用的,或者说是不可见的。为了使已定义的常数、数据类型、元件调用说明以及子程序能被更多的VHDL设计实体方便地访问和共享,可以将它们收集在一个VHDL程序包中, 多个程序包可以并入一个VHDL库中,使之适用于更一般的访问和调用范围,这一点对于大系统开发 多个或多组开发人员同步并行工作显得尤为重要。配置可以把特定的结构体关联到一个确定的实体,正如配置一词本身的含义一样。配置也是VHDL设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。23.说明端口模式BUFFER及INOUT有何异同点?答:INOUT为输入输出双向端口,即从端口内部看,可以对端口进行赋值,即输出数据。也可以从此端口读入数据,即输入。

BUFFER为缓冲端口,功能及INOUT类似,区别在于当需要读入数据时,只允许内部回读内部产生的输出信号,即反馈。举个例子,设计一个计数器的时候可以将输出的计数信号定义为BUFFER,这样回读输出信号可以做下一计数值的初始值。。24.用VHD设计一个实现三输入的多数表决器。答:libraryieee;useieee.std_logic_1164.all;entitybjq3isport(a,b,c:instd_logic;y:outstd_logic);end;architecturexofbjq3issignalty:std_logic_vector(2downto0);beginty<=a&b&c;withtyselecty<='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'whenothers;end;25.用PROCESS语句描述带同步复位的JK触发器。答:libraryieee;useieee.std_logic_1164.all;entityjk_ffisport(clk,reset,j,k:instd_logic;q,qb:outstd_logic);end;architecturebehaveofjk_ffissignaltq,tqb:std_logic;beginq<=tq;qb<=tqb;process(clk,reset)beginif(clk'eventandclk='1')thenif(reset='0')thentq<='0';tqb<='1';elsif((j='0')and(k='0'))thentq<=tq;tqb<=tqb;elsif((j='0')and(k='1'))thentq<='0';tqb<='1';elsif((j='1')and(k='0'))thentq<='1';tqb<='0';elsif((j='1')and(k='1'))thentq<=nottq;tqb<=nottqb;endif;endif;endprocess;end;26.用并行信号赋值语句设计8选1数据选择器。答:libraryieee;useieee.std_logic_1164.all;entityxzq8isport(x:instd_logic_vector(7downto0);sel:instd_logic_vector(2downto0);f:outstd_logic);end;architectureaofxzq8isbeginf<=x(0)whensel="000"elsex(1)whensel="001"elsex(2)whensel="010"elsex(3)whensel="011"elsex(4)whensel="100"elsex(5)whensel="101"elsex(6)whensel="110"elsex(7)whensel="111"else'X';end;27.用VHDL设计一个三态输出的双4选1数据选择器。其地址信号共用,且各有个低电平有效的使能端答:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDUAL_MUX_41ISPORT(A,B,C,D:INSTD_LOGIC;ENA_N,ENB_N:INSTD_LOGIC;S:INSTD_LOGIC_VECTOR(1DOWNTO0);OUTA,OUTB:OUTSTD_LOGICENDARCHITECTUREAOFDUAL_MUX_41ISSIGNALP,Q:STD_LOGIC_VECTOR(1DOWNTO0);BEGINP<=ENA_N&S;Q<=ENB_N&S;WITHPSELECTOUTA<=AWHEN“000”,BWHEN”001”,CWHEN”010”,DWHEN”011”,‘Z’WHENOTHERS;WITHQSELECTOUTB<=AWHEN”000”,BWHEN”001”,CWHEN”010”,DWHEN”011”,‘Z’WHENOTHERS;ENDA;28.用VHDL设计实现由两输入端及非门构成的1位全加器。答:略29.用VHDL设计实现一百进制的计数器。答:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcounterISGENERIC(count_value:INTEGER:=9);PORT(clk,clr,en:INSTD_LOGIC; co:OUTSTD_LOGIC;count:OUTINTEGERRANGE0TOcount_value);ENDcounter;ARCHITECTUREaOFcounterISSIGNALcnt:INTEGERRANGE0TOcount_value;BEGINPROCESS(clk,clr)BEGINIFclr='1'THENcnt<=0;ELSIF(clk'EVENTANDclk='1')THENIFen='1'THENIFcnt=count_valueTHENcnt<=0;ELSEcnt<=cnt+1;ENDIF;ENDIF;ENDIF;ENDPROCESS;co<=’1’WHENcnt=count_valueELSE‘0’;count<=cnt;ENDa;

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitycounter1isport( clk,clr,en:instd_logic;co:outstd_logic;count1:outintegerrange0to9;count2:outintegerrange0to9);endcounter1;architecturertlofcounter1issignalen1:std_logic;componentcounterisgeneric(count_value:integer);port(clk,clr,en:instd_logic;co:outstd_logic;count:outintegerrange0tocount_value);endcomponent;beginaa:countergenericmap(count_value=>9)portmap(clk,clr,en,en1,count1);bb:countergenericmap(count_value=>9)portmap(clk=>clk,clr=>clr,en=>en1,co=>co,count=>count2);endrtl;30.比较CASE语句及WITH_SELECT语句,叙述它们的异同点。答:相同点:CASE语句中各子句的条件不能有重叠,必须包容所有的条件;WITH_SECLECT语句也不允许选择值有重叠现象,也不允许选择值涵盖不全的情况。另外,两者对子句各选择值的测试都具有同步性,都依赖于敏感信号的变化。不同点:CASE语句只能在进程中使用,至少包含一个条件语句,可以有多个赋值目标;WITH_SECLECT语句根据满足的条件,对信号进行赋值,其赋值目标只有一个,且必须是信号。31、将以下程序段转换为WHEN_ELSE语句:PROCESS(a,b,c,d)BEGINIFa='0'ANDb='1'THEN next1<="1101"ELSIF a='0'THEN next1<=dELSIF b='1'THEN next1<=cELSENext1<="1011";ENDIF;ENDPROCESS;答:原程序转换如下:ARCHITECTUREoneOFmuxISBEGINPROCESS(a,b,c,d)BEGINNEXT1<="110"1WHENa=’0’ANDb=’1’ELSEdWHENa=’0’ELSEcWHENb=’1’ELSE"1011";ENDone;ENDPROCESS;32.以下为一时序逻辑模块的VHDL结构体描述,请找出其中的错误:ARCHITECTUREoneOF com1BEGINVARIABLEa,b,c,clock:STD_LOGIC;pro1:PROCESSBEGINIF NOT(clock'EVENTANDclock='1')THENx<=axorborcENDIF;ENDPROCESS;END;答:33.VHDL程序设计中用WITH_SELECT_WHEN语句描述4个16位至1个16位输出的4选1多路选择器。答:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxIS PORT( dina:INSTD_LOGIC_VECTOR(0to15); dinb:INSTD_LOGIC_VECTOR(0to15); dinc:INSTD_LOGIC_VECTOR(0to15); dind:INSTD_LOGIC_VECTOR(0to15); sel:INSTD_LOGIC_VECTOR(0to1); dout:OUTSTD_LOGIC_VECTOR(0to15));ENDmux;ARCHITECTURErtlOFmuxISBEGIN withselselectdout<=dinaWHEN"00", dinbWHEN"01", dincWHEN"10", dindWHEN"11","ZZZZZZZZZZZZZZZZ"whenothers;ENDrtl;34、哪些情况下需要用到程序包STD_LOGIC_UNSIGNED,试举一例。答:①调用数据类型变换函数或重载运算符函数时;②定义UNSIGNED类型的数据时。举例如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;IFTEMP=”11111111”THENTEMP:=”00000000”;ELSETEMP:=TEMP+16;ENDIF;···35.为什么说一条并行赋值语句可以等效为一个进程,如果是这样的话,怎样实现敏感信号的检测。答:因为信号赋值语句的共同点是赋值目标必须都是信号,所以赋值语句及其它并行语句一样,在结构体内的执行是同时发生的,及它们的书写顺序没有关系,所以每一信号赋值语句都相当于一条缩写的进程语句。由于这条语句的所有输入信号都被隐性地列入此缩写进程的敏感信号表中,故任何信号的变化都将相关并行语句的赋值操作,这样就实现了敏感信号的检测。36.给出1位全减器的VHDL描述,要求:(1)类似于1位全加器的设计方法,首先设计1位半减器,然后用例化语句将它们连接起来,图2.20中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in借位输入;(2)直接根据全减器的真值表2.12进行设计;(3)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句和生成语句来完成此项设计(减法运算是x–y-sun_in=diffr)。图2.2036题图表2.12全减器真值表答:(1)先设计一个半减器Xy00011011diff0110S_out0100Libraryieee;use ieee.std_logic_1164.all;entityh_suberisport(x,y:instd_logic;diff,s_out:outstd_logicendentity;architecturehdlarchofh_suberisbeginprocess(x,y)begindiff<=xxory;s_out<=(notx)andy;endprocess;endhdlarch;1位全减器的VHDL设计文件:suber.vhdLIBRARYieee;USEieee.std_logic_1164.all;ENTITYsuberISport(x,y:INSTD_LOGIC;sub_in:INSTD_LOGIC;diffr:OUTSTD_LOGIC;sub_out:OUTSTD_LOGICENDsuber;ARCHITECTUREscharchOFsuberIScomponenth_suberPORT(x:INSTD_LOGIC;y:INSTD_LOGIC;diff:OUTSTD_LOGIC;s_out:OUTSTD_LOGICendcomponent;signalt0,t1,t2:STD_LOGIC;BEGINu1:h_suberPORTMAP(x=>x,y=>y,diff=>t0,s_out=>t1);u2:h_suberPORTMAP(x=>t0,y=>sub_in,diff=>diffr,s_out=>t2);sub_out<=t1ORt2;END;(2)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYf_subberISPORT(x,y,sub_in:INSTD_LOGIC;diffr,sub_out:OUTSTD_LOGIC);END;ARCHITECTUREONEOFf_subberISBEGINdiffr<=(xnory)norsub_in;sub_out<=((notx)andy)or(sub_inand(not(xnory)));ENDARCHITECTUREONE;(3)8位减法器LIBRARYieee;USEieee.std_logic_1164.all;ENTITYsub8ISport(a:INstd_logic_vector(7downto0);b:INstd_logic_vector(7downto0);sin:INSTD_LOGIC;sout:OUTSTD_LOGIC;c:OUTstd_logic_vector(7downto0)ENDsub8;ARCHITECTUREhdlarchOFsub8IScomponentsuberPORT(x:INSTD_LOGIC;y:INSTD_LOGIC;sub_in:INSTD_LOGIC;diffr:OUTSTD_LOGIC;sub_out:OUTSTD_LOGIC);endcomponent;signalstmp:std_logic_vector(8downto0);BEGINstmp(<=stmp(8);gensub:foriin0to7generateu1:suberPORTy=>b(i),MAP(x=>a(i),sub_in=>stmp(i),diffr=>c(i),sub_out=>stmp(i+1));endgenerate;end;0)<=sin;sout37图2.20有3张由D触发器构成的电路图,请分别给出它们的VHDL描述。--底层文件1:2选1选择器libraryieee;useieee.std_logic_1164.all;entitymux21aisport(a,b,s:inbit;z:outbit);endentitymux21a;architectureoneofmux21aisbeginz<=awhens='0'elseb;endarchitectureone;--底层文件2:D触发器libraryieee;useieee.std_logic_1164.all;entitydff1isport(clk,d:instd_logic;q:outstd_logic);end;architecturebhvofdff1issignalq1:std_logic;beginprocess(clk,q1)beginifclk'eventandclk='1'thenq1<=d;endif;endprocess;q<=q1;endbhv;(a)--顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfffISPORT(a,b,s:INSTD_LOGIC;out1:OUTSTD_LOGIC);END;ARCHITECTUREONEOFfffISCOMPONENTmux21aPORT(a,b,s:INSTD_LOGIC;z:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTdff1PORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALtmp1,tmp2:STD_LOGIC;BEGINu1:mux21aPORTMAP(a=>a,b=>b,s=>s,z=>tmp1);u2:dff1PORTMAP(clk=>tmp1,d=>tmp2,q=>tmp2);out1<=tmp2;ENDARCHITECTUREONE;(b)--顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfffISPORT(a,b,s,clk:INSTD_LOGIC;out2:OUTSTD_LOGIC);END;ARCHITECTUREONEOFfffISCOMPONENTmux21aPORT(a,b,s:INSTD_LOGIC;z:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTdff1PORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALtmp1:STD_LOGIC;BEGINu1:mux21aPORTMAP(a=>a,b=>b,s=>s,z=>tmp1);u2:dff1PORTMAP(clk=>clk,d=>tmp1,q=>out2);ENDARCHITECTUREONE;(c)--顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfffISPORT(a,b,d:INSTD_LOGIC;out2:OUTSTD_LOGIC);END;ARCHITECTUREONEOFfffISCOMPONENTmux21aPORT(a,b,s:INSTD_LOGIC;z:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTdff1PORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALtmp1,tmp2:STD_LOGIC;BEGINu1:mux21aPORTMAP(a=>a,b=>b,s=>tmp2,z=>tmp1);u2:dff1PORTMAP(clk=>tmp1,d=>d,q=>tmp2);out2<=tmp2;ENDARCHITECTUREONE;第三章CPLD及FPGA的结构及应用3.1简述PLD的基本类型。答:对于PLD产品,一般分为:基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的中小规模PLD,以及基于查找表(Look-Uptable)技术,SRAM工艺的大规模PLD/FPGA。EEPROM工艺的PLD密度小,多用于5,000门以下的小规模设计,适合做复杂的组合逻辑,如译码。SRAM工艺的PLD(FPGA),密度高,触发器多,多用于10,000门以上的大规模设计,适合做复杂的时序逻辑,如数字信号处理和各种算法。3.2Altera公司、Xilinx公司、Lattice公司有哪些器件系列?这些器件各有什么性能指标?并阐述主要性能指标的含义。答:Altera公司、Xilinx公司、Lattice公司有CPLD器件系列、FPGA系列、ispLSI和pLSI逻辑器件系列。FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。3.3CPLD的英文全称是什么?CPLD的结构主要由哪几部分组成?每一部分的作用如何?答:CPLD的英文全称是ComplexProgrammab1eLogicDevice。CPLD的结构主要由宏单元、可编程连线和I/O控制块三部分构成,宏单元是基本结构,可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制。3.4比较Altera公司的FLEX10K/8000系列。答:系列代表产品配置单元逻辑单元(FF)最大用户I/O速度等级/nsRAM/位FLEX10KEPF10K10SRAM4992(5392)406424576FLEX8000EPF8050SRAM4032(4656)36033.5概述FPGA器件的优点及主要应用场合。答:FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。DL程序,交付原供产商进行相同封装形式的掩模设计。(3)硬件仿真。由于FPGA是SRAM结构,且能提对于大规模的逻辑设计、ASIC设计或单片系统设计,则多采用FPGA。FPGA的使用途径主要有4个方面:(1)直接使用,即如CPLD那样直接用于产品的电路系统板上。(2)间接使用,其方法是首先利用FPGA完成系统整机的设计,包括最后的电路板的定型,然后将充分检证的成功的设计软件,如VH供庞大的逻辑资源,因而适用于作各种逻辑设计的仿真器件。从这个意义上讲,FPGA本身即为开发系统的一部分。FPGA器件能用作各种电路系统中不同规模逻辑芯片功能的实用性仿真,一旦仿真通过,就能为系统配以相适应的逻辑器件。(4)专用集成电路ASIC设计仿真。对产品产量特别大,需要专用的集成电路,或是单片系统的设计,如CPU及各种单片机的设计,除了使用功能强大的EDA软件进行设计和仿真外,有时还有必要使用FPGA对设计进行硬件仿真测试,以便最后确认整个设计的可行性。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之间连接起来,构成特定功能的电路。3.7什么叫FPGA的配置模式?FPGA器件有哪几种配置模式?每种配置模式有什么特点?FPGA的配置流程如何?答:FPGA的配置模式是指FPGA用来完成设计时的逻辑配置(是指用户设计输入并编译后的数据配置文件,将其装入FPGA芯片内部的可配置存储器的过程,简称下载,只有经过逻辑配置后,FPGA才能实现用户所需要的逻辑功能)和外部连接方式。FPGA器件有5种配置模式,分别是主动串行配置模式,主动并行配置模式,外设配置模式,从动串行配置模式,菊花链配置模式。主动串行配置模式特点:选择主动串行模式时,需要附加一个外部串行存储器EPROM或PROM,事先将配置数据写入外部存储器。每当电源接通后,FPGA将自动地从外部串行PROM或EPROM中读取串行配置数据。主动并行配置模式特点:一般用EPROM做外部存储器,事先将配置数据写入EPROM芯片内,每当电源接通后FPGA将自动地从外部串行EPROM中读取配置数据。主动配置模式使用FPGA内部的一个振荡器产生CCLK来驱动从属器件,并为包含配置数据的外部EPROM生成地址及定时信号。外设配置模式特点:FGPA器件将作为一个微处理器的外设,配置数据由微处理器提供,在微处理器的写脉冲和片选信号的控制下对FPGA进行数据配置。从动串行配置模式特点:该模式为PC机或单片机系统加载FPGA配置数据提供了最简单的接口。菊花链配置模式特点:一种多芯片的配置信号连接方式。任何模式配置的LCA都支持菊花链。以主动模式配置的LCA可作为数据源,并可控制从属器件。FPGA的配置流程是:在FPGA的配置之前,首先要借助于FPGA开发系统,按某种文件格式要求描述设计系统,编译仿真通过后,将描述文件转换成FPGA芯片的配置数据文件。选择一种FPGA的配置模式,将配置数据装载到FPGA芯片内部的可配置存储器,FPGA芯片才会成为满足要求的芯片系统。FPGA的配置流程如图4.16所示,包括芯片初始化、芯片配置和启动等几个过程第四章1.简述利用QuartusII和MAX+plusII开发工具进行数字系统设计的一般步骤。答:QuartusII步骤:①创建工程和编辑设计文件②编译③设计ROM初始化数据文件④仿真⑤测试⑥配置器件。MAX+plusII步骤:①输入项目文件名()②输入源文件(图形、VHDL、AHDL、Verlog和波形输入方式)(Max+plusⅡ/graphicEditor;Max+plusⅡ/TextEditor;Max+plusⅡ/WaveformEditor)③指定CPLD型号(Assign/Device)④设置管脚、下载方式和逻辑综合的方式(Assign/GlobalProjectDeviceOption,Assign/GlobalLogicSynthesis)⑤保存并检查源文件(&Check)⑥指定管脚(Max+plusⅡ/FloorplanEditor)⑦保存和编译源文件(&Compile)⑧生成波形文件(Max+plusⅡ/WaveformEditor)⑨仿真(Max+plusⅡ/Simulator)⑩下载配置(Max+plusⅡ/Programmer)2.在QuartusII和MAX+plusII开发工具中,从利用VHDL完成电路设计到硬件上进行实现和测试,需要经过哪些处理?答:3.怎样编辑输入原理图、文本、波形?答:在QuartusII平台上使用图形编辑输入法设计电路的操作流程包括编辑、编译、仿真和编程下载等基本过程。(1)编辑设计文件。①创建工程项目(Project)②进入图形编辑方式③选择元件④编辑图形文件。(2)编译设计文件。在编译设计文件前,应先选择下载的目标芯片,否则系统将以默认的目标芯片为基础完成设计文件的编译。(3)仿真设计文件。①建立波形文件。执行命令,在弹出编辑文件类型对话框中,选择OtherFiles中的VectorWaveformFile方式后单击OK按键,或者直接按主窗口上的“创建新的波形文件”按钮,进入QuartusII波形编辑方式。②输入信号节点③设置波形参量④编辑输入信号⑤波形文件存盘⑥运行仿真器(4)编程下载设计文件。文本编辑输入法及图形输入法的设计步骤基本相同。在设计电路时,首先要建立设计项目,然后在QuartusⅡ集成环境下,执行命令,在弹出的编辑文件类型对话框,选择VHDLHDLFile,或者直接单击主窗口上的“创建新的文本文件”按钮,进入QuartusⅡ文本编辑方式。4.以一位全加器为例,在QuartusII和MAX+plusII开发工具中完成完整的设计过程。答:1位全加器是用两个半加器及一个或门连接而成,因此需要首先完成半加器的设计。设计过程:(1)为本项设计建立文件夹。(2)输入设计项目和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论