(2)74LS139 双2线-4线译码器。这两个译码器完全独立,分别有各自的 数据输入端、译码状态输岀端以及数据输入允许端,其引脚 如图8-4所示,真值表见表8-2(只给出其中一组 A 16 YO 1A 2 15 C Y1 2A G2A 13 Y2 1Y0-4 13 2B G2B-57418138 74LS139 2Y0 G1 6 11 Y4 Y2 11 2Y1 Y7 10Y5 2Y2 GND 8 GND 8 2Y3 图8-374LS138引脚图 图8-474LS139引脚图
17 (2)74LS139 双2线-4线译码器。这两个译码器完全独立,分别有各自的 数据输入端、译码状态输出端以及数据输入允许端,其引脚 如图8-4所示,真值表见表8-2(只给出其中一组)。 17 图8-3 74LS138引脚图 图8-4 74LS139引脚图
表8-274LS139真值表 输入端 输出端 允许选择 Y2 Y G00001 B00 0 11101 0 0 1 0 0 1 注:1表示高电平,0表示低电平,x表示任意 18
18
以74LS138为例,如何进行地址分配。 例如,要扩8片8KB的RAM6264,如何通过74LS138把64KB空 间分配给各个芯片? 由74LS138真值表可知,把G1接到+5V,G2A*、G2B 接地,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C B、A端,由于对高3位地址译码,这样译码器有8个输出Y7 Y0*,分别接到8片6264的各“片选”端,实现8选1的片选。 低13位地址(P2.4~P2.0,P0.7~P0.0)完成对选中的6264芯 片中的各个存储单元的“单元选择”。这样就把64KB存储器空 间分成8个8KB空间了
19 以74LS138为例,如何进行地址分配。 例如,要扩8片8KB的RAM 6264,如何通过74LS138把64KB空 间分配给各个芯片? 由74LS138真值表可知,把G1接到+5V,G2A*、G2B* 接地,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、 B、A端,由于对高3位地址译码,这样译码器有8个输出Y7*~ Y0*,分别接到8片6264的各“片选”端,实现8选1的片选。 低13位地址(P2.4~P2.0,P0.7~P0.0)完成对选中的6264芯 片中的各个存储单元的“单元选择”。这样就把64KB存储器空 间分成8个8KB空间了。 19
64KB地址空间分配如图8-5所示。 这里采用全地址译码方式。因此,AT89S51发出16位地址时, 每次只能选中某一芯片及该芯片的一个存储单元 (P27引脚)QP26引脚)(P2.5引脚) A15A14A13 YO 0 0000H- 1FFFH AT89S52 +5ⅴ G1 Y1 2000H- 3FFFH 4000H N SFFFH G2B 0000 6000HN 7FFFH 2A Y4 8000H- 9FFFH Y5 A00oH N BFFFHI P26 B Y6 C000H N DFFFH E00OHN FFFFH 74LS138 译码器 图8-5 64KB地址空间划分成8个8KB空间
20 64KB地址空间分配如图8-5所示。 这里采用全地址译码方式。因此,AT89S51发出16位地址时, 每次只能选中某一芯片及该芯片的一个存储单元 20 图8-5 64KB地址空间划分成8个8KB空间
如何用74LS138把64KB空间全部划分为4KB的块呢?4KB空间 需12条地址线,而译码器输入只有3条地址线(P2.6~P2.4), P2.7没有参加译码,P2.7发出的0或1决定选择64KB储器空间 的前32KB还是后32KB,由于P2.7没有参加译码,就不是全译码 方式,前后两个32KB空间就重叠了。那么,这32KB空间利用 74LS138译码器可划分为8个4KB空间。 如果把P2.7通过一个非门与74LS138译码器G1端连接起来, 如图8-6所示,就不会发生两个32KB空间重叠的问题了。这时, 选中的是64KB空间的前32KB空间,地址范围为0000H~7FFE
21 如何用74LS138把64KB空间全部划分为4KB的块呢?4KB空间 需12条地址线,而译码器输入只有3条地址线(P2.6~P2.4), P2.7没有参加译码,P2.7发出的0或1决定选择64KB存储器空间 的前32KB还是后32KB,由于P2.7没有参加译码,就不是全译码 方式,前后两个32KB空间就重叠了。那么,这32KB空间利用 74LS138译码器可划分为8个4KB空间。 如果把P2.7通过一个非门与74LS138译码器G1端连接起来, 如图8-6所示,就不会发生两个32KB空间重叠的问题了。这时, 选中的是64KB空间的前32KB空间,地址范围为0000H~7FFFH。 21