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

付费下载

下载本文档

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

文档简介

1、答案由个人做出,可能有不全或错误之处,欢迎大家批评指正。第一章1. EDA的英文全称及其中文含义是什么?答:EDA是 Electronic Design Automation,其中文含义是“电子设计自动化” 。2. 什么叫EDA技术?简述EDA技术的发展历程。答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式, 以计算机、 大规模可编程逻辑器件的开发 软件及实验开发系统为设计工具, 通过有关的开发软件, 自动完成用软件的方式设计的电子 系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑 仿

2、真, 直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成 电子系统或专用集成芯片的一门新技术,或称为 IES/ASIC 自动设计技术。3. 简述用EDA技术设计电路的设计流程。答 EDA 设计流程包括:设计准备、设计输入、设计处理、设计校验、器件编程、器件测试 和设计验证。4. 什么叫”综合”和”网表文件”?答: (A) 在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转 换为低层次的便于具体实现的模块组合装配的过程。(1) 从自然语言转换到 VHDL 语言算法表示,即 自然语言综合。 (2) 从算法表示转换到寄存器 传输级 (RegisterTr

3、ansport Level , RTL),即从行为域到结构域的综合,即行为综合。(3)从RTL级表示转换到逻辑门(包括触发器 )的表示,即逻辑综合。 (4) 从逻辑门表示转换到版图表示 (ASIC 设计),或转换到 FPGA 的配置网表 文件,可称为版图综合或结构综合。 综合在电子设计自动化中处于核心地位。(B) 文件是描述电路的连接关系的文件,一般以文本文件的形式存在。英文为netlistfile 格式有 cdl, spice, aucdl. 等5. 从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的 设计中分别起什么作用 ?答:EDA技术的学习主要应掌握 4个方

4、面的内容: 大规模可编程逻辑器件; 硬件描述 语言; 软件开发工具; 实验开发系统。6. 目前流行的主流厂家的EDA的软件工具有哪些?比较这些EDA软件的差异。答:(1)目前比较流行的主流厂家的EDA的软件工具有 Altera的MAX+plusll、Quartus II 、Lattice 的 ispEXPERT、 Xilinx 的 Foundation Series 。(2) Max+ plus II 是A1tera公司推出的一个使用非常广泛的EDA软件工具,它支持原理图、VHDL和Verilog语言的文本文件,以及波形图与EDIF等格式的文件作为设计输入,并支持这些文件的任意混合设计。 它具

5、有门级仿真器, 可以进行功能仿真和时序仿真, 能够 产生精确的仿真结果。 在适配之后,Max+ plusll生成供时序仿真用的Edif > VHDL和 Verilog3 种不同格式的网表文件。 Max+plus II 界面友好, 使用便捷, 被誉为业界最易学易用的 EDA 软件,并支持主流的第三方EDA工具,支持除APEx20K系列之外的所有 A1tera公司的FPGA/ CPLD大规模逻辑器件。Quartus II是Altera公司新近推出的 EDA软件工具,其设计工具完全支持 VHDL和Verilog的设计流程,其内部嵌有VHDL、 Verilog 逻辑综合器。第三方的综合工具,如

6、LeonardoSpectrum 、 Synplify pro 和 FPGA Compiler II 有着更好的综合效果, Quartus II 可以直接 调用这些第三方工具,因此通常建议使用这些工具来完成VHDL/Verilog 源程序的综合。同样, Quartus II 具备仿真功能,也支持第三方的仿真工具,如 Modelsim 。此外, Quartus II 为Altera DSP开发包进行系统模型设计提供了集成综合环境,它与MATLAB DSP Builder结合可以进行基于 FPGA勺DSP系统开发,是DSP硬件系统实现的关键 EDAX具。Quartus II 还可与SOPC Bui

7、lder结合,实现SOP係统开发。ispExPERT是Lattice 公司的主要集成环境。通过它可以进行 VHDL Verilog 及ABEL语言 的设计输入、综合、适配、仿真和在系统下载。ispExPERT是目前流行的EDA软件中最容易掌握的设计工具之一,它界面友好、操作方便、功能强大,并与第三方EDA工具兼容良好。完整的SynopsysFoundation Series是Xilinx 公司较成熟的集成开发 EDAX具。它采用自动化的、 集成设计环境。 Foundation 项目管理器集成 Xilinx 实现工具, 并包含了强大的书馆 FPGA Ex press综合系统,是业界最强大的 ED

8、A设计工具之一。7. 简要阐述答:从目前的 件功能强大。军事等各个领域,都有 EDA的应用。EDA技术的发展趋势和应用领域EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、EDA的范畴包括:机械、电子、通信、航空航天、化工、矿产、生物、医学、第二章 VHDL 硬件描述语言1、简述实体 (ENTITY) 、结构体( ARCHITECTURE )与原理图的关系。 答:结构来说 实体就是原理图的外观,结构体中的具体程序就是原理图中的具体实现。2、子程序调用与元件例化有何区别,函数与过程在具体使用上有何不同。答:从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL综合器为

9、子程序的每一次调用都生成一个电路逻辑块。所不同的是,元件的例化将产生一个新的设计层次, 而子程序调用只对应于当前层次的一部分。 函数和过程的不同在于: 函数只有一个输出, 只 能通过函数体内的 RETURNS句来实现,函数体内不能有信号赋值语句;而过程却可以有不 止一个输出, 而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的RETURN语句没有用处,因此不少过程都将其省略了。函数的调用只能通过表达式来实现, 过程的调用则是通过过程调用语句来实现的。3、什么是重载函数?重载算符有何用处?如何调用重载算符函数。 答:( 1)什么是重载函数 ? 根据操作对象变换处理功能。并进(

10、2)重载算符有何用处 ? 用于两个不同类型的操作数据自动转换成同种数据类型, 行运算处理。无需事先声明 。( 3)如何调用重载算符函数 ?采用隐式方式调用,正如配置一词本身的含义一样。 配置 配置也是 VHDL 设计实体中的一个 总之用4、在 VHDL 程序中配置有何用处? 答:配置可以把特定的结构体关联到一个确定的实体, 语句就是用来为较大的系统设计提供管理和工程组织的。 基本单元, 在综合或仿真中, 可以利用配置语句为确定整个设计提供许多有用信息。 于设置VHDL的工作参数以及工作模式。配置用来选择实体的多个结构体的哪一个被使用。5. 嵌套 BLOCK 的可视性规则是什么?以嵌套 BLOC

11、K 的语句方式设计三个并列的 3 输 入或门。答: BLOCK 是 VHD 中具有的一种划分机制, 这种机制允许设计者合理地将一个模块分为 数个区域, 在每个块都能对其局部信号、 数据类型和常量加以描述和定义。 任何能在结构体 的说明部分进行说明的对象都能在 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_LOGI

12、C;OUTA :OUT STD_LOGIC);END triple_input;ARCHITECTURE ADO OF triple_input ISBEGINOUTA<= A AND B AND C;END ADO;6. 简述函数与过程的异同点,过程与进程的异同点。答:子程序有两种类型,即过程( PROCEDURE) 和函数( FUNCTION) 。函数和过程都是串 行的。 它们的区别在于: 过程的调用可以通过其界面获得多个返回值, 而函数只能返回一个 值;在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数;过 程一般被看作一种语句结构, 而函数通常是表达式的一部

13、分; 过程可以单独存在, 而函数通 常作为语句的一部分调用。过程和进程的相同点: 只能使用顺序语句, 可以单独存在。 不同 点:过程不能像进程那样可以从本结构体的其他块或进程结构中直接读取信号值或者信号赋 值。16#0FA#,10#12F#,8#789#, D100% 。2)标识符的首字符只能是字10#12F# 、 8#789#,8#356# ,7、判断下列 VHDL 标识符是否合法, 如果不合法则指出原因: 8#356# , 2#0101010# , 74HC245 , CLR/RESET ,答:识符用法规定: (1)只能包含英文字母,数字,下划线( 母。故:(1) 16#0FA#错在首字符

14、是数字,且包含非法字符“ # “。 2#0101010#, 74HC245也是犯同一错误。(2) 74HC574,CLR/RESET,IN4/SCLK,D100% 都是非法,包含非法字符.信号跟变量是VHDL中的重要客体。采用信号对象可以把设计实体连接在一起形成 有时信号会被综合成一个寄存器。 变量主要是对暂 信号与变量在使用前都必需先声明后使用, 否则会 、 package 、entitiy 中声明,是全局量可以在全局 procedure 中声明,也只能在 process 、 function 、 5延时;而变 而变量只有当前 而变量只在定义他8、讨论数据对象信号与变量间的异同处,说明它们的

15、使用对所形成的硬件结构有何影响。答:在VHDL中,对象是指用来保持数据的一些客体单元。 信号是指在设计实体中数据交换的一种手段, 模块。 在硬件电路中代表一条硬件连线, 时数据进行局部存储, 它是一个局部量。 产生编译错误。信号可以 architecture 使用。变量可以 process 、function procedur 中使用不是全局变量。他们之间的主要区别有:信号赋值至少要有 量赋值没有。 信号除当前值外有许多相关的信息, 如历史信息和投影波形; 值。进程对信号敏感而不对变量敏感。 信号可以是多个进程的全局信号; 们的顺序域可见(共享变量除外) 。信号是硬件中连线的抽象描述,他们的功

16、能是保存变化 的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系, 他们用于硬件特性的高层次建模所需要的计算中。从综合后所对应的硬件电路结构来看, 信号一般将对应更多的硬件结构, 但在许多情况下,信号和变量并没有什么区别。 例如在满足一定条件的进程中, 综合后它们都能引入寄存 器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。9. 运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。下面给出一个新 的数据类型 AGE ,并且下面的转换函数已经实现: function CONV_INTEGER(ARG:AG

17、E) return INTEGER ;请仿照本章中的例子,利用此函数编写一个“ +运”算符重载函数,支持下面的运算: SIGNAL a , c : AGE ;c <= a + 20 ; 答:function“ +” (L : AGE, R: inr)tergeteurn AGE isBeginreturn CONV_AGE(L + CONV_INTEGER(R);End;10、设计16位比较器,比较器的输入是 2个待比较的16位数:A=A15A0 , B=B15B0, 输出是 D、E、F。当 A=B时,D=1 ;当 A>B 时,E=1 ;当 A<B时,F=1 (参考方法: 用

18、常规的比较器设计方法,即直接利用关系操作符进行编程设计,或者利用减法器来完成, 通过减法运算后的符号和结果来判别两个被比较值的大小) 答:略 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 comp

19、are is beginprocess(a,b) begin if (a > b) thenX <='1'Y <='0' Z <='0'elsif(a < b) thenX <='0'Y <='1' Z <='0'ELSEX <='0'Y <='0' Z <='1'end if;end process;end behave;11. 在 VHDL 编程中,为什么应尽可能使用子类型对类型的取

20、值范围给予限定。 答:由于子类型与其基本数据类型属同一数据类型,因此属于子类型的和属于基本数据 类 型的数据对象间的赋值和被赋值可以直接进行, 不必进行数据类型的转换。 利用子类型定义数据对象的好处是, 除了使程序提高可读性和易处理外, 其实质性的好处还在于有利于提高 综合的优化效率, 这是因为综合器可以根据子类型所设的约束范围, 有效地推知参与综合的 寄存器的最合适的数目。12、判断下面 3 例 VHDL 程序中是否有错误,若有错误则指出错误原因: 程序 1Signal A, EN : std_logic;Process (A, EN)Variable B : std_logic;Begin

21、if EN = 1 'thenB <= A;end if;end process;程序 2Architecture one of sample is variable 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 isbeg

22、i n if sel = '0' then 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(b,sel) begin if sel= '0' then c:=a; else c:=b; end if; -应改成 “if sel= '0' then c<=a; else c<=b;

23、 end if; 增加 “ end pro cess 将 “ two 改成 “ architecture one ” 13、分别用 CASE 语句和 IF 设计 3-8 译码器。 答: 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

24、:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINS<=A2&A1&A0;PROCESS (EN,S)BEGINIF (EN= '1') THENCASE SISWHENWHENWHEN000”=>Y<= ”00000001”;001”=>Y<= ”00000010”;010”=>Y<= ”00000100”;WHENWHENWHENWHEN011”=>Y<= ”00001000 ”;100”=>Y<= ”00010000”;101”=>Y<= ”00100000”

25、;110”=>Y<= ”01000000 ”;WHEN111”=>Y<= ”10000000”;WHEN OTHERS=>NULL;END CASE;END IF;END PROCESS;END ARCHITECTURE 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;ARCH

26、ITECTUR bhv OF decoder38 ISBEGINPROCESS (EN,A2,A1,A0)BEGINIF (EN= '1') THENIF(A2= '0') THENIF(A1= '0') THENIF(A0= '0') THENY<= '00000001'ELSEY<= '00000010'ELSIF(A1= '1') THEN IF(A0= '0') THENY<= '00000100'ELSEY<= 

27、9;00001000'END IF;END IF;ELSIF(A2= '1') THENIF(A1= '0') THEN IF(A0= '0') THENY<= '00010000'ELSEY<= '00100000'END IF;ELSIF(A1= '1') THEN IF(A0= '0') THENY<= '01000000'ELSEY<= '10000000'END IF;END IF;END IF;END IF;

28、END PROCESS;END ARCHITECTURE bhv;library ieee;use ieee.std_logic_1164.all;entity sss isport (a: in std_logic_vector(2 downto 0); cout:out std_logic_vector(7 downto 0); end ;architecture one of sss isbeginprocess(a)beginif a="000" then cout <="11111110" elsif a="001"

29、then cout <="11111101" elsif a="010" then cout <="11111011" elsif a="011" then cout <="11110111" elsif a="100" then cout <="11101111" elsif a="101" then cout <="11011111"elsif a="110" t

30、hen cout <="10111111" elsif a="111" the n cout <="01111111" end if;end pro cess;end;14、若在进程中加入 WAIT语句,应注意哪几个方面的问题。WAIT语句;一其余语句格式只能在答:应注意以下问题:已列出敏感信号的进程中不能使用任何形式的 般情况下,只有WAIT UNTIL格式的等待语句可以被综合器所接受, VHDL仿真器中使用;在使用 WAIT ON语句的进程中,敏感信号量应写在进程中的WAITON语句后面;在不使用 WAIT ON语句的

31、进程中,敏感信号量应在开头的关键词PROCESS后面的敏感信号表中列出。cin是输入进位,cout是输出进位。试给出此电路15、图2.15中的f_adder是一位全加器, 的VHDL描述。y图2.15习题15图答:library ieee;use ieee.std_logic_1164.all;en tity ff isport (x,y,clock:in std_logic;sum:out std_logic);en d;architecture one of ff iscomponent f_adderp ort(a,b,ci:i n std_logic;su,co:out std_log

32、ic);end component;component dfp ort(d,cl:i n std_logic;q1:out std_logic);end component;sig nal cout,t mp: std_logic;beginu1:f_adder port map( a=>x,b=>y,ci=>t mp, su=>sum,co=>cout); u2:df port map( d=>cout,cl=>clock,q1=>t mp);end architecture one;-底层文件1: D触发器library ieee;use i

33、eee.std_logic_1164.all; entity df isport (d,cl:in std_logic; q1:out std_logic);end;architecture two of df issignal qq:std_logic;beginprocess(cl,qq)beginif cl 'event and cl='1'then qq<=d; end if;end process; q1<=qq;end architecture two;- 底层文件 2:全加器 library ieee;use ieee.std_logic_11

34、64.all;entity f_adder isport (a,b,ci:in std_logic; su,co:out std_logic);end;architecture three of f_adder is component h_adder port(a1,b1:in std_logic; so,cou:out std_logic); end component; component or2a port(a1,b1:in std_logic;c:out std_logic);end component;signal d,e,f:std_logic;begin u1:h_adder

35、port map(a1=>a,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; - 底层文件 2-1:半加器library ieee;use ieee.std_logic_1164.all; entity h_adder isport (a1,b1:in std_logic;so,cou:out std_logic); e

36、nd;architecture four of h_adder isbegin 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 isport (a1,b1:in std_logic; c:out std_logic);end;architecture five of or2a isbegin c<=a1 or b1; end architecture five;16.

37、设计 5 位可变模数计数器。设计要求:令输入信号M1M0)=(0 ,0)时为模 19 加法计数器, (M1 ,M0)=(0 ,1)时为模 模 10 加法计数器, (M1 ,M0)=(1 ,1)时为模 6 计数器。答: Entity mod_cal isPort(M1,M0:in bit;Count:out std_logic_vector(4 downto 0);Clk:in std_logic);End entity;Architecture behav of mod_cal isSignal count1:std_logic_vector(4 downto 0);BeginProcess(

38、clk,M1,M0)Variable sel is bit_vector(1 downto 0);BeginSel:=M1&M0;If clk ' event and clk= ' 1' thenCount1<=Count1+1;Case sel is和 M0 控制计数模,即令 (M1 ,4 计数器, (M1 ,M0) =(1 ,0) 为” 00000 ”End if;When“ 01” =>if Count1= ” 00100 ” then Count1<= ” 00000End if;When“ 10” =>if Count1= ”

39、01010 ” then Count1<= ” 00000End if;When“ 11” =>if Count1= ” 00110 ” then Count1<= ” 00000When“00” =>if Count1= ” 10011 ” then Count1<=End if;End case; End if;End process; Count<=count1;End behav;17. 什么是 VHDL 结构体的行为描述风格,叙述行为描述的优缺点。答:如果 VHDL 的结构体只描述了所希望电路的功能或者说电路行为, 而没有直接指明或 涉及实现这些行

40、为的硬件结构, 包括硬件特性、连线方式、逻辑行为方式, 则称为行为风格 的描述或行为描述。优点:抽象程度最高,最能体现 VHDL 描述高层次结构和系统的能力。 缺点:只表示输入与输出间转换的行为,它不包含任何结构信息。18结构化描述与调用子程序有何异同点,化描述需要哪些语句?VHDL 程序中是如何进行结构化描述的?结构答:略19. 试举一例,在一个结构体中同时含有3 种不同描述风格的 VHDL 语句结构。答:略 20. 以数据流的方式设计一个 2 位比较器,再以结构描述方式将已设计好的比较器连接起 来构成一个 8 位比较器答:21.采用 VHDL 进行数字系统设计有哪些特点答:HDL 的基本点

41、:1)与其他硬件描述语言相比, VHDL 具有以下特点:功能强大、设计灵活。强大的系统硬件描述能力。易于共享和复用。22. VHDL 的基本程序结构由几部分组成 ?各部分的功能是什么 ?答:由 5 个部分组成,包含实体、结构体、配置、程序包和库。实体作为一个设计实体 的组成部分, 其功能是对这个设计实体与外部电路进行接口描述。 结构体 (ARCHITECTURE) 是设计实体的一个重要部分, 结构体将具体实现一个实体。 在利用 VHDL 进行工程设计中, 为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式, 有必要将一些有用的信 息汇集在一个或几个库中以供调用, 这些信息可以是预先定义

42、好的数据类型、 子程序等设计 单元的集合体(程序包)或预先设计好的各种设计实体(元件库程序包)。因此可以把库看 成是一种用来存储预先完成的程序包、 数据集合体和元件的仓库。 已在设计实体中定义的数 据类型、 子程序或数据对象对于其它设计实体是不可用的, 或者说是不可见的。 为了使已定 义的常数、 数据类型、元件调用说明以及子程序能被更多的 VHDL 设计实体方便地访问和 共享,可以将它们收集在一个 VHDL 程序包中, 多个程序包可以并入一个 VHDL 库中, 使之适用于更一般的访问和调用范围,这一点对于大系统开发 多个或多组开发人员同步 并行工作显得尤为重要。 配置可以把特定的结构体关联到一

43、个确定的实体, 正如配置一词本 身的含义一样。配置也是 VHDL 设计实体中的一个基本单元,在综合或仿真中,可以利用 配置语句为确定整个设计提供许多有用信息。23. 说明端口模式 BUFFER 与 INOUT 有何异同点 ?答: INOUT 为输入输出双向端口,即从端口内部看,可以对端口进行赋值,即输出数据。 也可以从此端口读入数据,即输入。BUFFER 为缓冲端口,功能与 INOUT 类似,区别在于当需要读入数据时,只允许内部回读 内部产生的输出信号, 即反馈。 举个例子, 设计一个计数器的时候可以将输出的计数信号定 义为 BUFFER ,这样回读输出信号可以做下一计数值的初始值。24. 用

44、 VHD 设计一个实现三输入的多数表决器。答: library ieee;use ieee.std_logic_1164.all; entity bjq3 isport(a,b,c:in std_logic;y:out std_logic);end; architecture x of bjq3 issignal ty:std_logic_vector(2 downto 0); begin ty<=a&b&c;with ty select y<='0' when "000", '0' when "001&

45、quot;,'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_

46、1164.all; entity jk_ff is port(clk,reset,j,k:in std_logic; q,qb:out std_logic);end; architecture behave of jk_ff is signal tq,tqb:std_logic;beginq<=tq;qb<=tqb;process(clk,reset)beginif (clk'event and clk='1') thenif (reset='0') thentq<='0'tqb<='1'elsif

47、 (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') thentq<='1'tqb<='0'elsif (j='1')and(k='1') thentq<=not tq;tqb<=not tqb;e

48、nd if;end if;end process;end;26. 用并行信号赋值语句设计 8 选 1 数据选择器。答: library ieee;use ieee.std_logic_1164.all;entity xzq8 isport(x:in std_logic_vector(7 downto 0); sel:in std_logic_vector(2 downto 0); f:out std_logic);end;architecture a of xzq8 isbeginf<=x(0) when sel="000" elsex(1) when sel=&qu

49、ot;001" elsex(2) when sel="010" elsex(3) when sel="011" elsex(4) when sel="100" elsex(5) when sel="101" elsex(6) when sel="110" elsex(7) when sel="111" else'X'end;27. 用 VHDL 设计一个三态输出的双 4选 1数据选择器。其地址信号共用,且各有个低电 平有效的使能端 答:LIBRARY

50、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DUAL_MUX_41 ISPORT(A,B,C,D:IN STD_LOGIC;ENA_N,ENB_N:IN STD_LOGIC;S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);OUTA,OUTB:OUT STD_LOGIC);ENDARCHITECTURE A OF DUAL_MUX_41 ISSIGNAL P,Q:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINP<=ENA_N & S;Q<=ENB_N & S;WITH P SELECTOU

51、TA<=A WHEN“ 000”,B WHEN” 001 ”,C WHEN” 010 ”,D WHEN” 011 ”, Z' WHEN OTHERS;WITH Q SELECTOUTB<= A WHEN” 000”,B WHEN” 001 ”,C WHEN” 010 ”,D WHEN” 011 ”, Z' WHEN OTHERS;END A;28. 用 VHDL设计实现由两输入端与非门构成的 1 位全加器。答:略29. 用 VHDL设计实现一百进制的计数器。答: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST

52、D_LOGIC_UNSIGNED.ALL;ENTITY counter ISGENERIC( count_value: INTEGER:=9);PORT (clk,clr,en: IN STD_LOGIC; co: OUT STD_LOGIC;count: OUT INTEGER RANGE 0 TO count_value); END counter;ARCHITECTURE a OF counter ISSIGNAL cnt: INTEGER RANGE 0 TO count_value; BEGINPROCESS (clk ,clr)BEGINIF clr = '1' T

53、HENcnt <= 0;ELSIF (clk'EVENT AND clk = '1') THEN IF en = '1' THENIF cnt = count_value THENcnt <= 0;ELSEcnt <= cnt + 1;END IF;END IF;END IF;END PROCESS;0'co<='1' WHEN cnt=count_value ELSE count <= cnt;END a;library ieee;use ieee.std_logic_1164.all;use ie

54、ee.std_logic_unsigned.all; use ieee.std_logic_arith.all;entity counter1 is port( clk,clr,en: in std_logic;co:out std_logic;count1: out integer range 0 to 9; count2: out integer range 0 to 9);end counter1; architecture rtl of counter1 is signal en1: std_logic; component counter is generic( count_valu

55、e: integer);port (clk,clr,en: in std_logic; co: out std_logic; count: out integer range 0 to count_value);end component;beginaa: counter generic map( count_value => 9) port map(clk,clr,en, en1, count1);bb: counter generic map( count_value=>9)port map(clk=>clk,clr=>clr, en=>en1, co=>

56、;co,count=>count2); end rtl;30. 比较 CASE 语句与 WITH_SELECT 语句,叙述它们的异同点。答:相同点:CASE语句中各子句的条件不能有重叠, 必须包容所有的条件;WITH_SECLECT 语句也不允许选择值有重叠现象, 也不允许选择值涵盖不全的情况。 另外, 两者对子句各选 择值的测试都具有同步性,都依赖于敏感信号的变化。不同点: CASE 语句只能在进程中使用, 至少包含一个条件语句, 可以有多个赋值目标; WITH_SECLECT 语句根据满足的条件,对信号进行赋值,其赋值目标只有一个,且必须是 信号。31、将以下程序段转换为 WHEN_

57、ELSE 语句:PROCESS( a,b,c,d)BEGINIF a= '0' AND b='1' THENnext1 <= "1101"ELSIFa='0' THENELSIFb='1' THENnext1next1<= d<= cELSENext1<= "1011"END IF ;END PROCESS ;答:原程序转换如下:ARCHITECTURE one OF mux ISBEGINPROCESS(a,b,c,d)BEGINNEXT1<="11

58、0"1WHEN a=0' AND b='1' ELSEd WHEN a='0' ELSEcWHEN b='1' ELSE"1011"ENDone;ENDPROCESS;以下为一时序逻辑模块的32.VHDL 结构体描述,请找出其中的错误: ARCHITECTURE one OFcom1BEGINVARIABLE a,b,c,clock:STD_LOGIC ; pro1:PROCESSBEGINIF NOT(clock'EVENT AND clock='1')THEN x<= a x

59、or b or cEND IF;END PROCESS;END;答:33. VHDL 程序设计中用 WITH_SELECT_WHEN 语句描述 4个 16位至 1个 16位输出的 4选 1 多路选择器。答: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT( dina : IN STD_LOGIC_VECTOR(0 to 15); dinb : IN STD_LOGIC_VECTOR(0 to 15); dinc : IN STD_LOGIC_VECTOR(0 to 15); dind : IN STD_LOGIC_VECTOR(0 to 15); sel: IN STD_LOGIC_VECTOR(0 to 1);dout : OUT STD_LOGIC_VECTOR(0 to 15); END mux;ARCHITECTURE rtl OF mux IS BEGINwith sel select dout<=dina WHEN "00"

温馨提示

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

最新文档

评论

0/150

提交评论