为某8位机(地址总线为16条A15-A0)设计一个32KB容量的存储器。要求采用2732和6264芯片及74LS138译码器,其中4Kx8b的EPROM芯片2732构成8KB EPROM区,地址从0000H开始;采用8Kx8b的SRAM芯片6264构成24KB RAM区,地址从2000H开始。采用全译码法产生片选信号。试画出存储器片选信号译码电路,并指出每片存储芯片的地址范围。
时间: 2025-08-30 18:16:31 AIGC 浏览: 8
<think>嗯,用户的问题是关于在8位机上设计一个32KB的存储器,使用2732 EPROM和6264 SRAM芯片,还有74LS138译码器,全译码法。需要确定片选信号电路和地址范围。首先,我需要回顾一下相关的知识,比如地址总线的位数、存储芯片的容量、译码器的使用方式等。
首先,用户提到是8位机,地址总线有16条,也就是16位地址,可以寻址64KB的内存空间(因为2^16=65536=64KB)。但用户需要设计的是32KB的存储器,可能是指整个存储系统由ROM和RAM组成,总容量32KB?不过后面提到使用2732(4K×8)和6264(8K×8),可能需要计算具体需要多少片。
不过用户的问题可能更具体:比如如何组合这些芯片,使用74LS138进行全译码,确定每个芯片的地址范围。首先,需要明确每个芯片的容量。2732是4KB的EPROM(4K×8),6264是8KB的SRAM(8K×8)。假设用户需要总容量是32KB,那么可能需要多个这样的芯片组合。但问题中可能没有明确说明ROM和RAM各自的大小,所以需要进一步分析。
用户给出的例子中,引用了之前的题目,比如使用2732和6116设计16KB ROM和8KB RAM。而当前的问题可能类似,但具体参数不同。现在用户的问题是用2732和6264,设计32KB的存储器,可能包括ROM和RAM部分,但需要确定各自的容量分配。或者可能用户只是需要将多个2732和6264组合成32KB的总容量?不过2732是4KB,6264是8KB,可能需要计算如何组合到总容量32KB。
不过根据用户的问题描述,可能具体是要设计一个包含EPROM和SRAM的32KB存储器,使用这两种芯片和74LS138。需要先确定各芯片的数量。例如,假设用户想要16KB的EPROM和16KB的SRAM,那么EPROM用2732的话,需要4片(4×4KB=16KB),SRAM用6264的话,需要2片(2×8KB=16KB)。但总容量是32KB。或者可能其他组合?
不过用户的问题可能更偏向于如何将多个芯片组合起来,使用全译码法,通过74LS138生成片选信号,并为每个芯片分配唯一的地址范围。这里的关键是确定地址线如何连接,译码器的输入如何选择,以及如何确保每个芯片的地址范围唯一且连续。
首先,地址总线是16位(A0-A15),所以总寻址空间是64KB。全译码意味着所有高位地址线都参与译码,避免地址重叠。对于每个存储芯片,需要确定其地址范围,即高位地址线经过译码后的片选信号,以及低位地址线直接连接到芯片的地址引脚。
对于2732 EPROM,容量是4K×8,所以需要12条地址线(A0-A11),因为2^12=4096=4K。同样,6264 SRAM是8K×8,需要13条地址线(A0-A12)。所以,当连接这些芯片时,低位地址线直接连接到芯片,高位地址线用于译码产生片选。
接下来,使用74LS138译码器。74LS138是3-8译码器,有三个选择输入(A、B、C),三个使能端(G1, G2A, G2B)。当G1=1,G2A=G2B=0时,译码器工作,根据C、B、A的输入选择Y0-Y7中的一个输出作为片选信号。
假设用户需要设计32KB的存储器,可能由多个EPROM和SRAM组成。例如,假设用户需要16KB的EPROM(4片2732)和16KB的SRAM(2片6264),总容量32KB。或者可能其他组合,但需要明确。
不过根据用户给出的示例中的引用[1],其中用8片6264构成64KB,每片8KB,所以可能需要类似的思路。但这里用户的问题是用2732和6264组成32KB,所以可能需要计算芯片数量。例如,假设使用4片2732(4×4KB=16KB)和2片6264(2×8KB=16KB),总32KB。或者可能其他组合,但用户可能希望具体说明如何安排。
接下来需要确定每个芯片的地址范围。首先,对于全译码,所有高位地址线都参与译码。例如,对于2732(4KB),需要12位地址线(A0-A11),剩下的高位地址线(A12-A15)用于译码。但74LS138有3个输入,所以可能需要将A12-A15中的某些位作为译码器的输入,而其他高位作为使能条件。
例如,对于2732,假设使用A12、A13、A14作为译码器的输入,那么每个2734芯片的地址范围由这三个位的组合决定。但可能需要更多的逻辑,因为地址总线是16位,而2732需要12位地址,所以高位地址是A12-A15。但16位地址线,A0-A11是12位,所以剩下的A12-A15是4位。如何用这4位来生成片选信号?
如果使用全译码,那么需要将这4位全部用于译码。例如,使用A12-A15作为译码器的输入,但74LS138只有3个输入,所以可能需要级联或其他方法。或者,将某些高位作为使能条件,而用较低的几位作为译码器的输入。
例如,假设将A15作为译码器的使能条件的一部分,而A12-A14作为译码器的输入。例如,当A15=0时,选中EPROM,而A15=1时选中SRAM?或者根据地址分配的需求,确定高位地址的组合。
用户可能需要将整个32KB的地址范围分配在某个区域,例如从0000H到7FFFH(32KB),或者其他的位置。但用户的问题中没有明确地址范围,因此需要假设或由设计者决定。
或者,用户可能希望将EPROM和SRAM分别放置在特定的地址范围。例如,EPROM放在低地址,SRAM放在高地址,或者分开不同的区域。
例如,假设用户希望将EPROM的地址范围从0000H到3FFFH(16KB),使用4片2732(4×4KB=16KB),每片占据4KB。而SRAM的地址范围从4000H到7FFFH(16KB),使用2片6264(2×8KB=16KB)。
在这种情况下,对于EPROM(4片2732),每个芯片需要4KB的地址空间。因此,A0-A11连接到芯片的地址引脚,剩下的A12-A15用于译码。因为4片需要4个片选信号,所以需要用两位地址线来选择,比如A12和A13,但74LS138是3-8译码器,可能需要使用更多的地址线作为使能条件。
或者,考虑将高位地址线A14和A15作为译码器的使能条件,而A12和A13作为译码器的输入。例如,当A15=0且A14=0时,使能译码器,然后A12和A13选择不同的片选信号。但这样可能只能产生4个片选,而需要4个EPROM片,所以可能可行。或者使用A12-A14作为译码器的输入,而A15作为使能的一部分。
这需要更详细的分析。例如,假设EPROM占据低16KB(A15=0),SRAM占据高16KB(A15=1)。对于EPROM部分,16KB需要4片4KB的2732,因此需要4个片选信号。使用A12和A13两位来选择,因为4=2^2,所以可能需要将A12和A13连接到译码器的输入,而译码器的使能由A14和A15控制。例如,当A15=0且A14=0时,译码器工作,A12和A13作为输入,得到Y0-Y3,分别选择4个2732芯片。每个2732的地址范围由A12和A13的不同组合决定。
例如,第一个2732的地址范围是0000H-0FFFH(A15=0, A14=0, A13=0, A12=0),第二个是1000H-1FFFH(A13=0, A12=1),第三个是2000H-2FFFH(A13=1, A12=0),第四个是3000H-3FFFH(A13=1, A12=1)。但这样需要译码器的使能条件为A15=0和A14=0,此时译码器的输入为A12和A13,但74LS138是3-8译码器,需要三个输入,所以可能需要将A12、A13、A14中的某三位作为输入,同时将其他高位作为使能条件。
或者,可能更合理的是,使用A13、A14、A15作为译码器的使能条件,而将A12和其他地址线作为输入。例如,对于2732的4KB,需要12位地址,所以A0-A11连接到芯片。剩下的A12-A15四位,可能需要将A12、A13、A14作为译码器的输入,而A15作为使能条件的一部分。
例如,假设将A15连接到译码器的G2A或G2B,当A15=0时,使能译码器。然后,A12、A13、A14作为C、B、A输入,这样可以得到8个输出,每个对应不同的地址块。例如,Y0对应A14=0, A13=0, A12=0,地址范围0000H-0FFFH(4KB),Y1对应A12=1,地址范围1000H-1FFFH,依此类推。但这样每个输出对应4KB的块,所以每个2732占据一个块,因此需要4片的话,使用Y0-Y3,每个对应4KB,而Y4-Y7可能未使用。或者用户可能需要更多片,但根据问题描述,用户可能用2732和6264组合。
但这里可能需要同时处理EPROM和SRAM的片选。例如,EPROM使用Y0-Y3(4片×4KB=16KB),SRAM使用Y4-Y5(2片×8KB=16KB),总32KB。但如何让SRAM的每个芯片占据8KB?因为6264是8KB,需要13位地址线(A0-A12)。因此,对于SRAM,A0-A12连接到芯片,而剩下的A13-A15用于译码。此时,可能需要不同的译码方式。
或者,将整个地址空间分为多个区域,其中EPROM和SRAM分别占据不同的区域,每个区域的大小对应芯片的容量。例如,EPROM使用低地址,SRAM使用高地址。或者反过来。
这里可能需要更系统的步骤:
1. 确定每个芯片的地址线需求:
- 2732 EPROM:4KB → 12位地址线(A0-A11)
- 6264 SRAM:8KB → 13位地址线(A0-A12)
2. 确定总容量和芯片数量:
- 假设总容量为32KB,可能由多个EPROM和SRAM组成。例如,4片2732(4×4=16KB)和2片6264(2×8=16KB),总32KB。
3. 分配地址空间:
- 需要将64KB的地址空间中的32KB分配给这些芯片。假设从0000H到7FFFH(32KB)。
4. 设计译码电路:
- 使用74LS138,将高位地址线(A13-A15)作为译码器的输入或使能信号,以生成片选信号。
例如,EPROM部分:
- 每个2732需要4KB,所以需要12位地址(A0-A11),剩下的A12-A15用于译码。但若总地址空间是32KB(到7FFFH),则A15为0(因为7FFFH的二进制是0111 1111 1111 1111)。所以A15=0,A14-A12用于区分不同的4KB块。
但74LS138有三个输入,假设将A12、A13、A14作为译码器的输入,而A15作为使能条件的一部分。例如,当A15=0时,使能译码器。译码器的输入为A14, A13, A12,这样每个输出对应一个4KB的块。例如:
- Y0:A14=0, A13=0, A12=0 → 0000H-0FFFH
- Y1:A14=0, A13=0, A12=1 → 1000H-1FFFH
- Y2:A14=0, A13=1, A12=0 → 2000H-2FFFH
- Y3:A14=0, A13=1, A12=1 → 3000H-3FFFH
- 依此类推,直到Y7。但EPROM需要4片,所以使用Y0-Y3,每个对应一个2732。
然后,SRAM部分使用6264,每个需要8KB,所以需要13位地址线(A0-A12)。剩下的A13-A15用于译码。例如,当A15=0,A14=1,A13=0,选中SRAM的第一个芯片。但需要更详细的逻辑。
或者,将SRAM的地址范围放在较高的地址。例如,当A15=0,A14=1时,选中SRAM。由于每个6264是8KB,占据13位地址,所以A0-A12连接到芯片,而A13和A14用于译码。例如,当A15=0,A14=1,A13=0时,选中第一个6264(地址范围4000H-5FFFH),当A14=1,A13=1时,选中第二个6264(6000H-7FFFH)。但这样需要如何生成片选信号?
这里可能需要另一个译码器或使用不同的使能条件。但用户希望使用一个74LS138,所以需要合理设计。
可能的方案是:
- 将74LS138的使能端配置为G1=1(高电平),G2A=G2B=0(低电平)。因此,当G1=1且G2A=G2B=0时,译码器工作。
- 将A15连接到G1,这样当A15=1时,译码器被使能。但这样可能无法覆盖地址范围0000H开始的区域。或者,将A15连接到G2A或 G2B,使得当A15=0时,译码器工作。
例如,假设将G1接高电平(VCC),G2A接A15的反相,G2B接地。这样,当A15=0时,G2A=0(因为A15经过反相器变为高电平?或者需要重新考虑逻辑电平)。或者,直接将G2A和 G2B连接到A15和某个其他信号,使得当A15=0时,G2A=0,G2B=0,从而使能译码器。
例如,假设当A15=0时,译码器使能(G2A和G2B=0),此时译码器的输入为A12, A13, A14。这样,译码器的输出Y0-Y7对应不同的组合,每个对应一个4KB的块,从0000H到7FFFH(因为A15=0,地址范围是0000H-7FFFH,共32KB)。然后,每个Y输出可以对应一个2732或一组SRAM芯片。
但SRAM的6264是8KB,需要占据两个连续的4KB块。例如,Y0和Y1组合成一个8KB的区域,对应一个6264芯片。因此,可能需要将译码器的输出进行逻辑组合。例如,将Y0和Y1通过或门连接到一个6264的片选,这样当地址在Y0或 Y1时,该6264被选中,占据8KB的地址空间(0000H-1FFFH)。
但这样可能需要额外的逻辑门,而用户希望使用74LS138直接生成片选。因此,可能需要重新考虑译码器的输入分配。
另一种方法是,将译码器的输入设置为A13, A14, A15,而将低位地址线用于芯片内部寻址。例如,对于6264(8KB),需要A0-A12,所以剩下的A13-A15用于译码。但地址总线是16位,所以A13-A15是高位。例如,当A15=0,A14=0,A13=0时,选中第一个6268芯片,地址范围0000H-1FFFH。但这样每个6264占据8KB,需要三个地址线(A13-A15)中的某些组合。
或者,可能更简单的做法是将地址空间划分为多个块,每个块对应一个芯片。例如,使用译码器的输出Y0-Y3来选择4个2732(每个4KB),共16KB,然后Y4-Y5选择2个6264(每个8KB),共16KB,总32KB。但如何通过译码器实现?
例如,将A12、A13、A14作为译码器的输入(C, B, A),而A15作为使能条件的一部分。当A15=0时,译码器工作。此时:
- Y0对应A14=0, A13=0, A12=0 → 地址范围0000H-0FFFH(4KB),选通第一个2732。
- Y1对应A12=1 → 1000H-1FFFH,第二个2732。
- Y2对应A13=1 → 2000H-2FFFH,第三个2732。
- Y3对应A13=1, A12=1 → 3000H-3FFFH,第四个2732。
- Y4对应A14=1 → 4000H-4FFFH,此时可能需要将Y4与Y5组合来选择6264的8KB空间。例如,Y4和 Y5的片选信号通过或门连接到6264的片选,当地址在4000H-5FFFH时选中第一个6264(8KB),地址范围4000H-5FFFH。但这样需要额外的逻辑门,而用户可能希望仅使用74LS138的输出直接连接。
这可能不太方便,因此可能需要调整译码器的输入,使得每个6264的片选信号由译码器的一个输出直接控制,覆盖8KB的地址范围。例如,当A12为最高位地址线用于区分4KB块,但如何做到?
或者,考虑对于6264,需要13位地址线(A0-A12),所以高位地址线是A13-A15。因此,对于6264的片选,需要A13-A15的某些组合。例如,若一个6264占据地址4000H-5FFFH,则A15=0(因为4000H-5FFFH在A15=0的范围内),A14=1,A13=0,A12=0到1(因为5FFFH的二进制是0101 1111 1111 1111)。此时,A14=1,A13=0,A12可以是0或1,因为A12是地址线的第12位,对应6264的内部地址A12,因此高位地址线A13、A14、A15需要稳定来选择片选。
因此,6264的片选信号应该当A15=0,A14=1,A13=0时有效。此时,译码器可能需要将A13、A14、A15作为输入,但译码器的输入可能不足,因为A15是最高位。例如,将A15连接到译码器的使能端,当A15=0时,译码器工作,输入为A13和 A14,但这样只能得到4个输出,可能不够。
这可能变得复杂,因此需要重新整理思路:
总地址总线是16位(A0-A15),寻址64KB。用户需要设计32KB的存储器,可能位于某个连续的32KB空间,例如低32KB(0000H-7FFFH)。
使用74LS138译码器,全译码方式,所有高位地址线参与译码。
假设EPROM和SRAM的地址范围如下:
- EPROM:0000H-3FFFH(16KB),使用4片2732(4×4KB)
- SRAM:4000H-7FFFH(16KB),使用2片6264(2×8KB)
对于EPROM部分:
每个2732需要4KB,地址线A0-A11。剩余的高位地址线A12-A15需要参与译码。
4片EPROM需要4个片选信号。74LS138有8个输出,可以使用其中的Y0-Y3。
译码器的输入需要根据A12-A14(因为A15在低32KB时为0)。
例如,将译码器的输入设为A12, A13, A14,而A15=0作为使能条件。当A15=0时,译码器使能。
因此,译码器的使能条件:G1=1(接高电平),G2A和 G2B=0。所以需要将A15连接到G2A或 G2B,使得当A15=0时,G2A=0,G2B=0。例如,将G2A接A15,G2B接地,这样当A15=0时,G2A=0,G2B=0,译码器工作。
译码器的输入A, B, C分别接A12, A13, A14。这样,每个输出对应不同的A14, A13, A12组合。例如:
- Y0:A14=0, A13=0, A12=0 → 地址0000H-0FFFH(第一个2732)
- Y1:A14=0, A13=0, A12=1 → 1000H-1FFFH(第二个2732)
- Y2:A14=0, A13=1, A12=0 → 2000H-2FFFH(第三个2732)
- Y3:A14=0, A13=1, A12=1 → 3000H-3FFFH(第四个2732)
- Y4-Y7:当A14=1时,对应地址4000H-7FFFH,这部分可以用于SRAM。
对于SRAM部分:
每个6264需要8KB,地址线A0-A12。剩余的高位地址A13-A15需要参与译码。
因为SRAM的地址范围是4000H-7FFFH(共16KB),即A15=0,A14=1,A13可以是0或1,因为:
- 4000H-5FFFH:A15=0, A14=1, A13=0 → 16KB中的前8KB
- 6000H-7FFFH:A15=0, A14=1, A13=1 → 后8KB
但每个6264是8KB,所以需要两个片选信号,每个覆盖8KB。如何用74LS138的输出Y4-Y7来生成这两个片选?
例如,当A14=1,A13=0,A12=0(Y4输出有效),此时地址范围是4000H-4FFFH。但这是4KB,不足以覆盖8KB。因此,可能需要将A12作为无关位,或者将译码器的输入调整为A13, A14, A15,但这样可能无法覆盖。
或者,可能将SRAM的片选信号由Y4和 Y5组合而成,当Y4或 Y5有效时,选中第一个6264,覆盖4000H-5FFFH。例如,当A14=1,A13=0,A12=0 → Y4有效(4000H-4FFFH),而A12=1 → Y5有效(5000H-5FFFH),但这样每个Y输出对应4KB,需要将两个4KB块合并为一个8KB块。因此,可能需要将Y4和 Y5通过或门连接到一个6264的片选端,这样当地址在4000H-5FFFH时,该芯片被选中。同样,Y6和 Y7通过或门连接到第二个6264的片选,覆盖6000H-7FFFH。
这样,每个6264需要两个译码器输出通过或门连接,但用户的问题中可能希望仅使用译码器直接输出,因此可能需要调整译码器的输入,使得每个6264的片选对应一个译码器输出,覆盖8KB。
例如,调整译码器的输入为A13, A14, A15,但此时A15=0,所以输入为A13和 A14,但译码器需要三个输入,所以可能需要其他方式。例如,将A15固定为0,译码器的输入为A13, A14, 和另一个地址线,比如A12,但这样可能无法直接覆盖8KB块。
另一种思路:对于6264的8KB地址空间,需要A0-A12,因此高位地址线是A13-A15。要使一个片选信号覆盖8KB,必须确保A13在某个固定的值,而A14和 A15参与译码。例如,对于第一个6264,地址范围4000H-5FFFH,A15=0,A14=1,A13=0。此时,A13=0,所以当A13=0时,选中该芯片,而A14=1,A15=0。因此,可以将A13作为译码器的输入,同时将A14和 A15作为使能条件。
例如,译码器的使能条件是A15=0,A14=1。此时,译码器的输入为A13, A12, 和另一个线,但可能不够。或者,使用另一个译码器或调整现有译码器的连接方式。
这可能变得复杂,所以可能需要重新考虑整个译码方案:
1. EPROM部分:4片2732,每片4KB,地址0000H-3FFFH。
- 使用74LS138的Y0-Y3,输入A12, A13, A14,当A15=0时使能译码器。
2. SRAM部分:2片6264,每片8KB,地址4000H-5FFFH和6000H-7FFFH。
- 需要两个片选信号,每个覆盖8KB。
- 可能使用译码器的Y4和 Y5,但需要调整输入,使得每个输出覆盖8KB。
如何让Y4和 Y5各覆盖8KB?
假设对于SRAM,A15=0,A14=1,A13作为选择信号。例如:
- 第一个6264:A15=0, A14=1, A13=0 → 地址4000H-5FFFH(A13=0,A14=1,A15=0)
- 第二个6264:A15=0, A14=1, A13=1 → 地址6000H-7FFFH(A13=1,A14=1,A15=0)
此时,每个6264的片选信号需要当A15=0、A14=1、A13=0或1时有效。因此,可以使用译码器的两个输出,每个对应不同的A13值,同时A14=1,A15=0。
但译码器的输入是A12, A13, A14,当A15=0时使能。当A14=1,A15=0,那么输入A14=1,因此译码器的输入为A12, A13, A14=1。因此,对于A14=1,A13可以是0或1,A12可以是0或1。译码器的输出Y4-Y7对应不同的组合:
- Y4:A14=1, A13=0, A12=0 → 4000H-4FFFH(4KB)
- Y5:A14=1, A13=0, A12=1 → 5000H-5FFFH(4KB)
- Y6:A14=1, A13=1, A12=0 → 6000H-6FFFH(4KB)
- Y7:A14=1, A13=1, A12=1 → 7000H-7FFFH(4KB)
但每个6264需要8KB,所以需要将两个4KB块合并。例如,将Y4和 Y5通过或门连接到第一个6264的片选,Y6和 Y7连接到第二个6264的片选。这样,当地址在4000H-5FFFH时,第一个6264被选中,占据8KB;同样,6000H-7FFFH对应第二个6264。
因此,译码器的输出需要经过逻辑门组合来生成片选信号。这可能涉及到额外的硬件,但用户的问题可能接受这种方式。
总结:
- EPROM的片选由Y0-Y3直接连接,每个输出对应4KB。
- SRAM的片选由Y4-Y5和Y6-Y7组合,通过或门连接,每个组合对应8KB。
因此,电路设计中,除了74LS138外,还需要或门来合并译码器的输出。
但用户的问题可能希望仅使用74LS138,所以可能需要另一种方式,例如调整译码器的输入,使得每个输出对应8KB。
这可能需要改变译码器的输入连接。例如,使用A13和 A14作为译码器的输入,而将A12作为无关位(即不参与译码),这样每个输出对应8KB的块。例如:
- 输入A为A13, B为A14, C为A15?但这样可能需要重新考虑译码器的使能条件。
例如,当A15=0,译码器使能,输入为A13, A14, 和 A12,这样每个输出对应4KB。但若忽略A12,即A12可以是任意值,那么每个输出实际上对应两个4KB块,合并成8KB。例如,Y4对应A14=1, A13=0,无论A12是0还是1,因此地址范围4000H-5FFFH(当A12=0时4000H-4FFFH,A12=1时5000H-5FFFH,合并为4000H-5FFFH,共8KB)。这需要将A12不连接到译码器,而是作为芯片的内部地址线。但这样译码器的输入只有A13和 A14,而第三个输入可能固定为0或1,或者使用其他方式。
这可能不现实,因为74LS138需要三个输入。因此,可能需要将A12连接到译码器的输入,但将其视为无关位。例如,当译码器的输出Y4有效时,对应A14=1, A13=0, A12=0,而Y5对应A14=1, A13=0, A12=1。将Y4和 Y5通过或门连接到SRAM的片选,这样当地址在4000H-5FFFH时,片选有效,此时A12可以是0或1,作为芯片的内部地址线A12。这样,每个SRAM芯片的地址线A12由地址总线的A12位驱动,因此当地址在4000H-5FFFH时,A12可以是0或1,覆盖整个8KB空间。
因此,第一个SRAM的片选由Y4和 Y5的或逻辑产生,地址范围4000H-5FFFH,第二个由Y6和 Y7的或逻辑产生,地址范围6000H-7FFFH。这样,每个SRAM芯片需要两个译码器输出通过或门连接。
因此,最终的译码电路如下:
- 74LS138的使能端G1接高电平,G2A接A15(反相后?),G2B接地,确保当A15=0时译码器工作。
- 译码器的输入A、B、C分别接A12, A13, A14。
- EPROM的片选由Y0-Y3直接连接,每个对应4KB。
- SRAM的片选由Y4与Y5通过或门连接到第一个6264的片选,Y6与Y7通过或门连接到第二个6264的片选。
这样,每个SRAM芯片的地址范围是:
- 第一个6264:4000H-5FFFH(当Y4或 Y5有效时)
- 第二个6264:6000H-7FFFH(当Y6或 Y7有效时)
因此,地址范围分配如下:
EPROM:
- 芯片1:0000H-0FFFH(Y0)
- 芯片2:1000H-1FFFH(Y1)
- 芯片3:2000H-2FFFH(Y2)
- 芯片4:3000H-3FFFH(Y3)
SRAM:
- 芯片1:4000H-5FFFH(Y4+Y5)
- 芯片2:6000H-7FFFH(Y6+Y7)
这样,总容量为4×4KB + 2×8KB = 16KB + 16KB = 32KB,符合要求。
最后,需要确保每个芯片的片选信号在正确的地址范围内有效,并且地址唯一且连续。同时,全译码法要求所有高位地址线参与译码,避免地址重叠。
可能还需要验证地址范围的计算是否正确。例如,对于第一个SRAM芯片,地址范围4000H-5FFFH:
- A15=0,A14=1,A13=0,A12可以是0或1。因此,当地址在4000H-4FFFH时,A12=0,Y4有效;在5000H-5FFFH时,A12=1,Y5有效。因此,通过或门将Y4和 Y5合并,可以覆盖整个8KB的地址范围。
同样,第二个SRAM芯片的地址范围6000H-7FFFH对应Y6和 Y7的合并。
总结步骤:
1. 确定每个芯片的地址线连接:
- 2732:A0-A11
- 6264:A0-A12
2. 确定译码器的输入和使能条件:
- 译码器74LS138的使能条件:G1=1,G2A= A15(原逻辑,因为当A15=0时译码器工作),G2B=0。
- 输入C、B、A分别接A14, A13, A12(根据真值表,输入顺序可能需要注意,通常C是最高位,A是最低位)。
3. 生成片选信号:
- EPROM的片选由Y0-Y3直接连接。
- SRAM的片选由Y4+Y5和 Y6+Y7通过或门连接。
4. 地址范围计算:
- 确保每个芯片的地址范围正确且连续。
可能存在的错误点:
- 译码器的输入顺序是否正确?需要确认74LS138的输入ABC对应的地址线顺序,例如C接最高位,A接最低位。例如,如果输入为A12, A13, A14分别接A, B, C,那么译码器的输出Y0对应A14=0, A13=0, A12=0,即二进制000,对应地址0000H-0FFFH。
另外,需要验证地址计算是否准确。例如,当A15=0,A14=1,A13=0,A12=0时,地址是4000H(0 1 0 0 0000 0000 0000)。即,A15=0,A14=1,A13=0,A12=0,低位地址全0,所以起始地址是4000H。当A12=1时,地址变为5000H,因此Y5对应的地址是5000H-5FFFH。合并Y4和 Y5得到4000H-5FFFH,共8KB。
因此,整个设计是可行的。</think>### 存储系统设计步骤分析
#### 1. 确定芯片规格及数量
- **EPROM 2732**: 容量$4KB$ (需12根地址线$A0-A11$)
- **SRAM 6264**: 容量$8KB$ (需13根地址线$A0-A12$)
- 总容量需求$32KB$,需$4$片2732 ($4 \times 4KB$)和$2$片6264 ($2 \times 8KB$)[^1]
#### 2. 地址空间分配
采用全译码法,确保每个芯片地址唯一:
- **EPROM地址范围**:$0000H-3FFFH$ ($16KB$)
- **SRAM地址范围**:$4000H-7FFFH$ ($16KB$)
#### 3. 译码器连接设计
使用**74LS138译码器**,连接方式如下:
1. **使能端配置**:
- $G1$接高电平
- $\overline{G2A}$接地址线$A15$(保证$A15=0$时译码器工作)
- $\overline{G2B}$接地
2. **输入信号**:
- $A$接$A12$,$B$接$A13$,$C$接$A14$[^3]
#### 4. 片选信号生成
- **EPROM片选**:
- $Y0$: $0000H-0FFFH$ (芯片1)
- $Y1$: $1000H-1FFFH$ (芯片2)
- $Y2$: $2000H-2FFFH$ (芯片3)
- $Y3$: $3000H-3FFFH$ (芯片4)
- **SRAM片选**:
- $Y4+Y5$通过或门生成第一个6264片选($4000H-5FFFH$)
- $Y6+Y7$通过或门生成第二个6264片选($6000H-7FFFH$)
#### 5. 地址线连接
- **EPROM 2732**:$A0-A11$直连CPU地址总线
- **SRAM 6264**:$A0-A12$直连CPU地址总线
### 电路实现示意图
```
+-----------------------------+
| 74LS138 |
A12|A Y0 -- EPROM1_CS |
A13|B Y1 -- EPROM2_CS |
A14|C Y2 -- EPROM3_CS |
A15|G2A Y3 -- EPROM4_CS |
GND|G2B Y4 --| OR |-- SRAM1_CS |
VCC|G1 Y5 --| | |
| Y6 --| OR |-- SRAM2_CS |
| Y7 --| | |
+-----------------------------+
```
### 地址范围验证
1. **EPROM芯片1** ($Y0$有效):
- 地址范围:$0000H-0FFFH$
- 二进制条件:$A15A14A13A12=0000$
2. **SRAM芯片1** ($Y4+Y5$有效):
- 地址范围:$4000H-5FFFH$
- 二进制条件:$A15A14A13=010$ (忽略$A12$变化)
### 关键设计要点
1. 全译码确保地址唯一性,避免空间重叠
2. 通过或门扩展译码器输出覆盖更大地址空间
3. 高位地址线$A15$参与译码器使能控制[^1]
阅读全文
相关推荐



















