视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
VHDL合肥工业大学期末试题(含答案)2008-2009A
2025-10-03 15:10:19 责编:小OO
文档
2009/2010 学年第 一 学期末考试试题答案及评分标准

(A卷)

得分
一、 填空题(20分,每空格1分)

1、一个完整的VHDL语言程序通常包含  实体(entity)  , 构造体(architecture),

  配置(configuration),  包集合(package)和  库(library) 5各部分。

2、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能再使用的输出是用  out  表示;双向端口是用  inout  表示;构造体内部可再次使用的输出是用  buffer  表示;

3、一个构造体可以使用几个子结构,即相对比较的几个模块来构成。VHDL语言可以有以下3种形式的子结构描述语句:  BLOCK  语句结构;  PROCESS 语句结构和SUBPROGRAMS结构。

4、VHDL的客体,或称数据对象包括了常数、  变量variable  和  信号signal 。

5、请列出三个VHDL语言的数据类型,如实数、位等。  位矢量  ,  字符   ,   布尔量   。

6、设D0为'0', D1为'0', D2为'1', D3为'0', D0 & D1 & D2 & D3的运算结果是“0010”, D3 & D2 & D1 & D0的运算结果是“0100”。

7、构造体的描述方式包括三种,分别是 寄存器传输(RTL)描述方法或称数据流 ;  构造体的结构描述方式 和  构造体的行为描述方式   。

得分
二、 判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分)

1、传统的系统硬件设计方法是采用自上而下(top down)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottom up)的设计方法。             (  × )

传统的系统硬件设计方法是采用自下而上(bottom up)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(top down)的设计方法

2、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体     (  √ )

3、一个VHAL程序中仅能使用一个进程(process)语句。                   (  × )

 可以使用多个进程语句。

4、VHDL语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。                                                               (  ×  )  

逻辑运算符<关系运算符<乘法运算

得分
三、判断题(10分)

use ieee.std_logic_11.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

以上库和程序包语句有无错误?    有          ,有的话请在原程序相应位置改正。 (2)

entity rom is 

    port(

            addr: in std_logic_vector(0 to 3);

            ce:    in std_logic;

            data:out std_logic_vector(7 downto 0)   ;

        );

end rom;

以上port语句有无错误?    有         ,有的话请在原程序相应位置改正。    (4)

architecture behave of rom is

begin

process(ce,addr)                                                        

    begin 

    if ce='0' then                                                          (6)

        case addr is

            when "0000"=>

                data<="10001001";

            when "0001"=>

                data<="10001010";

            when "0010"=>

                data<="10001011";

            when "0011"=>

                data<="10001100";

            when "0100"=>

                data<="10001101";

            when "0101"=>

                data<="10001110";

            when "0110"=>

                data<="10001111";

            when "0111"=>

                data<="10010000";

            when "1000"=>

                data<="10010001";

            when "1001"=>

                data<="10010010";

            when "1010"=>

                data<="10010011";

            when "1011"=>

                data<="10010100";

            when "1100"=>

                data<="10010101";

            when "1101"=>

                data<="10010110";

            when "1110"=>

                data<="10010111";

            when others=>

    |            data<="10011000";

    |    end case;                  (8)

    else

        data<="00000000";               

    end if;                                                

    end process;                      (10)

end behave; 

以上architecture中有哪些错误?请在原程序相应位置改正。

得分
四、 编程题(共50分)

1、请补全以下二选一VHDL程序(本题10分)

Entity mux is

port(d0,d1,sel:in bit;

q:out    BIT    );                             (2)

end mux;

architecture connect of   MUX          is                  (4)

  signal tmp1,   TMP2      ,tmp3:bit;                      (6)

begin

  cale:

block

  begin

tmp1<=d0 and sel;

tmp2<=d1 and (not sel)

tmp3<= tmp1 and tmp2;

q    <=    tmp3;                            (8)

     end block cale;

   end   CONNECT        ;                        (10)

2、编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分)

LIBRARY IEEE;

    USE IEEE.STD_LOGIC_11.ALL;        (2)

    ENTITY nand2 IS

           PORT (a,b:IN    STD_LOGIC;    (4)

                    y:OUT STD_LOGIC);    (6) 

    END nand2;

    ARCHITECTURE nand2_1 OF nand2 IS      (8)

    BEGIN

         y <= a NAND b;  --与y <=NOT( a AND b);等价    (10)

    END nand2_1;

3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

ENTITY decoder_3_to_8 IS

    PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;

          y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));                  (2)

END decoder_3_to_8;

ARCHITECTURE rtl OF decoder_3_to_8 IS

     SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);                (4)

BEGIN

       indata <= c & b & a;                                                (6)

PROCESS (indata,g1,g2a,g2b)

      BEGIN

         IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN                     (8)

             CASE indata IS

WHEN "000"=> y <= "11111110";

WHEN "001" => y <= "11111101";

                 WHEN  "010" => y <= "11111011";                        (10)    

WHEN "011" => y <= "11110111";

WHEN "100" => y <= "11101111";

WHEN "101" => y <= "11011111";

                 WHEN  "110" => y <= "10111111";                         (12)    

WHEN "111" => y <= "01111111";

WHEN OTHERS=> y <= "XXXXXXXX";

              END CASE;

          ELSE

              y  <= "11111111";                            (14)

          END IF;

    END PROCESS;                                        (16)

END rtl; 

4、三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。

(本题14分)

LIBRARY IEEE;    

USE IEEE.STD_LOGIC_11.ALL;

ENTITY tri_gate IS

PORT(din,en:IN STD_LOGIC;  

         dout : OUT STD_LOGIC);

END tri_gate ;

ARCHITECTURE zas OF tri_gate IS

BEGIN

      PROCESS (din,en)

     BEGIN

        IF (en=‘1')  THEN  dout <= din;

        ELSE     dout <= ‘Z’;

         END IF;   

    END PROCESS ;

END zas ;

2008/2009 学年第 一 学期末考试试题答案及评分标准

(A卷)

得分
一、 填空题(20分,每空格1分)

1、试举出两种可编程逻辑器件    CPLD    、   FPGA     。

2、VHDL程序的基本结构包括        库      、     程序包    、       实体      

和     结构体           。

3、more_ _11标识符合法吗?    不合法       。8bit标识符合法吗?  不合法      。

variable标识符合法吗?    不合法       。

4、信号的代入通常用   <=   ,变量用   :=   。

5、表示‘0’‘1’;两值逻辑的数据类型是   bit(位) ,表示‘0’‘1’‘Z’等九值逻辑的数据类型是  std_logic(标准逻辑),表示空操作的数据类型是  NULL  。

6、定义一个信号a,数据类型为4位标准逻辑向量   signal  a  :  std_logic_vector(3 downto 0)   定义一个变量b,数据类型为2位位向量   variable  b  :  bit_vector(1 downto 0)   。

7、<=是     小于等于    关系运算符,又是        赋值运算           操作符。

8、设D0为'1', D1为'0', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是“0101”, D1 & D2 & D3 & D4的运算结果是“1010”。

得分
二、 判断对错并给出判断依据(20分,每小题5分,判断对错2分,给出正确答案3分)

1、进程语句中,不管在何时,process语句后面必须列出敏感信号     (  × )

包含wait语句的进程语句可不列出敏感信号。        

2、VHDL语言与计算机    C语言的没有差别。                         (  × )

●运行的基础

–计算机语言是在CPU+RAM构建的平台上运行

–VHDL设计的结果是由具体的逻辑、触发器组成的数字电路          

●执行方式

–计算机语言基本上以串行的方式执行

–VHDL在总体上是以并行方式工作                                

●验证方式

–计算机语言主要关注于变量值的变化

–VHDL要实现严格的时序逻辑关系                

3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。 (  × )

 “变量(VARIABLES)”改为“信号”。

4、Moore状态机输出只是状态机当前状态的函数,Mealy状态机输出为有限状态机当前值和输入值的函数                                                        (  √ )  

得分
三、判断题(10分)

library ieee;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

以上库和程序包语句有无错误?    有          ,有的话请在原程序相应位置改正。 (2)

entity rom is 

    port(

            addr: in std_logic_vector(0 to 3);

            ce:    in std_logic;

            data:out std_logic_vector(7 downto 0)   ;

        )

end rom;

以上port语句有无错误?    有         ,有的话请在原程序相应位置改正。    (4)

architecture behave of rom is

begin

process(ce,addr)                                                            (6)

    begin 

    if ce='0' then

        case addr is

            when "0000"=>

                data<="10001001";

            when "0001"=>

                data<="10001010";

            when "0010"=>

                data<="10001011";

            when "0011"=>

                data<="10001100";

            when "0100"=>

                data<="10001101";

            when "0101"=>

                data<="10001110";

            when "0110"=>

                data<="10001111";

            when "0111"=>

                data<="10010000";

            when "1000"=>

                data<="10010001";

            when "1001"=>

                data<="10010010";

            when "1010"=>

                data<="10010011";

            when "1011"=>

                data<="10010100";

            when "1100"=>

                data<="10010101";

            when "1101"=>

                data<="10010110";

            when "1110"=>

                data<="10010111";

            when others=>

                data<="10011000";

        end case; 

    else

        data:="00000000";       --data <= “00000000”;        (8)

    end if;                                                (10)

    end process;

end behave;

以上architecture中有哪些错误?请在原程序相应位置改正。

得分
四、 编程题(共50分)

1、根据一下四选一程序的结构体部分,完成实体程序部分(本题8分)

entity MUX4 is 

    port(                                         (2)

        s:    in std_logic_vector(1 downto 0);             (4)

        d:    in std_logic_vector(3 downto 0);             (6)

        y:    out std_logic                              (8)

        ); 

end MUX4;                        

architecture behave of MUX4 is

begin

process(s)

    begin

    if (s="00") then                    

        y<=d(0);                     

    elsif (s="01") then

        y<=d(1);                     

    elsif (s="10") then

        y<=d(2);                     

    elsif (s="11") then

        y<=d(3);                     

    else

        null;                         

    end if;

end process;

end behave;                             

2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为‘0’,否则为‘1’。(本题10分)

process(p,q)                            (2)

    begin

        if g='0' then                    (4)

            if p = q then

                equ <= '0';            (6)

            else 

                equ <= '1';            (8)

            end if;

        else 

            equ <= '1';                (10)

        end if;

    end process;

3、填写完成一个8-3线编码器的VHDL程序(16分)。

Library ieee;

use ieee.std_logic_11.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity eight_tri is 

    port(

            b:    in std_logic_vector(7 downto 0);                   (2)

            en:    in std_logic;

            y:    out    std_logic_vector(2 downto 0)                  (4)

        );

end eight_tri;

architecture a of eight_tri is                                        (6)

signal sel: std_logic_vector(8 downto 0);

    begin

    sel<=en & b;                                               (8)

    y<= “000” when (sel=”100000001”)else

        “001” when (sel=”100000010”)else                          (10)

        “010” when (sel=”100000100”)else

        “011” when (sel=”100001000”)else

        “100” when (sel=”100010000”)else                          (12) 

        “101” when (sel=”100100000”)else

        “110” when (sel=”101000000”)else                          (14)

        “111” when (sel=”110000000”)else                          (16)

        “zzz”;

end a;

4、图中给出了4位逐位进位全加器,请完成其VHDL程序。(本题16分)

library IEEE;

use IEEE.std_logic_11.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

entity full_add is

    port (

            a,b:        in    std_logic_vector (3 downto 0);                   (2)

            carr:     inout  std_logic_vector (4 downto 0);

            sum:        out    std_logic_vector (3 downto 0)

        );

end full_add;

architecture full_add_arch of full_add is

component adder                                                       (4)

port (

            a,b,c:    in    std_logic;

            carr:        inout    std_logic;

            sum:        out     std_logic                                    (6)

    );

end component;

begin

carr(0)<='0';

    u0:adder     port map(a(0),b(0),carr(0),carr(1),sum(0));

    u1:adder     port map(a(1),b(1),carr(1),carr(2),sum(1));                       (8)(10)

    u2:adder     port map(a(2),b(2),carr(2),carr(3),sum(2));                        (12)

    u3:adder     port map(a(3),b(3),carr(3),carr(4),sum(3));                       (14)(16)

end full_add_arch;下载本文

显示全文
专题