MEM in logisim

  • 地址宽度2~24,地址宽度(Address Bit Width)是24位,则能够表示的地址数量是$ 2 ^ {24} = 16,777,216$,每个数值最多占用32位(Data Bit Width)。
  • RAM支持修改数值,通过poke tool实现
  • 内存中的值直接显示在元器件上面,地址是在每一行的开头以灰色显示。

支持三种模式,默认为:同步store/load
最右边是数据,既可以作为读也可以作为写
ld信号线=1表示从address读数据,ld=0表示往address写数据。需要配合controlled buffer来实现数据读写

controlled buffer

image-20220504232535441

three state buffer:三态缓冲器,最下面是1bit控制信号,如果控制信号是1,则元器件执行buffer(左侧元器件)或非门逻辑(右侧元器件);如果控制信号是0或未知, 输出也是浮动的。
three state inverter:

Pins
A: 最左侧,决定访问哪个地址的数据

D:最左侧,这个输入线只有在"separate load and store ports"有效时才会显示

D:最右侧,如果sel和ld是1,RAM会在D口发射出选定地址的数据。如果是单一的load/store口,从这个口读出的数据会被store

sel:选择信号,如果是1,表示整块unit有效,0表示无效

三角符号:时钟信号

ld:决定是否将从A读取的地址的数据从D口输出,1表示输出,0表示不会有数据从D口输出,但如果只有一个口即作为load又作为store,那么store会被开启

例如proj3的mem.circ如下图所示

image-20220504235213823

其中Write_Data有32位,是一个4B大小的数据,第8位的一个字节数据,被输入到第一块RAM中,因为一块RAM的数据单元大小是1B,所以把Write_Data的每个字节分别写入一个RAM是对的。

现在这右边的线是红的,这个clk是一个pin,固定输入0,改成clk unit后,如下

image-20220505000632303

step once, 输出信号有效

image-20220505001418749

时钟信号上升

image-20220505001601903

image-20220505001634288

数据到蓝圈处,即将得到输出,输出也是4B,每个数值是8bit,表示一个字节,共4字节组合成最终输出

posted @ 2022-05-04 20:06  ijpq  阅读(86)  评论(0编辑  收藏  举报