【原创】说说K60的FlexBus外扩SRAM接口电路
0赞最近一直在画Kinetis和FPGA的板子(所以真是忙得都没时间更新博客了,呵呵),对Kinetis的硬件电路设计上有点心得,所以为了怕自己以后忘记了同时也为了继续俺的开源计划,所以这里就开始先挑出一个来说说,当然没想过能做出多大贡献,只是希望能给准备开始着手设计电路的网友一点借鉴,进而能少走一些弯路(自己在摸索设计的时候就走了很多弯路),所以前车之鉴这里就晒给大家了,覆辙之路还是不走为好,哈哈~
本篇就先说说Kinetis的SRAM接口电路(放心,以后还有其他的,敬请期待,呵呵),可能会有人提出来128k还不够吗,嵌个操作系统都足以了,其中原因一是自己可能会用到,二是即使用不到,咱玩玩不好吗,哈哈,飞思卡尔都给出接口了,咱不用白不用,俺就是这个原则,只是可惜手里的这个K60没有DRAM接口(K60有些系列还是有的,还有NAND Flash控制器的),有的话也会加上玩一玩的,哈哈,不要扔砖啊。下面进入正题:
首先还是先介绍下FlexBus的特点,至于什么是FlexBus,其实就是飞思卡尔家的一种灵活的外部总线接口,可以用来扩展例如像外部ROM,SRAM,可编程逻辑器件或者一些从设备之类的,下面是一些特点:
(1)六个独立的可编程片选端口,nFB_CS[5:0](加n是因为打不出来横杠,呵呵,只能用n表示低电平片选了);
(2)8位,16位,32位可配置端口,包括数据和地址;
(3)数据传送可编程为8位,16位,32位,根据相应的外部设备数据端口的位数决定(8,16or32);
(4)内部软件可编程的总线冲突机制;
......
特点列出来的不是很全,知道部分即可,因为等真正软件编程的时候自然会用到。当然想要设计SRAM接口,光知道特点可不行,还需要它的操作模式,因为这涉及到地址总线和数据总线的复用的问题,有些系列pin多的话可以不用考虑复用问题,当然如果为了布线简单化还是建议复用的好,不过遇到复用就会问题多多,这也是我想要分享的一个经验,在复用问题上要多加注意,因为其地址总线一般为固定的32位地址,而其数据总线根据外部设备可配置为8bit,16bit或者32bit,而且在复用的情况下数据的对齐方式也可以配置,例如左对齐data[8:0]则对应FB_AD[31:24],右对齐则对应为FB[7:0],这里建议用默认的左对齐方式,因为这就可以不用考虑地址锁存的问题,这个问题曾经困扰了我很长时间,这里几句话解释不清楚,等下次准备从零入手系列的FlexBus模块软件篇里会详细的说一下,下面就上图了,哈哈~
下图1为飞思卡尔Tower系统的SRAM接口图,用的是飞思卡尔自家的256k*16bit的异步SRAM,即MR2A16A。注意其中FB_AD0_B为FB_AD0的倒相,其实可以用常见的6倒相器逻辑门芯片74LS04即可,不过因为只用到一个倒相,有些浪费资源了,官方给出的是单倒相74LVC1G04,这样即省体积又省成本,不过我为了简化还有就是省钱了(俗了点,哈哈)就只用了个三极管简单搭了一个倒相器,见图2.
下图2为自己画的SRAM接口电路,这里我没用飞思卡尔的RAM,而是换了常见的三星的1M*16bitRAM,即IS61WV102416,毕竟这个市场上比较容易买得到,而且工程应用的较多,出货比较稳定,所以价格较便宜,哎,真是逼的,穷学生没有钱啊,呵呵~
本来想随便说说,结果还是说了这么多,估计大多数人会直接看图了,哈哈,不过还是建议看一下正题内容部分(前两段就当自己唠家常了,呵呵),有些东西还是需要注意的。还有就是本篇只是说说硬件接口电路部分,软件篇还会写在从零入手系列里的,到时候会仔细说说寄存器的使用方法和一些重要的注意事项,希望能有所帮助,好了,老话,未完待续~