我们可以从内存地址解码中的内存地址37124H开始吗?

时间:2013-12-26 18:20:39

标签: memory decoding x86-16

我们可以从 8086/8088 微处理器的内存地址解码中的内存地址37124H开始吗?

以下是解码32k存储器地址的示例,其中起始地址为30000H,最后一个地址为37FFFH:

enter image description here

我认为我们不能这样做,因为起始地址的地址位必须为零,最后一个地址的地址位必须为1,当起始地址为37124H时,不能这样做。 / p>

是吗?有没有更好的答案?

1 个答案:

答案 0 :(得分:1)

你不能这么做......只需一个简单的解码器。要求地址范围采用非变化部分的形式,然后是变换部分,每个可能的0和1组合只是为了简化电路:将内存的地址线连接到变化的​​位,以及内存的CS行到解码器,检测非变化部分是否出现在相应的地址行中。

但是你实际上可以构建一个电路,可以从你喜欢的任何地址开始映射一些内存(考虑到处理器的粒度)。假设您要在地址32KB37124h之间处理3F123h内存:

您必须构建一个幅度比较电路,检测8088/8086处理器的20位地址线是否位于这两个地址之间,如果是,则启用内存的CS行。

此外,你需要一个减去20位地址的减法电路,并从中减去数字317124h,所以在这个减法器的输出端,会有一个{{1当{且仅当00000h启用时,{}为07FFFh这个减法器的输出将转到你记忆的地址行。

以下Verilog模块描述了这样的设备:

CS

但它需要比简单解码器更多的硬件。如果CPU速度很快并且内存时序存在问题,那么这样的设备会引入可能影响系统性能的不良延迟。简单的解码器,例如您描述的解码器,效率很高。