ROM是用于存储数据的只读存储器。 ROM中的存储器被组织为存储单元的二维阵列。内存将读取或写入阵列行之一的内容。该行由位的地址指定。读取或写入的值称为数据。
图a)显示了一个具有两个地址位和三个数据位的存储器阵列。这两个地址位指定数组中的四行(数据字)之一。每个数据字为三位宽。
图b)显示了内存阵列的一些可能内容。
具有n位地址和m位数据的存储单元阵列将具有行和m列,如图所示。每行数据称为一个单词。因此,该数组包含一个字xm位数组。
在图的情况下,具有2位地址和3位数据的存储单元阵列将具有行是4列和3列,因此数组包含 xm = x 3 = 4字x 3位数组。
为了清楚理解,让我们采用10个地址位和32个数据位,则ROM的大小为–
2^(10) x 32 = 1024 x 32 = 32 Kb
现在要找到ROM的大小,我们需要找到输入和输出位数–
输入数量= n(A)+ n(B)+1(Cin)= 2n + 1个地址位
输出数量= n(sum / diff)+ 1(Cout)= n + 1
因此,这将需要2 ^(2n + 1)x(n + 1)位ROM。
此处, n(A)表示A的输入数量, n(B)表示B的输入数量。
示例1:可以用来为Cin和Cout编程16位加法器/减法器的ROM的大小是____?
解决方案 :
输入数量= 16(A)+ 16(B)+ 1(Cin)= 2(16)+1 = 33个地址位。
输出数量= 16(sum / diff)+ 1(Cout)= 16 + 1 = 17
Thus, this would require a 2^(2n+1)x(n+1) = 2^(33)x17 bit ROM.
例2:可以用来对Cin和Cout进行8位加法器/减法器编程的ROM的大小是____?
解决方案 :
输入数量= 8(A)+ 8(B)+ 1(Cin)= 2(8)+1 = 17个地址位。
输出数量= 8(总和/差)+ 1(Cout)= 8 + 1 = 9
Thus, this would require a 2^(2n+1)x(n+1) = 2^(17)x9 bit ROM.