老古开发网首页
导航:老古开发网首页文章索引文章分类嵌入式系统→[PSTN短消息终端SoC设计的存储空间映射技术]
| -文章搜索 - 最新文章 - |

PSTN短消息终端SoC设计的存储空间映射技术

发布时间:2006年8月30日 点击次数:973
来源:   作者:中南大学物理学院 赵岩;清华大学 张果 张春
 

摘要 介绍在PSTN短消息终端SoC设计中所采用的存储空间映射技术,给出它的硬件实现。通过将部分关键程序代码加载到RAM程序空间,并在Flash和RAM之间切换总线来执行程序,克服普通加载操作占用大量RAM的弊端,解决基于Flash的冯·诺依曼存储结构不能同时读写Flash的问题。

关键词 存储空间映射  程序加载  冯·诺依曼结构  SoC设计  DW8051_Core IP

1概述
PSTN(Public Switched Telephone Network)短消息终端SoC是为固定电话网短消息业务而设计的一种数字终端处理芯片。片上集成了微控制器、RAM、FSK/DTMF调制解调器、LCD接口、键盘扫描、数据存储器扩展页面寻址接口以及线路状态控制接口,可以完成FSK和DTMF格式的短消息上传、下传,CID(Calling Identity Delivery,主叫识别信息传送)号码的接收,振铃信号检测,话机状态控制等功能\[1\]。其中,使用了DW8051_core IP核作为SoC的微控制器核心。
本文先对所设计SoC的结构进行简单的介绍,然后针对基于Flash的冯·诺依曼存储结构所出现的瓶颈问题,详细讲述在占用尽量少的RAM的情况下,所采用的存储空间映射技术和基于此技术的程序代码加载操作及其硬件和软件实现。
2SoC的结构
SoC中的FSK/DTMF调制解调器、LCD接口、键盘扫描、数据存储器扩展页面寻址接口以及线路状态控制接口等都作为片内外设连接在DW8051_core所特有的SFR内部总线上,8 KB的片内RAM和片外512 KB的Flash存储器AM29LV040都连接在DW8051_core的MEM总线上\[2\],如图1所示。
现代的嵌入式微处理器(如ARM)在系统初始化时,一般都会把程序代码从Flash存储器加载到RAM上执行。这样可以大幅提高程序的执行速度,并使程序的可执行代码脱离Flash存储器,从而可以对此Flash存储器进行写或者擦除等操作;但这依赖于处理器的哈佛结构和足够大容量的RAM存储器\[3\]。
从图1可以看出,在SoC设计中所使用的DW8051_core IP核遵从冯·诺依曼结构,只有一条存储器总线,即MEM总线;且只有8 KB的片内RAM,没有片外RAM可供使用。在这种情况下,就有必要对系统的物理存储器进行合理的划分和映射,并在占用尽可能少的片内RAM的情况下设计硬件逻辑,以进行必要的程序代码加载操作,解决基于Flash存储器的冯·诺依曼存储结构不能同时进行读和写操作的问题。
3程序空间以及数据空间的划分和映射
在物理上,把8 KB的片内RAM分为两部分:0000H~1BFFH(共7 KB)映射到数据空间;1C00H~1FFFH(共1 KB)映射到程序空间,并覆盖Flash中程序空间的1C00H~1FFFH区域。把512 KB的Flash存储器也分成两部分;00000H~0FFFFH(共64 KB)映射到程序空间。10000H~7FFFFH(共448 KB)都映射到数据空间。
对微控制器核来说,可以寻址64 KB的程序空间和64 KB的数据存储空间;对整个SoC而言,因为Flash中的程序图1SoC的系统结构空间有1 KB被RAM程序空间覆盖掉,所以逻辑上它的程序空间依然是64 KB,但数据空间变为7 KB+448 KB,共455 KB。微控制器核通过扩展的SFR寄存器FLASH_PAGE按32 KB×16页的页面方式访问Flash存储器,其中包括程序空间和数据空间,如图2所示。
对MEM地址总线的mem_A15信号、mem_A14~mem_A10信号、DW8051_core输出的psrd信号、rd信号、wr信号进行译码,产生RAM_CS和FLASH_CS两个片选信号,分别用来选中RAM和Flash存储器,译码的实现在下文“加载写Flash操作程序代码到RAM的程序空间”中有详细的描述。MEM地址总线的mem_A0~mem_A14直接连接到RAM和Flash地址总线的A0~A14(RAM只连接A0~A12),进行32 KB范围内的寻址。FLASH_PAGE(扩展数据寻址页面寄存器)输出的信号经过“Flash程序/数据空间判决逻辑”译码后,提供Flash进行页面切换操作所需要的地址A15~A18。整个过程的硬件实现\[4\]如图3所示。
表1Flash程序/数据空间判决逻辑表
mem_A15〖〗psrd〖〗rd〖〗wr〖〗选择输出到A15~A18上的值〖〗说明0〖〗0〖〗1〖〗1〖〗二进制0000〖〗Flash中的低32 KB程序空间1〖〗0〖〗1〖〗1〖〗二进制0001〖〗Flash中的高32 KB程序空间1〖〗1〖〗0〖〗1〖〗FLASH_PAGE寄存器的内容〖〗Flash中的数据空间1〖〗1〖〗1〖〗0〖〗FLASH_PAGE寄存器的内容〖〗Flash中的数据空间“Flash程序/数据空间判决逻辑”判断当前地址总线的值是应该映射到Flash中的程序空间还是数据空间。当DW8051_core输出的psrd信号为0,rd和wr信号都为1时,说明当前地址是程序地址,根据mem_A15的值,在A15~A18上面输出二进制的0000或0001。当mem_A15为0,在A15~A18上输出0000,选中程序空间的低32 KB;当mem_A15为1,在A15~A18上输出0001,选中程序空间的高32 KB。当DW8051_core输出的psrd信号为1,rd或wr信号为0时,说明当前地址是数据地址,则直接把FLASH_PAGE寄存器的值输出到A15~A18上面。整个判决逻辑用一个数据选择器实现。输入输出的逻辑关系如表1所列。
4加载写Flash操作程序代码到RAM的
程序空间在对Flash存储器件进行写操作后的某一段时间内(从几十μs到几百μs),对它进行读操作是不能读出一个确切值的,这是Flash存储器件的一个特性。本设计基于冯·诺依曼存储结构,程序和数据存放在同一个AM29LV040 Flash存储器中。在对Flash存储器进行写操作时,还要不断地从其中读出进行写操作的程序指令,然后对它本身进行写操作。DW8051_core在20 MHz的时钟频率下,指令周期大约是200 ns,即每隔200 ns左右,DW8051_core就要从Flash存储器中读取一条指图2程序空间和数据空间的划分和映射图3程序和数据空间映射的硬件实现令。这显然和上述的Flash存储器特性发生了冲突。
解决的方法还是从根本上避开同时对Flash存储器进行读和写操作。从图2可以看出,通过对存储空间的划分和映射已经把RAM的1C00H~1FFFH(共1 KB)区域映射到了程序空间,而译码产生的RAM_CS信号和FLASH_CS信号可以保证程序执行时在RAM和Flash两个程序空间之间的无缝总线切换。RAM_CS和FLASH_CS的译码关系如表2所列。
通过对编译环境的设定,可以把进行写Flash操作的函数unsigned char WriteData_FLASH (unsigned char * dest, unsigned char *scr, unsigned int len) 和Flash扇区擦除函数unsigned char EraseSector_FLASH (unsigned char sector_index)定位到程序空间的1C00H~1FFFH, 并备份到数据空间的 0EC00H~0EFFFH。 在应用程序的设备初始化函数void DevicesInit()中,调用加载函数void LoadFLASHOpToRAM(),把对Flash进行写或者擦除操作的这1 KB的程序代码从Flash加载到RAM的程序空表2产生RAM_CS信号和FLASH_CS信号的译码真值
mem_A15〖〗psrd〖〗rd〖〗wr〖〗A14~A10〖〗RAM_CS〖〗FLASH_CS〖〗说明0〖〗0〖〗1〖〗1〖〗其他值〖〗1〖〗0〖〗选中Flash,程序空间0〖〗0〖〗1〖〗1〖〗00011100〖〗0〖〗1〖〗选中RAM,程序空间1〖〗1〖〗0〖〗1〖〗任意值〖〗1〖〗0〖〗选中Flash,数据空间1〖〗1〖〗1〖〗0〖〗任意值〖〗1〖〗0〖〗选中Flash,数据空间0〖〗1〖〗0〖〗1〖〗其他值〖〗0〖〗1〖〗选中RAM,数据空间0〖〗1〖〗1〖〗0〖〗其他值〖〗0〖〗1〖〗选中RAM,数据空间0〖〗1〖〗0〖〗1〖〗00011100〖〗1〖〗1〖〗非法情况0〖〗1〖〗1〖〗0〖〗00011100〖〗1〖〗1〖〗非法情况间。以后凡是涉及到对Flash的写或者擦除操作,都由硬件逻辑切换总线到RAM去执行这一段程序。这样,以不大的RAM开销,解决了不能同时对Flash进行读和写操作的矛盾。函数void LoadFLASHOpToRAM()的代码如下:
#define PROG_RAM_DATA0xEC00
#define PROG_RAM_DATA_PAGE9
static unsigned char xdata RAM_prog\[1024\] _at_ 0x1C00;
void LoadFLASHOpToRAM(){
unsigned char xdata * p;
FLASH_PAGE = PROG_RAM_DATA_PAGE;
p = (unsigned char xdata *)PROG_RAM_DATA;
memcpy(RAM_prog,p,1024);
}
5总结
在PSTN短消息终端SoC设计中,由于采用了基于Flash的冯·诺依曼存储结构而遇到了不能同时读写Flash存储器的问题。为解决此问题, 采用了存储空间映射技术。设计中使用了加载部分关键程序代码到RAM的程序空间,然后在FLASH和RAM之间进行总线切换执行程序的方法,在加载操作中只使用了1 KB的RAM资源。在SoC仅有片上RAM的情况下,大幅降低了芯片的流片制造成本。
参考文献
1YD/T 1248.2-2003, 固定电话网短消息业务:第一部分短消息终端侧技术要求和测试方法
2Synopsys Inc. DesignWare Components DW8051 MacroCell Databook.200309
3毛德操,胡希明.嵌入式系统——采用公开源代码和StrongARM/XScale处理器.杭州:浙江大学出版社,2003
4王志华,邓仰东.数字集成系统的结构化设计与高层次综合.北京:清华大学出版社,2001
赵岩:硕士研究生,研究方向为SoC在线调试。


欢迎进入老古论坛进行讨论
[嵌入式系统] 相关文章:
基于FPGA的IP核开发板的设计及测试
简介:
摘要 介绍一种能嵌入8051 IP核的硬件开发板的设计流程及方法。以交通灯控制器为实例,给出基于IP核的嵌入式系统开发的一种方案。该方案可以满足较复杂的IP核设计和测试需求。 关键词 IP核 开发板 FPGA 嵌入式软核处理器已逐渐成为基于FPGA平台的嵌入式系统的主流开发方法。与传统的基于硬件处理器开发方式相比,软核受硬件条件限制较少,具有很大的灵活性,可以大大缩短系统的设计开发时间。尤其在系统开发的前期,利用IP核可以对系统进行整体的功能测试,将模块进行裁减组合以优化选择最终的设计方案。采用FPGA与IP核相结合进行嵌入式系统的开发,为设计人员提供了一种新的既快捷又高......

OSEK/VDX标准与车控电子产品开发
基于CPLD的CCD采集系统设计
单片机系统中PS/2键盘驱动程序设计
MCP2510及ADSP2191在CAN网络中的应用
基于嵌入式处理器MAXQ2000的温度测控系统
基于AL310的视频处理平台的硬件设计
两种加密IC卡在同一系统中的共存技术
基于IP核的PSTN短消息终端SoC软硬件协同设计
GPS技术在机车头灯自动寻迹中的应用
 
下一个:[新闻热点]6月份芯片设备市场相比去年同期增长50%
简介:
据EE Times网站报道,日本半导体设备协会(SEAJ)近期发布数据,6月份全球芯片制造设备全球销售达到了39.9亿美元,相比去年同期增长50%。该数据是21个月以来最高的年增长百分比,需求预计将在2006年第三季度实现增长。 报告中指出,相比去年50%的增长是由于在中国实现了四倍的销售以及北美、台湾地区的销售增长。半导体设备订单的增长更是超过了营业额,增长超过了90%。强大的半导体需求促使芯片制造商不断的扩大其产能。 全球6月份的销售表现为:日本7.893亿美元,增长26.8%;北美8.524亿美元,增长100.7%;欧洲3.712亿美元,增长46.6%;韩国4.453亿美元......
 

上一个:[新闻热点]集成电路产业链共同发展-----2006集成电路产业链国际合作(上海)论坛今天召开

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:否 执行时间:16毫秒