提高产品的技术水平,扩大产品的应用范围,这一原则贯穿产品的始终。尤其在设计阶段,尽可能地未雨绸缪,在硬件平台上考虑到未来几年的需求,这是一种理想,也是一种追求。
最近在设计测井信号模拟盒,我希望它能实现以下功能:
1,实现2秒的数据播放(5uS采样,每采样点8位)。算下来,需要200K数据点/s×2s×8bit=3.2Mbit的存储空间。这就需要一片4M RAM。
2,可以保存该波形数据,下次开机后能自动加载播放。同样,需要一片4M的FLASH。
3,可以选择播放文件。实现此功能最好用ARM。此为下话,暂且不提。如果有了ARM,第2项可以省略。
4,考虑使用的便利性,预先设计产品的外观,机械尺寸等,做大一个设计,多种应用。
在CPU平台选择上,最佳的选择当是DSP,它扩展存储器容易,并且可以实现5us以下的数据播放,这是理想;从产品的成本和开发周期上看,当前实现5uS的样机足够应付大多数需求。这是现实。我是机会主义者,我屈从现实。我日的。
扯的有点远,正题是,使用CY7C68013-128AXC,外扩4M RAM及4M DataFlash,并考虑到脱离主机运行,使用C2启动方式,扩展16K EEPROM(使用并行EEPROM也可,最大64K)。其它外围电路已经成型,无需赘述。
这里,比较困难的即是,扩展的RAM如何使用Keil C51接口。如果是程序存储器,可以使用C51的Bank Switch技术,通过把不同的函数代码加载到不同的分页内存中,实现超过64K存储器的访问。
方法一:IO线用作地址扩展。对超过64K的数据存储器XDATA,C51同样提供了分页管理模式。
http://www.keil.com/support/docs/2103.htm C51: CONFIGURING XDATA BANKING
http://www.keil.com/appnotes/docs/apnt_130.asp Using the XDATA Bank Switching Location
需要注意的是,如果普通IO线用作存储器地址扩展,则该口的其它位无法用作它用。这是因为8位地址是一次写出的,不能选某几位输出。通过修改启动文件,可以回避该问题。
启动文件是汇编的,改起来还是有点心虚的。不仅如此,68013用哪个口哪几根线,还真是没谱。
方法二:用ASIC实现译码,用地址寻址方式换页。
32K每页的换页操作,可行。这在AMEGA128的扩展应用上也有见到。参见ETHERNUT 2.1设计。
缺点是,每页最大32K,不能定义大于32K的数组。
方法三,对68013,使用GPIF接口实现RAM扩展。这种方法没有通用性。
参见cypress an57322.pdf
以上说法未经验证。
用户414337 2012-5-16 23:20