VHDL作业及答案2

2018-11-12 20:18

第5章PPT课件作业

1.VHDL程序一般包含几个组成部分?各部分的作用是什么? 实体,结构体,库,程序包,配置

实体:用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。

结构体:用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行为、元件及内部连接关系。

库:存放已经编译的实体、构造体、程序包集合和配置。 程序包:存放各设计模块都能共享的数据类型、常数和子程序库;

配置:实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。

2.端口模式有哪几种?buffer类型与inout类型的端口有什么区别? Out, in, inout, buffer

out (输出):只能被赋值,用于不能反馈的输出;

in (输入):只能读,用于时钟输入、控制输入单向数据输入;

inout(输入输出) :既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。 buffer(缓冲):类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。

3.下列标识符中,哪些是非法的?

Led3 coder_ _1 end port std_machine 2adder decoder*8 and_2_ _decoder_1 and2 and_2 and_ _2 and-2

4.指出下面的实体描述中存在的四处语法错误并改正

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS

PORT( a, b, s : IN BIT ;

y : OUT BIT ;) ; (1.删除括号内的分号) END ENTITY mux; (2.改为mux21a) ARCHITECTURE one OF mux21a IS

BEGIN PROCESS(a,b,s) Begin if s=‘0’ then y<=a ;

else y<=b ; end if ;

end process (结束少了一个分号)

END ARCHITECTURE none ; (none改为one)

5.写出下图所示的设计实体mux41的实体声明。所有端口都采用bit或

bit_vector类型。

Aa BCD mux41 Q SEL[1..0]

ENTITY mux41 IS

PORT( A, B, C,D : IN BIT ;

SEL : IN BIT_VECTOR(1 DOWNTO 0) ;

Q : OUT BIT) ;

END ENTITY mux41;

6.表达式C<=A+B中,A、B、C的数据类型都是STD_LOGIC_VECTOR,是否能直接进行加法

运算?说明原因和解决方法。

答:不能直接进行加法运算。因为+号只能对整数类型进行直接相加,如果要

对STD_LOGIC_VECTOR数据类型进行+法操作,需要调用运算符重载,即在程序的开头打开IEEE.STD_LOGIC_UNSIGNED.ALL程序包,或者把STD_LOGIC_VECTOR数据类型改为整数类型。

7.能把任意一种进制的值向一整数类型的对象赋值吗?如果能,怎样做? 答:能。见书上P322页

8.判断下列VHDL的数值表示是否合法,如果有误指出原因(P322) 16#0FA# 10#12F# 8#789# 8#356# 2#0101010#

9.数据类型BIT,INTEGER,BOOLEAN分别定义在那个库中?哪些库和程序包总是可见的?

答:BIT,INTEGER,BOOLEAN分别定义在 STD库的STANDARD程序包中(见书

上P324-325)

WORK库,STD库总是可见的(P316-317) 10.习题3-1,3-2,3-6(P92)

答:3-6考试有此种类型的程序题。 LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS

PORT ( CLK0,CL : IN STD_LOGIC ; OUT1 : OUT STD_LOGIC); END ;

ARCHITECTURE bhv OF DFF3 IS

SIGNAL Q : STD_LOGIC ;(此处只能定义信号) BEGIN

PROCESS (CLK0) BEGIN

IF CLK0'EVENT AND CLK0 ='1' THEN Q <= Q NOR CL; END IF; END PROCESS ;

OUT1<= NOT Q; END ;

11.VHDL语言数据对象有哪几种?作用范围如何?对其赋初值作用有何不同? 答:VHDL语言数据对象有信号,变量,常量。要回答的特别详细 12.判断下面三个程序中是否有错误,若有则指出错误所在。

程序1: signal a,en: std_logic ;

process(a,en)

variable b: std_logic;

begin

if en=1 then b<=a ; (错误2处。1. en 为std_logic类型,

此类型赋值为en=‘1’;2. b 为变量,变量赋值采用 := )

end if ;

end process ;

程序2:architecture one of sample is

variable a,b,c: integer ;(结构体里面不能定义变量,只

能定义信号)

begin

c<=a+b ;

end architecture one;

程序3:library ieee;

Use ieee.std_logic_1164.all; Entity mux21 is

Port (a, b : in std_logic;

sel: in std_logic; c : out std_logic);

end Entity sam2;(1. sam2改为mux21)

architecture one of sample is (2. sample改为mux21)

begin

process(a,b.sel) (6.if语句应该放在process中) begin

if sel=?0?then c:=a; ( 3.端口赋值采用<= ,改为c<=a) else c:=b; (4.端口赋值采用<= ,改为c<=b)

end if;

end process ;

end architecture two; (5. two改为mux21)

13.在VHDL中,如何描述时钟信号上升沿和下降沿?请分别列举两种不同的方法

14.叙述进程语句的语法格式,并说明各组成部分的功能和作用。(回答要详细)

process[(敏感信号表)] [进程说明部分] begin

{顺序处理语句} end process [标号];

1. 敏感信号表内为信号列表,该表内的信号的变化将引起进程的执行。多数VHDL综合器要求敏感信号表必须列出本进程中所有输入信号名。

2. 进程说明用来定义在该进程中需要用到的局部量,如变量、常数等,在此处定义的变量是局部量,只能在该进程中使用,其他地方不能使用。特别强调在进程说明部分只能定义局部变量,不能定义信号和共享变量。

3. 顺序描述语句是一段顺序执行的语句,具体描述进程的行为.如:信号赋值,变量赋值,if语句,case语句等。

15.进程的敏感信号表具有什么作用?列出敏感信号时应注意什么?(回答要详细)

答:敏感信号表中有多个敏感信号时,其中任一个信号的变化都

会引起进程启动,写敏感信号表时,尽量将在进程中被读取的信号列全。若无敏感信号表,就必须放一个WAIT语句在

16.

进程内作为进程启动语句

进程设计要点是什么? (回答要详细)

? PROCESS为一无限循环语句

? PROCESS中的顺序语句具有明显的顺序/并行运行双重性进程内部只能加载顺序语句,但进程本身是并行语句出现在结构体中,它与其他并行结构或进程之间在结构体中是并行运行的

? 进程语句本身是并行语句

? 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑

? 进程必须由敏感信号的变化来启动敏感信号表中有多个敏感信号时,其中任一个信号

的变化都会引起进程启动,写敏感信号表时,尽量将在进程中被读取的信号列全。无 敏感信号表,就必须放一WAIT语句在进程内作为进程启动语句

? 信号是多个进程间的通信线在结构体中多个进程可以并行运行,多个进程之间的通 信是通过信号来实现。因此,在任一进程的进程说明部分不允许定义信号

第6章PPT课件作业

1. 顺序语句和并行语句分别有哪些?顺序语句和并行语句主要有什么区别? 2. 用IF和when-else语句编写全加器(自己结合PPT,编程实现。)

3. 用元件例化法实现4位加法器。(自己结合2位加法器的方法,编程实现。) 4. 阅读下面的程序,分析其实现的逻辑功能,并说明是时序逻辑还是组合逻辑 library ieee;

Use ieee.std_logic_1164.all;

Entity decoder is

Port (a : in std_logic_vector(9 downto 0);

c : out integer range 0 to 9); end Entity decoder ;

architecture one of decoder is

begin

with a select

c<=0 when “0000000001” , 1 when “0000000010” , 2 when “0000000100” , 3 when “0000001000” , 4 when “0000010000” , 5 when “0000100000” , 6 when “0001000000” , 7 when “0010000000” , 8 when “0100000000” , 9 when “1000000000” , 0 when others ; end architecture one;

组合电路:译码电路。从低位到高位依次判断10位2进制数的哪一位是高电平,并输出高电平所在数据位置。

5. 结构体的描述方式有几种方式?各有什么特点?

1.行为描述方式:只需描述输入与输出的行为,不关注具体的电路实现,一般通过一组顺序的VHDL进程来反映设计的功能和算法;

2.数据流描述方式:这种描述将数据看成从设计的输入端到输出端,通过并

行语句表示这些数据形式的改变,即信号到信号的数据流动的路径和形式进行描述;

3.结构描述方式:多用在多层次的设计中,通过调用库中得元件或已经设计好的元件,进行组合来完成实体功能的描述,它只表示元件和元件之间的互连.

6. 下面是三人表决器的VHDL描述,分析其实现机制,并说明三个不同的结构体分别用

了什么描述方法。

library ieee;

Use ieee.std_logic_1164.all; Entity voter3 is

Port (a,b,c : in bit;

m : out bit);

end Entity voter3 ;

结构体描述方法1:(属于结构体的数据流描述方式。) architecture one of voter3 is begin

with a&b&c select

m<=?1? when “110”|“101”|“011”|“111”,?0? when others; end architecture one;

结构体描述方法2:(采用了进程,属于结构体的行为描述方式)

architecture two of voter3 is begin

process(a,b,c)

constant lookuptable :bit_vector(0 to 7):= “00010111”; variable index: natural;] begin

index:=0;

if a=?1? then index:= index+1; end if ; if b=?1? then index:= index+2; end if ; if c=?1? then index:= index+4; end if ;

m

结构体描述方法3:(采用元件例化,调用了其他元件,属于结构体的结构描述方式) architecture three of voter3 is

component and2 port (in1,in2: in bit; out1: out bit);

end component;

component or2 port (in1,in2,in3: in bit; out1: out bit); end component;

signal w1,w2,w3:bit; begin

gate1: and2 port map (a,b,w1); gate2: and2 port map (b,c,w2); gate3: and2 port map (a,c,w3); gate4: or3 port map (w1,w2,w3,m); end architecture three;

第8章PPT课件作业

1. 设计一个比较电路,当输入的8421BCD码值大于4时,输出为1,否则输出为0

(自己编写。)

LIBRARY IEEE; --8421比较电路方法1 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY compara IS

PORT (a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Y : OUT STD_LOGIC ); END ENTITY compara;

ARCHITECTURE one OF compara IS BEGIN

process(a) begin

if ((a>4)and (a<=9)) then y<='1'; else y<='0'; end if;

end process;

END ARCHITECTURE one;

LIBRARY IEEE; ----8421比较电路方法2 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY compara2 IS

PORT (a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Y : OUT STD_LOGIC ); END ENTITY compara2;

ARCHITECTURE one OF compara2 IS BEGIN

process(a) begin

if a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\elsif a=\else y<='0';

end if;

end process;

END ARCHITECTURE one;

2. 编程实现3-8译码器。(结合数码管译码器的方法,查询资料编写)

3. 编程实现2个数相加的加法器。其中加数和被加数均为4位二进制数。(结合PPT的

位加法器,编程实现)

4. 8位右移寄存器(自己编写。)


VHDL作业及答案2.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015继续医学教育公共考试(完整答案版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: