VHDL试卷

更新时间:2023-03-08 05:12:49 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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)的设计方法

1

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

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

可以使用多个进程语句。

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

逻辑运算符<关系运算符<乘法运算 得分 三、判断题(10分)

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

library ieee;

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

(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)

2

case addr is when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\

| |

when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when others=> data<=\end case; (8)

else data<=\ 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:

3

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分)

a b

LIBRARY IEEE;

&

y

USE IEEE.STD_LOGIC_1164.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分)。

4

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.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 \ WHEN \ WHEN \ (10) WHEN \ WHEN \ WHEN \ WHEN \ (12) WHEN \

5

WHEN OTHERS=> y <= \ END CASE; ELSE

y <= \ (14) END IF; END PROCESS; (16) END rtl;

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

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.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 ;

6

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语句的进程语句可不列出敏感信号。

7

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; use ieee.std_logic_1164.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;

8

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

architecture behave of rom is begin

process(ce,addr) (6) begin if ce='0' then case addr is when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when others=> when \ data<=\ data<=\ end case; else data:=\ --data <= “00000000”; (8) end if; (10) end process; end behave;

以上architecture中有哪些错误?请在原程序相应位置改正。 得分 四、 编程题(共50分)

9

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=\ y<=d(0); elsif (s=\ y<=d(1); elsif (s=\ y<=d(2); elsif (s=\ 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)

10

end if; end process;

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

use ieee.std_logic_1164.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分)

11

library IEEE;

use IEEE.std_logic_1164.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); 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 port ( a,b,c: in std_logic; carr: inout std_logic; sum: out std_logic );

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)); u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2)); u3:adder port map(a(3),b(3),carr(3),carr(4),sum(3)); end full_add_arch;

12

2) 4) 6) 8)(10)12) 14)(16) ( ( ( ( ( (

2008/2009 学年第 一 学期末考试试题(B卷)

得分

一、 填空题(30分,每空格1分) 1、同A

2、VHDL程序的基本结构至少应包括 实体 、 结构体 两部分和对 库 的引用声明。

3、1_Digital标识符合法吗? 否 , \\12 @ +\\ 呢? 合法 。 4、在VHDL的常用对象中, 信号 、 变量 可以被多次赋予不同的值, 常量 只能在定义时赋值。

5、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、 Out 、 inout 、 buffer 。 6、VHDL语言中std_logic类型取值 ‘Z’ 表示高阻,取值 ‘X’ 表示不确定。

7、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。 8、位类型的初始化采用(字符/字符串) 字符 、位矢量用 字符串 。 9、进程必须位于 结构体 内部,变量必须定义于 进程/包/子程序 内部。 10、并置运算符 & 的功能是 把多个位或位向量合并为一个位向量 。 11、进程执行的机制是敏感信号 发生跳变 。

12、判断CLK信号上升沿到达的语句是 if clk’event and clk = ‘1’ then . 13、 IF 语句各条件间具有不同的优先级。

14、任何时序电路都以 时钟 为驱动信号,时序电路只是在 时钟信号的边沿 到来时,

其状态才发生改变。

15、 Moore 状态机输出只依赖于器件的当前状态,与 输入信号 无关。 得分 13

二、 判断对错并改正(12分,每小题3分)

1、CONSTANT T2:std_logic <= ?0?; ( 错 ) 改正:把<= 换为 := 。

2、若某变量被定义为数值型变量,未赋初始值时默认值为‘0’。 ( 错 ) 改正:把‘0’的单引号去掉。

3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。 ( 错 ) 改正:“变量(VARIABLES)”改为“信号”。

4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr,

可以直接对wr赋值。

( 错 ) 改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机类型wr,需要定义一个该类型的对象,才可以对该对象赋值。 得分 三、 简答(8分,每小题4分) 1、简述如何利用计数器精确控制时序。

? 只要知道晶振频率f,即可知道周期T=1/f;

? 使用一个计数器,可以通过计数值n,精确知道当计数值为n时消耗的时间t=nT; ? 上例中以n为控制条件,可以控制其它信号在某时刻变高,某时刻变低,从而产生

精确时序;

例如:

? PROCESS (clr,clk) ? BEGIN

? IF(clr=1) THEN

? Count_B<=“00000000”; ? q <= ‘0’;

? ELSIF (clk'EVENT AND clk = ‘1’ ) THEN ? Count_B<=count_B + 1;

? IF (Count_B = “00000000”) THEN ? q <= ‘1’;

? ELSIF (Count_B = “00000001”) THEN ? q <= ‘0’;

? ELSIF (Count_B = “00000011”) THEN ? q <= ‘1’;

? ELSIF (Count_B = “00000100”) THEN ? q <= ‘0’;

14

? END IF; ? END IF; ? END PROCESS;

2、简述moore状态机和mealy状态机的区别。 从输出的时序上看,Mealy机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。Moore机的输出则仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化。 Moore型状态机:次态=f(现状,输入),输出=f(现状); Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入); 得分 现态输入次态逻辑次态状态寄存器现态输出逻辑输出输入次态逻辑次态状态寄存器现态输出逻辑输出现态Moore型Mealy型四、 编程(共50分)

1、完成下图所示的触发器。(本题10分)

CLR CLK D library IEEE;

use IEEE.std_logic_1164.all;

entity VposDff is

15

Q QN

port (CLK, CLR, D: in STD_LOGIC; ----------2分 Q, QN: out STD_LOGIC ); ----------4分 end VposDff;

architecture VposDff_arch of VposDff is begin

process ( CLK, CLR ) ----------6分 begin

if CLR='1' then Q <= '0'; QN <='1'; elsif CLK'event and CLK='1' then

Q <= D; QN <= not D; ----------8分

end if;

end process; ----------10分 end VposDff_arch;

2、完成以下4位全加器代码(本题10分)

library IEEE;

use IEEE.std_logic_1164.all;

entity full_add is port (

a,b: in std_logic_vector (3 downto 0); cin: in std_logic; cout: out std_logic;

sum: out std_logic_vector (3 downto 0) ); end full_add;

architecture full_add_arch of full_add is component adder

port ( a,b,c: in std_logic; carr: out std_logic; sum: out std_logic ); end component;

signal c1,c2,c3: std_logic; 2分

begin

u0:adder port map(a(0),b(0),cin,c1,sum(0)); 4分 u1:adder port map(a(1),b(1),c1,c2,sum(1)); 5分 u2:adder port map(a(2),b(2),c2,c3,sum(2)); 6分

16

u3:adder port map(a(3),b(3),c3,cout,sum(3)); 10分 end full_add_arch;

3、补充完整如下代码,使之完成4状态不断循环。(本题10分)

ARCHITECTURE arc OF ss IS

type states is ( st0,st1,st2,st3 ); 2分 signal outc: states; 4分 BEGIN

PROCESS(clk) BEGIN IF reset='1' then outc <=st0 ; 6分 elsif clk'event and clk='1' then CASE outc IS WHEN st0 => outc <= st1; 7分 WHEN st1 => outc <= st2; 8分 WHEN st2 => outc <= st3; 9分 WHEN st3 => outc <= st0; 10分 WHEN OTHERS => outc <=st0; END CASE; end if; END PROCESS; END arc;

4、设计异或门逻辑:(本题20分)

如下异或门,填写右边的真值表。(此项5分)

A 0 0 1 1 B 0 1 0 1 Y 0 1 1 0 其表达式可以表示为:(此项5分)

17

a 这一关系图示如下:

abb&&+y试编写完整的VHDL代码实现以上逻辑。可以采用任何描述法。(此项10分)

library ieee;

use ieee.std_logic_1164.all; 1分 entity yihuo1 is

port(

a,b :in std_logic;

y :out std_logic );

end yihuo1; 4分 architecture yihuo1_behavior of yihuo1 is

begin 7分

process(a,b) y<=a xor b; begin (第2种写法)

if a=b then

y<='0';

else

y<='1';

end if;

end process;

end yihuo1_behavior; 10分

18

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

(A卷)

得分

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

1、VHDL是否区分大小写? 不区分 。

2、digital_ _8标识符合法吗? 不合法 。12_bit标识符合法吗? 不合法 。

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

3、结构体有三种描述方式,分别是 数据流 、 行为 、 和 结构化 。

4、请分别列举一个常用的库和程序包 library ieee 、 use ieee.std_logic_1164.all 。

5、一个信号处于高阻(三态)时的值在VHDL中描述为 ‘Z’ 。 6、将一个信号width定义为一个4位标准逻辑向量为

signal width : std_logic_vector(3 downto 0) 。

7、/=是 不相等 操作符,功能是 在条件判断是判断操作符两端不相等 。 8、设D0为'0', D1为'1', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是 “0110” ,(D3 or D2)and(D1 and not D0)的运算结果是: ‘1’ 。 9、赋值语句是(并行/串行) 并行 执行的,if语句是(并行/串行) 串行 执行的。

10、请列举三种可编程逻辑器件: EEPROM 、 GAL 、 FPGA 。 得分 二、 简答(20分,每小题5分) 1、简述VHDL程序的基本结构。

19

(1) (2) (3)

(5) 若答出配置也可加1分

程序包 实体

结构体

2、简述信号与变量的区别。 信号延时赋值,变量立即赋值

(2) (4)

信号的代入使用<=,变量的代入使用:=;

信号在实际的硬件当中有对应的连线,变量没有 (5)

3、简述可编程逻辑器件的优点。

? 集成度高,可以替代多至几千块通用IC芯片

– 极大减小电路的面积,降低功耗,提高可靠性

? 具有完善先进的开发工具

– 提供语言、图形等设计方法,十分灵活 – 通过仿真工具来验证设计的正确性

(2) (3) (4) (5)

(1)

? 可以反复地擦除、编程,方便设计的修改和升级

? 灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间 ? 保密性好

4、试比较moore状态机与mealy状态机的异同。 Moore输出只是状态机当前状态的函数

(3) (5)

Mealy输出为有限状态机当前值和输入值的函数 得分 三、判断题(10分)

library ieee;

use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

use ieee.std_logic_1164.all;

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

20

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 case addr is when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ else data:=\ --data <= “00000000”; end if; end process; end behave;

21

(6) when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when others=> data<=\end case; (8) (10)

以上architecture中有哪些错误?请在原程序相应位置改正。 得分 四、 编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)

1、用IF语句编写一个二选一电路,要求输入a、b, sel为选择端,输出q。(本题10分)

Entity sel2 is Port (

a,b : in std_logic; sel : in std_logic; q : out std_logic ); End sel2;

Architecture a of sel2 is begin

if sel = ‘0’ then

q <= a;

(6)

(3)

else

q <= b;

(9)

end if;

(10)

end a;

2、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。(本题10分)

Process(reset,clk) begin

(2)

if reset = ‘0’ then

q <= “0000”;

(4) (6)

elsif clk’event and clk = ‘1’ then

22

q <= q + 1; (9)

end if;

(10)

end process;

3、填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。

8 -3线编码器真值表

en 1 1 1 1 1 1 1 1 0 b 00000000 00000010 00000100 00001000 00010000 00100000 01000000 10000000 xxxxxxxx y0y1y2 000 001 010 011 100 101 110 111 高阻态

entity eight_tri is port( b: in std_logic_vector(7 downto 0); en: in std_logic; y: out std_logic_vector(2 downto 0) ); end eight_tri;

architecture a of eight_tri is

signal sel: std_logic_vector(8 downto 0); begin sel<=en & b; y<= “000” when (sel=”100000001”)else “001” when (sel=”100000010”)else “010” when (sel=”100000100”)else “011” when (sel=”100001000”)else “100” when (sel=”100010000”)else “101” when (sel=”100100000”)else “110” when (sel=”101000000”)else

23

(3)

(4)

end a;

“111” when (sel=”110000000”)else “zzz”;

(9) (10)

4、根据已给出的全加器的VHDL程序,试写出一个4位逐位进位全加器的VHDL程序。(本题15分)

library IEEE;

use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all;

entity adder is port ( a,b,c: in std_logic; carr: inout std_logic; sum: out std_logic ); end adder;

architecture adder_arch of adder is begin sum <= a xor b xor c; carr <= (a and b) or (b and c) or (a and c);

end adder_arch;

entity full_add is port ( a,b: in std_logic_vector (3 downto 0); carr: inout std_logic_vector (4 downto 0); sum: out std_logic_vector (3 downto 0) ); end full_add; (5)

architecture full_add_arch of full_add is component adder port ( a,b,c: in std_logic; carr: inout std_logic;

24

sum: out std_logic );

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)); u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2)); u3:adder port map(a(3),b(3),carr(3),carr(4),sum(3)); end full_add_arch; 得分

(10)

(15)

五、附加题(10分,本题可产生附加分,全卷不能超过100分)

完成下面moore状态机程序,该设计为一个存储控制器状态机。能够根据微处理器的读写周期,分别对存储器输出写使能WE和读使能OE信号。

工作过程:存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。当上电复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。判断的依据是,当read_write有效时为读操作,否则为写操作。也就是说非读即写。读操作时,OE信号有效,写操作时,WE信号有效。当READY信号有效时,表示读本次作业处理完成,并使控制器恢复到初始状态。

控制器真值表和状态图如下。

存储控制器真值表 状态 OE 空闲(IDLE) 判断(DECISION) 写(WRITE) 读(READ)

0 0 0 1 输出 WE 0 0 1 0 25

本文来源:https://www.bwwdw.com/article/aka.html

Top