我们可以从 8086/8088 微处理器的内存地址解码中的内存地址37124H开始吗?
以下是解码32k存储器地址的示例,其中起始地址为30000H,最后一个地址为37FFFH:
我认为我们不能这样做,因为起始地址的地址位必须为零,最后一个地址的地址位必须为1,当起始地址为37124H时,不能这样做。 / p>
是吗?有没有更好的答案?
答案 0 :(得分:1)
你不能这么做......只需一个简单的解码器。要求地址范围采用非变化部分的形式,然后是变换部分,每个可能的0和1组合只是为了简化电路:将内存的地址线连接到变化的位,以及内存的CS
行到解码器,检测非变化部分是否出现在相应的地址行中。
但是你实际上可以构建一个电路,可以从你喜欢的任何地址开始映射一些内存(考虑到处理器的粒度)。假设您要在地址32KB
和37124h
之间处理3F123h
内存:
您必须构建一个幅度比较电路,检测8088/8086
处理器的20位地址线是否位于这两个地址之间,如果是,则启用内存的CS
行。
此外,你需要一个减去20位地址的减法电路,并从中减去数字317124h
,所以在这个减法器的输出端,会有一个{{1当{且仅当00000h
启用时,{}为07FFFh
这个减法器的输出将转到你记忆的地址行。
以下Verilog模块描述了这样的设备:
CS
但它需要比简单解码器更多的硬件。如果CPU速度很快并且内存时序存在问题,那么这样的设备会引入可能影响系统性能的不良延迟。简单的解码器,例如您描述的解码器,效率很高。