您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 南邮数电-第11章习题答案
1578173305926第1页共6页11.1什么是硬件描述语言?与其它HDL语言相比,用VHDL语言设计电子线路有什么优点?可以描述硬件电路的功能,信号连接关系及定时关系的一种语言,称为硬件描述语言。和其它HDL语言相比,VHDL语言的优点如下:1.易于共享和交流。易于将VHDL代码在不向的工作平台(如工作站和PC机)和开发工具之间交换。2.设计结果与工艺无关。设计者可以专心致力于其功能,即需求规范的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。3.设计方法灵活、支持广泛。VHDL语言可以支持自上而下(TopDown)和基于库(Library-Based)的设计方法,支持同步电路、异步电路、FPGA以及其它随机电路的设计。4.系统硬件描述能力强。VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直至门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。11.2试简述用VHDL语言设计电子线路的一般流程。所谓用VHDL设计是指由设计者编写代码,然后用模拟器验证其功能,再把这些代码综合成一个与工艺无关的网络表,即翻译成由门和触发器等基本逻辑元件组成的原理图(门级电路),最后完成硬件设计。VHDL的一般设计流程如下图P11.2所示,分5步进行。系统分析和划分行为级描述综合成门级电路门级电路仿真电路物理实现行为级仿真RTL级仿真RTL级描述输出门级网表图P11.2VHDL的一般设计流程1578173305926第2页共6页第1步:系统分析和划分。第2步:行为级描述和仿真。第3步:RTL级描述和仿真。第4步:逻辑综合。第5步:电路物理实现。11.3VHDL语言由几个设计单元组成?分别是什么?哪些部分是可以单独编译的源设计单元?VHDL语言由实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)和库(library)5个部分组成。前4种是可分别编译的源设计单元。11.4对下面的功能写一个实体(component_a)和一个结构体(rtl)d_out=(a_inandb_in)andc_in;类型指定为std_logic。entitycomponent_aisport(a_in,b_in,c_in:instd_logic;d_out:outstd_logic);endcomponent_a;--实体architecturertlofcomponent_aisbegind_out=(a_inandb_in)andc_in;endrtl;--结构体11.5一个程序包由哪两部分组成?包体通常包含哪些内容?一个程序包由下面两部分组成:包头部分和包体部分。包体(body)由包头中指定的函数和过程的程序体组成,描述包头中所说明的子程序(即函数和过程)的行为,包体可以与元件的一个architecture类比。11.6数据类型bit在哪个库中定义?哪个(哪些)库和程序包总是可见的?数据类型bit在标准库std中定义。VHDL标准中规定工作库work、标准库std及std库中的standard程序包总是可见的。11.7VHDL语言中,3类数据对象——常数、变量、信号的实际物理含义是什么?常数是一个恒定不变的值,在数字电路设计中常用来表示电源和地等。变量是一个局部量,用来暂时保存信息,与硬件之间没有对应关系。信号是电子电路内部硬件连接的抽象,是一个全局量,它对应地代表物理设计中的某一条硬件连接线。11.8变量和信号在描述和使用时有哪些主要区别?变量只能在进程(process)和子程序(包括函数(function)和过程(procedure)两种)中使用,是一个局部量,用来暂时保存信息,与硬件之间没有对应关系,不能将信息带出对它做出定义的当前设计单元。对变量的赋值是立即生效的,不存在任何的延时行为。信号是电子电路内部硬件连接的抽象,是一个全局量,用来进行进程之间的通信。它对应地代表物理设计中的某一条硬件连接线。对信号的赋值不是立即进行的,即需要经过一段延时,信号才能得到新值,明显地体现了硬件系统的特征。1578173305926第3页共6页11.9bit和std_logic两种数据类型有什么区别?数据类型bit只有两种取值‘0’和‘1’;数据类型std_logic有9种取值,分别是‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’;其中,‘U’–Uninitialized(未定)‘X’--ForcingUnknown(强未知)‘0’--Forcing0(强0)‘1’--Forcing1(强1)‘Z’--HighImpedance(高阻)‘W’--WeakUnknown(弱未知)‘L’--Weak0(弱0)‘H’--Weak1(弱1)‘-’--Don’tcare(无关,即不可能情况)11.10VHDL语言中,以下3个表达式是否等效?为什么?a<=notband(cord);a<=notbandcord;a<=not(bandc)ord;这3个表达式不等效,因为逻辑运算符not、and、or具有运算优先顺序,从左到右,优先权依次降低。以上3个表达式用逻辑表达式表,分别如下:)(dcbadcbadbca11.11进程(process)的启动条件是什么?为启动进程,在进程结构中必须包含一个显式的敏感信号表或包含一个wait语句,即只有敏感信号表中或wait语句后的敏感信号发生变化,进程才被启动。11.12什么是层次化设计?在一个大型设计中,通常一个实体(称顶层实体)中包含若干个元件(实体),并将其相互连接起来。元件可以嵌套,即低层元件又可以包含更低一层的元件。这种设计方法称为层次化设计。利用层次化描述方法可以将已有的设计成果方便地用到新的设计中,大大提高设计效率。1578173305926第4页共6页11.13用VHDL描述图p11.13所示的方框图,即在元件top中例化元件c1(2次)和元件c2。aq1baq1bd1qd2c1c1c2i1i2topabcdq图p11.13entitytopisport(a,b,c,d:instd_logic;q:outstd_logic);endtop;architecturehierarchy_topoftopiscomponentc1port(a,b:instd_logic;q1:outstd_logic);endcomponent;componentc2port(d1,d2:instd_logic;q:outstd_logic);endcomponent;signalil,i2:std_logic;beginu1:c1portmap(a,b,il);u2:c1portmap(c,d,i2);u3:c2portmap(i1,i2,q);endhierarchy_top;11.14试用case语句设计一个四——十六线译码器。libraryieee;useieee.std_logic_1164.all;entitydeco_4_16isport(en:instd_logic;a:instd_logic_vector(3downto0);y:outstd_logic_vector(15downto0));enddeco_4_16;architecturertlofdeco_4_16issignaltemp_out:std_logic_vector(15downto0);beginprocess(en,a)begin1578173305926第5页共6页if(en='0')thencaseaiswhen0000=temp_out=1111111111111110;when0001=temp_out=1111111111111101;when0010=temp_out=1111111111111011;when0011=temp_out=1111111111110111;when0100=temp_out=1111111111101111;when0101=temp_out=1111111111011111;when0110=temp_out=1111111110111111;when0111=temp_out=1111111101111111;when1000=temp_out=1111111011111111;when1001=temp_out=1111110111111111;when1010=temp_out=1111101111111111;when1011=temp_out=1111011111111111;when1100=temp_out=1110111111111111;when1101=temp_out=1101111111111111;when1110=temp_out=1011111111111111;when1111=temp_out=0111111111111111;whenothers=temp_out=1111;endcase;elsetemp_out=1111111111111111;endif;y=temp_out;endprocess;endrtl;11.15设计一个元件,其输入和输出如图p11.15所示,该元件具有下面的行为:component_1a(1:0)b(1:0)sel(1:0)q(1:0)图p11.15(1)用if语句。(2)用case语句。(3)用whenelse语句。(1)用if语句。libraryieee;useieee.std_logic_1164.all;entitycomponent_1_ifisport(a,b,sel:instd_logic_vector(1downto0);q:outstd_logic_vector(1downto0));endcomponent_1_if;architecturecomponent_1_if_rtlofcomponent_1_ifisselq00anandb01aorb10anorb11aandbothers“XX”1578173305926第6页共6页beginprocess(a,b,sel)beginif(sel=00)thenq=anandb;elsif(sel=01)thenq=aorb;elsif(sel=10)thenq=anorb;elsif(sel=11)thenq=aandb;elseq=XX;endif;endprocess;endcomponent_1_if_rtl;(2)用case语句。libraryieee;useieee.std_logic_1164.all;entitycomponent_1_caseisport(a,b,sel:instd_logic_vector(1downto0);q:outstd_logic_vector(1downto0));endcomponent_1_case;architecturecomponent_1_case_rtlofcomponent_1_caseisbeginprocess(a,b,sel)begincaseseliswhen”00”=q=anandb;when”01”=q=aorb;when”10”=q=anorb;when”11”=q=aandb;whenothers=q=”XX”;endcase;endprocess;endcomponent_1_case_rtl;(3)用whenelse语句。libraryieee;useieee.std_logic_1164.all;entitycomponent_1_whenisport(a,b,sel:instd_logic_vector(1downto0);q:outstd_logic_vector(1downto0));endcomponen
本文标题:南邮数电-第11章习题答案
链接地址:https://www.777doc.com/doc-2609193 .html