文档库

最新最全的文档下载
当前位置:文档库 > 第10章习题解答

第10章习题解答

10.1 简述与或阵列型可编逻辑器件的原理、结构特点。

答:原理: 由逻辑代数知,任何逻辑函数都可表示为输入变量的与或表达式。因此,与或阵列型PLD 以可编程的与门阵列和或门阵列为核心组成逻辑功能块,实现任意逻辑函数。

结构特点:PLD 采用先进的集成电路技术制造,内部结构复杂。包含许多逻辑门、缓冲器、存储器、编程元件等,缓冲器通常提供输入变量和反馈变量的原和反;由与阵列产生这些变量的乘积项;由或阵列求乘积项的逻辑和;为了满足不同应用的要求,输出电路可包含OC 输出、三态输出、寄存器输出等。

10.2 利用PROM 器件实现下列逻辑函数,并画出编程阵列图。

(1))14,12,7,6,4,3(1m F ∑= (2))12,8,7,4,3,2,0(2m F ∑= (3))15,11,9,7,3,1(3m F ∑= 解:画出编程阵列图:

10.3 用PROM 实现下列逻辑函数:

BC A C A C AB F ++=1 ;BD ABC BCD AC BC A F ++++=2

解:通过化简得: ∑=)15,14,13,12,11,10,9,8,7,6,3,2(1m F ∑=

)15,14,12,11,10,9,8,7,6,4,3,2,1,0(m F 2

1

F A 2F B 3

F C D

A

B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

全部最小项

F(A,B,C,D)

10.4 试用PROM 器件设计一个4位二进制同步加法计数器。 解:1. 状态转换图:

2. 卡诺图:

1

F A 2

F B C D

A

B C D 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

全部最小项

F(A,B,C,D)

1000100110101011110011011110111101110110010101000011001000010000←←←←←←←↓↑→→→→→→→0

123Q Q Q Q 1011

110010101001

10

11110000111011011101111000011001010100110100001000010010

1101002

3011

0111213n

n n

n n n n n Q Q Q Q Q Q Q Q ++++

3. 状态方程:

n n n

n n n n n n n

n Q Q Q Q Q Q Q Q Q Q Q 012__3

__23

__1

3__0

313+++=+ n n n n n n n n Q Q Q Q Q Q Q Q 01__2

__12

__02

12

++=+ __0

1

__1

11n n n n n Q Q Q Q Q +=+ __010

n n Q Q

=+

4. 驱动方程:(采用D 触发器和PLOM 器件实现)

第10章习题解答

=

+++=m

n n n n n n n n n n Q Q Q Q Q Q Q Q Q Q D )14,13,12,11,10,9,8,7(012__3

__2

3

__1

3

__0

3

3

∑=++=m n

n n n n n n

Q Q Q Q Q Q Q D )14,13,12,11,6,5,4,3(01__2

__1

2__022

∑=+=m n n

n n Q Q Q Q D )14,13,10,9,6,5,2,1(__0

1

__11

∑==m n Q D )14,12,10,8,6,4,2,0(__0

5. 电路图:

1

1

1

1

10

101111010001000000101101002

3011

3n

n n

n n Q Q Q Q Q +n n n n n n n n n n n Q

Q Q Q Q Q Q Q Q Q Q

1

2

__3

__2

3

__1

3

__0

3

13

+++=+0

1

10101111101101010000101101002

30112

n

n n

n n Q Q Q Q Q +n

n n n n n n n Q Q Q Q Q Q Q Q

01__2

__1

2

__0

2

12

++=+1

1

10101011101001101000101101002

3011

1n

n n

n n Q Q Q Q Q +__0

1

__1

11

n n n n n Q

Q Q Q Q

+=+1

1

10100111100101100100101101002

3011

0n

n n

n n Q Q Q Q Q +__0

10

n n Q

Q

=+

10.5 用PLA(与、或阵列均可编程的可编程逻辑器件)实现的组合逻辑电路如图P10.5所示,分析电路的逻辑功能 。

解:从中可得到:

AC B A C B Y 1++=, AB BC AC Y 2++=

10.6 用PLA(与、或阵列均可编程的可编程逻辑器件)实现的显示译码电路如图P10.6所示。(1)根据PLA 结构写出函数a ,b ,c ,d ,e ,f ,g 的逻辑表达式。

(2)分析电路功能,说明当输入变量ABCD 从0000变化到1111时,abcdefg 后接的七段LED 数码管显示的相应字形。

3

D 3Q 2

D 2Q 1D 1Q 0

Q 3

Q 1Q 0Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1D FF0 C1 Q Q

1D FF1 C1 Q Q

1D FF2 C1 Q Q 1D FF3 C1 Q Q

D 2

Q CP

1

1

1

A

B C

Y 1 Y 2

图P10.5

解: 可以得出函数表达式: (1)

D C B CD A D B A C B A a +++= C B B A D C CD A b +++= D B B A C B c ++= C B D C D B D C B d +++= D C D B e +=

D BC D C D C B C B A f +++= C B C B D BC C B A g +++=

(2) ABCD 从0000~1111变化时七段LED 数码管相应显示0,1,…,9和如下 六种图形:

6

5

10.7 试说明GAL 和PROM 在电路结构上有何不同。

答: PROM 是采用固定的与阵列和可编程的或阵列组成的PLD,由于输入变量的增加,会引起存储容量的急剧上升,只能用于简单组合电路的编程。

GAL 沿用了PAL 或阵列固定与阵列可编程结构,而对PAL 的输出I/O 结构进行了改进,

1

1

1

1

a b c d A

B

C

D

e f g

c a

b d

e

f g 图P10.6

增加了输出逻辑宏单元OLMC(outputLogicMacroCell),OLMC 设有多种组态,使得每个I/O 引脚可配置成专用组合输出,组合输出双向口,寄存器输出,寄存器输出双向口,专用输入等多种功能,为电路设计提供了极大的灵活性。

10.8 试配置GAL OLMC (12)的五种工作模式,画出电路图。 答:可以得出如下:

电路

图如下:

10.9 试用GAL16V8器件实现一个3线-8线译码器。

解:3线-8线译码器有3个输入A 、B 、C ,8个低电平有效的输出Y 0~Y 7,3个使能输入端:高电平有效的EN 1和低电平有效的EN 2A 、EN 2B ,1个低电平有效的输出使能端OE 。当OE=0时,有

SYN AC0 AC1(n) 工作模式 备 注 1 0 1 专用输入 实现组合逻辑电路。

第1和11管脚作为数据输入端。

1 0 0 专用组合输出 1 1 1 反馈组合输出 0 1 1 时序组合输出 实现时序逻辑电路。 第1和11管脚分别是CK 和OE 0 1 0 寄存器输出 图10.1.7 OLMC 的5种工作模式

XOR (n)

Q

C1 Q 1D

CK

OE

XOR (n)

CK

OE XOR (n)

XOR (n) V CC

I/O(n)

I/O(n)

I/O(n)

I/O(n)

I/O(n)

I/O(m)

OLMC

OLMC

OLMC

OLMC

OLMC

(a) 专用输入

(b) 专用组合输出

(c) 反馈组合输出

(d) 时序组合输出 (e) 寄存器输出

C B A EN EN EN Y 2B 2A 10=,C B A EN EN EN Y 2B 2A 11=,C B A EN EN EN Y 2B 2A 12=,

BC A EN EN EN Y 2B 2A 13=,C B A EN EN EN Y 2B 2A 14=,C B A EN EN EN Y 2B 2A 15=, C AB EN EN EN Y 2B 2A 16=,ABC EN EN EN Y 2B 2A 17=

由上面8个表达式可知每个输出都是一个乘积项,就此编程可得一个三态的三线-八线译码器。编程后GAL16V8內部结构如下图所示:

10.10 试用GAL16V8器件设计一个十进制同步加法计数器。

解: 计数器应具有清零端 CLR ,设CLR 为高电平清零、为低电平计数器使能。设计数脉冲的输入端为CLK 。具有加计数功能,且能自启动。当 OE=0 时,计数器输出计数结果;OE=1 时,计数器的输出呈高阻态。

用GAL16V8实现十进制加法计数器的参考框图如下:

(1)

(19)Y 0

(18)Y 1

(17)Y 2

(16)Y 3

(15)Y 4

(14)Y 5

(13)Y 6

(12)Y 7

(11)

OE(2)

A(3)

B(4)

C(5)

EN 1(6)

EN 2A (7)

EN 2B (8)

(7)

1 14

2 15 11 16 17 GAL16V8

CLK CLR OE

Q 3 Q 2 Q 1 Q 0

用GAL16V8实现十进制加法计数器的VHDL源程序如下:

module GAL16V8 10P

title 'decimal counter

cnt 10p device 'GAL16v8';

Clk,Clr,OE pin 1, 2, 11;

Q3,Q2,Q1,Q0 pin 14, 15, 16, 17 istype 'reg_D, invert';

Ck, X, Z, P= .C. , .X., .Z., .P.;

" Counter States

S0 = ^b0000; S4 = ^b0100; S8 = ^b1000; S12= ^b1100;

S1 = ^b0001; S5 = ^b0101; S9 = ^b1001; S13= ^b1101;

S2 = ^b0010; S6 = ^b0110; S10= ^b1010; S14= ^b1110;

S3 = ^b0011; S7 = ^b0111; S11= ^b1011; S15= ^b1111;

equations

[Q3,Q2,Q1,Q0].c : = Clk;

[Q3,Q2,Q1,Q0].oe : = !OE;

state_diagram [Q3,Q2,Q1,Q0]

State S0: IF !Clr THEN S1 ELSE S0;

State S1: IF !Clr THEN S2 ELSE S0;

State S2: IF !Clr THEN S3 ELSE S0;

State S3: IF !Clr THEN S4 ELSE S0;

State S4: IF !Clr THEN S5 ELSE S0;

State S5: IF !Clr THEN S6 ELSE S0;

State S6: IF !Clr THEN S7 ELSE S0;

State S7: IF !Clr THEN S8 ELSE S0;

State S8: IF !Clr THEN S9 ELSE S0;

State S9: GOTO S0;

"Ensure return from illegal state

State S10: GOTO S0;

State S11: GOTO S0;

State S12: GOTO S0;

State S13: GOTO S0;

State S14: GOTO S0;

State S15: GOTO S0;

end

10.11 简述ispLSI 1016的组成,各部分的功能。

答:

器件主要包含32个I/O单元、16个GLB、互连布线区和时钟分配网络。8个GLB A0~A7与16个I/O单元I/O0~I/O15组成一个宏模块。余下的组成另一个宏模块。通过输入布线区将I/O单元的输入信号引到全局布线区,任何一个GLB可从全局布线区选择输入信号作为其输入。输出布线区可将GLB的输出灵活地与宏模块内的任何4个I/O单元相联。I/O单元则是内部逻辑和器件引脚的互连电路,可设置为输入、输出和双向模式。

10.12 解释在系统编程的含义。为什么ispLSI 1016 可以在系统编程?

答:ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程

写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP 方式擦除或再编程。ISP 技术是未来发展方向。

ispLSI 1016器件的编程接口信号如图10.11所示。当ispEN=0时,器件处于编程状态。除编程接口引脚外,PLD 的其余引脚全部为高阻态,对外部元件无影响,故可实现在系统编程。

10.13 PROM 、PLA 、PAL 、GAL 、CPLD 、FPGA 中,哪些是高密度PLD ?哪些是低密度PLD ? 答: PLD 按集成度(以700门/片为界)可以分为低密度PLD 和高密度PLD 。低密度PLD 主要有PROM 、PLA 、可编程阵列逻辑PAL 和通用阵列逻辑GAL ,高密度PLD 主要有CPLD 和现场可编程门阵列FPGA 等几种类型。 10.14 简述FPGA 的工作原理。

答: 目前FPGA 中多使用4输入的LUT ,所以每一个LUT 可以看成一个有4位地址线的16x1的RAM 。 当用户通过原理图或HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。 10.15 比较快速互连FPGA 和分段互连FPGA 的特点。

答: 分段互连FPGA 由可配置的逻辑块CLB 、输入/输出块IOB 和可编程的互连资源组成。CLB 实现基本逻辑功能,大量CLB 通过可编成的互连导线互连,实现复杂的逻辑功能,IOB 则是引脚与芯片内部逻辑的接口电路。

快速互连FPGA 将位置邻近的8个逻辑单元LE 局部互连形成较强功能的逻辑阵列块LAB ,然后用贯穿整个芯片的行、列导线编程连接LAB 和输入/输出单元IOE ,实现复杂的逻辑功能。

分段互连的优点是连线灵活,缺点是连线的信号传输延时不易估计。因为即使是同一设计的2次布线也不会相同。故信号的传输路径不同,传输延时也不同。如果希望估计信号的传输延时,可采用快速互连的FPGA 。

10.16 分别说明可编程逻辑器件PROM ,PLA ,PAL ,GAL ,CPLD 及FPGA 各自的特点。 答:PROM 用户可以用专用的编程器将自己的资料写入,但是这种机会只有一次,一旦写入后也无法修改,若是出了错误,已写入的芯片只能报废。

可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD 由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述. 可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。 PLA 器件既有现场可编程的,也有掩膜可编程的。 PAL 由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输.出可以通过触发器有选择地被置为寄存状态。

图10.11 ispLSI 的编程接口信号

IspLSI

IspEN

SCLK MODE SDI

SDO

通用阵列逻辑GAL采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元。

CPLD和FPGA都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。10.17 在下列应用场合,选用哪类PLD最为适合。

(1)小批量定型的产品中的中小规模逻辑电路。

(2)产品研制过程中需要不断修改的中小规模逻辑电路。

(3)要求能以遥控方式改变其逻辑功能的逻辑电路。

答:

(1)选用PAL比较合适

(2)选用GAL比较合适

(3)选用ISP-PLD比较合适

10.18 常用的在系统可编程逻辑器件有哪些?各有什么特点?其与RAM有什么区别?

答:

常用的在系统可编程逻辑器件有:PAL ,GAL,CPLD及FPGA。

PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输.出可以通过触发器有选择地被置为寄存状态。

通用阵列逻辑GAL采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元。

CPLD和FPGA都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。

区别:RAM指的都是半导体存储器,而RAM通常都是在掉电之后就丢失数据。

可编程逻辑器件(PLD),它能够完成各种数字逻辑功能,能以乘积和的形式完成大量的组合逻辑功能。

10.19 用MUX+PLUS 错误!未找到引用源。(或其替代软件QUARTUS 错误!未找到引用源。)设计一个一位全加器电路,并进行仿真分析。解:设计一位全加器电路如下:

(1) 在MAX+plusⅡ管理器的File \ New内,新建一个图形文件;

(2) 半加器的基础之上,组成1位全加器,如图19.1所示;

第10章习题解答

图19.1 1位全加器组器件:OR2、INPUT、OUTPUT

(3) 选择器件型号,单击Assign \ Device菜单,屏幕如图

(4) 保存文件,文件名不可与半加器器件的文件名相同;

(5) 归属工程文件File \ Project \ Set Project to Current File;

(6) 系统进行编译;

第10章习题解答

图19.2 选择待编程芯片的屏幕

(7) 程序下载实验箱,必须做手动接口的引脚分配,Assign \ Pin / Location / Chip;如图19.3;

第10章习题解答

图19.3 引脚分配图

( 8) 单击按钮,屏幕显示如图19.2所示。

(9) 在图19.3中点击“Configure”或者选择“Program”即可进行下载;

(10) 如有问题,点击(1 Programming File),选择相应的下载文件;

(11) 在实验箱上验证实验结果;

(12) 绘制全加器真值表;

10.20 简述VHDL的功能和基本结构。

答:硬件描述语言HDL用文本形式描述硬件电路的逻辑功能及连接关系,它能比电原理图更有效、更方便和简洁地表达硬件电路的特征。

一个数字系统的VHDL设计通常由若干个VHDL文件组成,每个文件主要包含以下部分中的一个或全部:实体说明,结构体,配置,程序包,VHDL语言的基本设计单元就是一个设计实体,对应于一个数字电路。实体说明规定设计实体(数字电路)的输入、输出端口,是设计实体与外界的一个通信界面。而结构体则用于描述设计实体输入、输出端口间的逻辑关系。

10.21 用VHDL语言描述一个2输入同或门电路。

解:VHDL的源代码如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY tor2 IS

PORT( a,b : IN STD_LOGIC;

y: OUT STD_LOGIC);

END tor2;

ARCHITECTURE tor2_arc1 OF tor2 IS

BEGIN

Y<=NOT(a XOR b);

END tor2_arc1;

10.22 用VHDL语言描述8线-3线优先编码器。

解:VHDL的源代码如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY encoder IS

PORT(d : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END encoder;

ARCHITECTURE rtl OF encoder IS

BEGIN

PROCESS(d)

BEGIN

CASE d IS

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

WHEN"10111111"=>q<="110";

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

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

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

WHEN"11111011"=>q<="010";

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

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

END CASE;

END PROCESS;

END rel;

10.23 用VHDL语言描述具有异步复位/置位功能的D触发器

解:VHDL的源代码如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY async _rdff IS

PORT( d,clk : IN STD_LOGIC;

reset : IN STD_LOGIC;

q , qb : OUT STD_LOGIC);

END async_rd f;

ARCHITETURE rtl1 OF async_rd ff IS

BEGIN

PROCESS (clk, reset)

BEGIN

IF( reset = '0' ) THEN

q <= '0';

qb <='1';

ELSIF ( clk ' EVENT AND clk = '1' ) THEN

q <=d;

qb <= NOT d;

END IF;

END PROCESS;

END rtl1;

10.24 用VHDL语言描述一个5进制加法计数器。

解:引脚定义:

reset 复位信号,低电平有效

en 计数控制

clk 时钟

qa,qb,qc, 计数器输出

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count5 IS

PORT(clk,reset,en: in STD_LOGIC;

qa,qb,qc: out STD_LOGIC);

END count5;

ARCHITECTURE behave OF count5 IS

SIGNAL count_3: STD_LOGIC_VECTOR(2 downto 0);

BEGIN

qa<=count_3(0);

qb<=count_3(1);

qc<=count_3(2);

PROCESS(clk,reset)

BEGIN

IF (reset='0') THEN

count_3<="000";

ELSIF(clk'event AND clk='1') THEN

IF(en='1') THEN

IF(count_3="100") THEN

count_3<="000";

ELSE

count_3<=count_3+'1';

END IF;

END IF;

END IF;

END PROCESS;

END behave;

10.25分析下面的VHDL语言程序,说明该程序描述的是什么逻辑功能的电路。

程序引脚定义: Reset--复位

en --计数控制

clk --时钟

qa,qb,qc,qd --计数器输出

LIBRARY ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity count12 is

port(clk,reset,en: in std_logic;

qa,qb,qc,qd: out std_logic);

end count12;

architecture behave of count12 is

signal count_4: std_logic_vector(3 downto 0);

begin

qa<=count_4(0);

qb<=count_4(1);

qc<=count_4(2);

qd<=count_4(3);

process(clk,reset)

begin

if (reset='0') then

count_4<="0000";

elsif(clk'event and clk='1') then

if(en='1') then

if(count_4="1011") then

count_4<="0000";

else

count_4<=count_4+'1';

end if;

end if;

end if;

end process;

end behave;

解:该程序描述的是一个同步十二进制加法计数器。