以MXS51为内核构造的单片集成系统
摘要:介绍一种以MCS51为核,加上FSK、DTMF、数字调制/解调等外国电路组成的控制系统。在类似控制系统中,如何满足系统要求且与MCS51微处理器兼容和如何减少系统面积是设计中的两大关键问题。通过分析MCS51的指令和时序关系,设计出具有自主知识产权的与MCS51兼容的微处理器,完成它与外国电路集成和自测试电路的插入。该系统在FPGA和门阵列上分别进行了布局布线和后仿真,并通过了FPGA的原型样机测试。
关键词:SFR 特殊功能寄存器 FSK 频移键控 DTMF 双音多频
引言
随着电信市场的日益开放、竞争、运营商面蜊更大的压力,须提高投资回收效率,提高固定电话的ARPU值。中国移动推出出的短信息服务取得了很好的经济效果和社会效益,短信正以其特有的快捷和方便,影响着人们日常生活的许多方面。“固定电话信息化”和相关标准的出台,固定电话的厂商也推出类似的服务,从而实现传统电话的增值。
但固网短信存在两方面的“瓶颈”;在终端和内容上均有缺失。在终端方面是价格问题,应该考虑如何将价格降到用户可以接受的范围。
本系统就是针对这样的市场需求而设计。它需要1个满足系统要求的微处理器、1个大的字库来支持。同时,该芯片必须控制在一定面积下,以降低成本。
本文将着重介绍与MCS51兼容的微控制器的设计和DTMF解码中的数据处理。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 与MCS51兼容的微控制器设计
Intel MCS51系列是一种8位微处理器。外部程序与数据存储器的寻址范围可达到64K.MCS51有5个中断源,其中2个为外部中断源,每个中断源的优先级是可编程的。为了满足固网短信系统功能需求。主要对MCS51进行如下三方面的扩展。SFR扩展、存储器扩展,外部中断扩展。
1.1 SFR扩展
为了与MCS51兼容。把FSK、DTMF中的控制寄存器和状态寄存器MCS51的SFR统一编址。这样8051管理、控制、监视FSK、DTMF时,可将FSK、DTMF对应的地址看作是片内数据存储器的直接地址。因此,可以使用片内数据存储器相同的操作方法,不用增加指令来完成这些功能,这种结构的扩展可以看作是MCS51内部总线的扩张和把FSK、DTMF看成MCS51的两个扩展的内部模块,结构如图1所示。javascript:window.open(this.src);" style="cursor:pointer;"/>
1.2 存储器扩展
因为固网系统需要一个庞大的字库来支持,所以MCS51的64KB存储能力是不够的。通过添加一个MMU模块,将CPU该存能力扩展到2MB。当CPU访问外部存储器时,先用16位的逻辑地址高位进行页表查询,得到相应的扩展地址,然后将扩展地址和逻辑地址的低位一起构成21位的物理地址,来完成对外部存储器的操作,数据通路如图2所示。
1.3 外部中断的扩张
为了让系统能旧电故障等异常事件中断请求信号,保留了MCS51原来的两个外部中断源,同时增加了7个外部中断和相应的3个寄存器,分别用于锁存中断、屏蔽中断和对中断的优先级进行控制。如图3所示。
中断的实现,CPU在每一个机器周期预序检查每一个中断源,如果发现有中断请求且没有在处理相同或更高的优先级中断,CPU就处理该中断。先得相应的优先级状态位置位,然后捃一个硬件子程序。该子程序把中断处理程序的入口地址送到程序计数据。各中断源程序的入口地址如表1.中断处理程序从该地址开始一直执行到RETI指令为止,然后将相应的优先级级位清0.
表1 中断服务程序的入口地址
中 断 名 称 | 中断入口 |
Fsk接收中断 | 002B |
Cas中断 | 003B |
Fsk发送中断 | 003B |
极性反转中断 | 0043 |
摘机中断 | 004B |
门控时钟中断 | 0053 |
看门狗中断 | 005B |
2 DTMF数据处理
DTMF解码数据处理主要完成两个功能,一是数据截取,一是DTMG解码。
2.1 数据截取
根据抽样速率和DTMG占空比及持续时间,可以对接收的数据进行截断。根据FFT的要求,前后两段数据之间应该有一定长度的公共部分。计算出截新的数据帧的长度为128字。为了减少面积,我们比较了几个方案。在不会出现溢出的情况下,最后采取了图4所示的设计方案。
图3
数据截取由一个256字的双口RAM完成。复位时,对前32字清零。A/D采样的数据帧先放到写数据段1中,再放到写数据段2中,按照写数据段1和写数据段2交替写入数据。在每次写完一个数据段之后,产生一个数据改变脉冲。用来表明已完成1帧数据,可以进行数据读取,从而启动数据读取操作。
数据读取时,为了保证每次数据读取时与前后两段都有32字的公共部分,第一次从读数据段1中读出160字的数据,其前32字的数据为上一帧数据的最后32字的数据;下一次在读数据段2中读出160字的数据,然后两个数据段读出数据前后之间都有32字的共有数据。
2.2 DTMF解码
对于DTMF解码中用到的FFT,我们采用经典的Goertzel算法。其思想是利用简单的递归运算代替复杂的FFT运算,且只需要计算几个频率占上的值,大大简化了计算量,通过比较几个频率点上数值的大小和判断占空时间,就可确定发送的DTMG频率组合。为了减少设计中用到的乘法验证,在满足通信标准的前提下,将宽度降到12位。Goertzel算法的计算公式如下:
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 其它外围电路
该系统除了MCS51.FSK、DTMG外,再加上门控时钟。看门狗、数字调制/解调等其它电路就构成了完整的以MCS51为核的单片集成系统。javascript:window.open(this.src);" style="cursor:pointer;"/>
门控时钟主要功能就是在系统工作时提供系统时钟;在系统空闲时,使系统处于下电状态,所有的时钟都关掉,所有的操作也就停止,直到系统被唤醒,这样就将系统功耗降低到最小值。
看门电路是一个可编程的逻辑电路,它可以被用作系统监视器,也可以只作为一个简单的计时器。同时它的时间宽度可以通过编程来设成2 12、2 13、2 18或2 21个时钟宽度。
结语
该系统是一个典型的以MCS51为核心。加、DTMG以及门控时钟等外围电路组成的控制系统。我们采用自顶向下的设计方法。系统中所有功能模块均采用VHDL语言进行描述;用FPGA实现的集成系统替换原来的系统通过了功能测试。不但在可靠性上得到了提高,而且满足芯片面积的要求,达到降低成本的目的。