首页 新闻资讯 技术资料 论坛 网站地图
嵌入式开发新闻 传感控制 医疗电子 综合电子技术 应用产品 计算机外设 工业控制
电子元器件搜索:
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
维库电子市场网是知名的电子元器件交易网站, 为电子生产企业提供IC库存和技术资料查询服务。
位置: 首页 > 详细信息
  非易失性并行存储器的应用(一)
出处: 时间: 2007-11-01

1引言

半导体存储器通常在电路中用于存放程序或数据。在长期的电路实践中,笔者发现,通过向非易失性(即掉电不会丢掉所存数据)并行存储器的存储单元写入特定的数据,并合理地安排并行存储器的地址线(An)、数据线(Dn)和使能(CE)、门控(OE)控制线引脚的功能,可以非常巧妙地将其作为组合逻辑芯片使用,大大简化了电路的硬件设计。尤其在存储器价格相当低廉的今天,合理、巧妙地使用非易失性并行存储器,不仅可以简化电路、方便调试、提高可靠性,还能有效地降低研发成本。本文将对非易失性并行存储器作为多功能组合逻辑和时序逻辑芯片进行研究探讨。如果没有特别指出,文中提到的存储器均指非易失性并行存储器。

在数字电路设计中,我们常常希望有某个特定功能的芯片,而市场上很难找到甚至没有芯片能提供所需要的功能。这时,一个切实可行的办法就是采用可编程逻辑器件(PLD)定制功能,这里讨论用存储器法实现。这种方法很容易推广到其它容量和类型的非易失性并行存储器,如EPROM、EEPROM、Flash等。即使以后推出新型工艺的非易失性存储器芯片,只要是并行输入/输出的,存储器法都适用。

2用EPROM2764(8k×8)实现的几种电路

21将2764作为十六进制-七段数码管译码驱动器

数字电路中经常需要十六进制七段数码管译码驱动芯片。已知的74LS48、74LS248等芯片由于只是BCD码-七段数码管驱动器,都不能正确显示十六进制A~F,如用门电路设计,虽然理论上可行,但所需芯片太多,接线过于复杂,而用存储器实现却很方便,并可自由选择共阴或共阳译码输出。限于篇幅,略去2764作为十六进制七段数码管译码驱动器(包括 74LS48)的真值表。

对2764编程写入真值表中的数据,仅使用16个地址单元(A3~A0:0000~1111)就能实现基本的十六进制数到七段数码管显示的共阴译码功能。如果要驱动的七段数码管是共阳的,只要将写入2764的数据与D6-D0取反即可。我们只用了2764存储器8位字长中的7位,未用的D7可根据电路具体需要用于小数点显示或其它功能。

为了使这个译码驱动器能满足各种场合的需要,我们引入“共阳/共阴选择”功能,并参照74LS48,添加以下控制引脚:

CA/CK——共阳/共阴选择,为低时芯片作为共阴型译码器;为高时则为共阳型译码器。

BI/RBO——灭灯入/下一位无效零消隐输出,低电平时使七段全灭。

LT——灯测试,为低电平且BI/RBO为高时,a-g输出全高,即将数码管的七段都点亮,用来测试数码管或芯片好坏;为高时正常译码显示。

RBI——动态灭灯输入,为低电平且LT、BI/RBO为高时,输入十六进制0时使数码管不显示,其它十六进制值不受影响(常用于消隐所显示整数部分前面的零);为高时输入十六进制0不会使数码管消隐。由此再安排真值表(略)。

将真值表中的数据按地址写入2764,没有用到的高位地址线全部接地,我们就得到了一个功能完整的十六进制-七段数码管译码驱动器,而且功能上兼容74LS48等BCD码-七段数码管译码驱动器。图1为其与七段数码管的接线图,图中CA/CK(2764的3脚)应接地,因为数码管是共阴型的。RBI、BI/RBO、LT的意义和接法与74LS48完全一样。

不难看出,在2764的8K个地址单元中我们仅使用了低端的256个。

22将2764作为八通道同相/反相器

由于电路设计的需要,我们希望有一种芯片提供8位通道,通过一个引脚的电平控制输出与输入是同相还是反相。我们知道,一个异或门是可以控制一位通道正反相的,因而用4重异或门74LS86可以实现希望的功能。但对于8通道来说,就需要2片74LS86。而用1片2764就可以实现,先写出8通道同相/反相器的真值表(略),再将真值表中的数据按其地址写入 2764,就可以将其作为8通道同相/反相器了。当(2764的脚A8)接高电平时,输出与输入是同相的;接地时,输出与输入是反相的。用于控制是否输出,高电平时输出为高阻态,它是存储器本来的功能,与写入的数据无关。图2为其引脚接法。实现8通道同相/反相器用了2764的512个低地址单元。

23用2764实现十六进制(四位二进制)与BCD码的相互转换

当输入的十六进制数为0~9(二进制为 0000~1001)时,输出的两个BCD码的高字节总为0000,而低字节与输入的四位二进制相同;当输入的十六进制数在A~F(二进制为 1010~1111)时,输出的高字节总为0001,而低字节为0000~0101。这个功能可以用门电路实现,或使用1片74LS154(四十六译码器)、2片(74LS147)十线四线优先编码器及8个反相器,但都相当麻烦。而用2764存储器实现起来却特别简单(真值表略)。

由两个BCD码转换到十六进制则执行与上面相反的转换。两个转换电路分别见图3(a)、3(b)所示。两个转换器分别占用8k存储空间的前16个和256个地址单元。下面讨论用1个存储器实现2个转换器的问题。

  

24使2764同时具有以上4种功能

上面例子中,我们都只是用到了2764的8k存储空间中很少一部分低端地址,未用到的较高位地址线都是接地的,所以绝大多数存储单元都闲置着。其实我们完全可以将各种功能的数据按地址分开写到2764中,以提高芯片的利用率。在使用时将部分引脚置高电平或低电平,选择出需要的功能。

图4为用2764实现上述几个功能的等效电路。通过改变F1F0(即2764的A10、A9脚)的电平,就可以使2764提供不同的功能。

由于各功能所需的存储空间不一样多,我们以需要最多存储空间的功能为准,让其它功能的数据也都占有这么多存储空间,并只使用其中的低端地址(当然,将几个需要空间小的功能集中在一起,合着使用一块与单个需要空间较大的功能相同大小的存储区,可以进一步提高存储空间的利用率)。在本例中占用空间最大的是8通道同相/反相器,它需要512个地址单元,所以其它3个功能也都占有512个地址单元。这样仍难免存在存储地址浪费的问题。但即便如此,1片2764可实现的功能仍是相当可观的——以每个功能需要512个存储地址计算,2764的8K地址单元就能实现16个相互独立的功能。可见用存储器实现组合逻辑功能芯片具有巨大的优越性。

由以上例子可以看出,使用存储器可以非常方便地实现各种组合逻辑芯片的功能,输入信号的最大数目取决于存储器的地址线条数(还有门控信号、片选信号等);而输出信号的最大数目则取决于存储器的字长。因此,如果用户需要的输入信号较多,可以选择容量大的存储芯片;需要的输出较多,就选择字长为16位、32位的芯片。总之,只要存储器地址线和数据线条数满足要求,就可以实现任何可以想象到的组合逻辑功能。

需要注意的是,以上我们一再强调是组合逻辑,而非时序逻辑,是因为存储器没有锁存功能(在读模式下),所以无法单独实现时序逻辑。但若在存储器输入、输出加上锁存器,例如采用透明8D锁存器74LS373、8D边沿锁存器74LS374,也是可以定制时序逻辑功能的。

25将2764作为四位格雷码计数器

关闭】 【打印
相关专题  
计算机外设
SOPC
嵌入式硬件
测试测量
AD/DA
嵌入式软件
工业控制
应用产品
通信产品
嵌入式开发新闻
传感控制
软件开发
医疗电子
CPLD/FPGA
汽车电子
存储器
综合电子技术
接口电路
安防产品
消费电子
数控系统
电源系列
开发工具
军工/航空航天
嵌入式系统

© 2007 百斯嵌入式开发网 网站地图