今天依然按照计划继续搞实验箱.
实验箱的存储单元使用的芯片是HY6116AP-10。很轻松地google到了芯片手册:
对于这次实验来说我们只需要关心芯片手册的第一页。这个芯片有10根地址线,为了统一接口,故实验箱只提供了8根地址线,只对外引出了A0~A7,D0~D7,CE(CS)和WE接口。
CE为片选,低电平有效。WE为低电平时进行写操作,为高电平时进行读操作。
知道了这些就可以对6116写数据了具体做法是:
1.将6116单元的WE和CE连接到SWITCH(其实就是控制面板= =)单元的对应接口,D0~7连接到数据总线任意一排,要注意不要插反。输入单元的SW_G也插到控制面板的对应接口。
2.当片选CE为低电平,写始能WE为高电平,SW_G为高电平时,会输出某一地址下所存储的数据(此时地址线未连接)。此时将SW_G调至低电平,在INPUT UNIT输入一些数据比如01010101,随后把WE至低电平一秒再至回高电平(因为没找到没找到写数据延时,假设是1秒),此时写数据成功。
那么怎么验证刚才写入的数据是否正确呢?还记得SW_G的作用么?当SW_G为高电平时,数据总线会显示6116在某一地址下存储的数据,果然是01010101没错。
我们可以利用这个机制做些有趣的东西。将SW_G至低电平,在INPUT UNIT输入10101010,然后来回拨动SW_G开关,这时会看到一排红色二极管交替闪烁,可惜不是太好看。嗯,还能做个振荡器什么的,在这里就不演示了。
到现在向同一个地址内写入不同数据的问题已经解决了,向任意地址内写入任意数据该怎么做呢= =
查询实验箱手册才知道SIGNAL UNIT的T3用边沿来控制地址总线的数据刷新。也就是说当SW_G为低电平时,通过输入单元输入任意地址并切换T3的状态,相应的数据就会被写入到地址总线中。到现在为止,向任意地址内写入任意数据可以实现了,做法如下:
1.令WE = 1, SW_G= 0,LOAD连接T3 保持任意值不动。
2.将INPUT UNIT的开关至于00000001的状态,代表的含义是地址0x01;
3.推LOAD开关一次,此时ADDR BUS与INPUT UNIT亮灯状态相同;
4.将WE至低电平一秒后推回;
5.将SW_G至高电平查看写入数据。
OVER
最后时我今天的作品:让存储器在地址0x01单元存储我的名字的缩写,并通过显示器(两位数码管)显示。