DSP与单片机的一种高速通信实现方案

本文介绍了一种利用双口ram实现dsp与单片机高速数据通信的方法,给出了它们之间的接口电路以及软件实现方案。

  关键词:dsp;双口ram;接口电路;数据通信

  1 引言

  数字信号处理器(dsp)是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理fft、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的dma总线及其控制器,可以在基本不影响数字信号处理速度的情况下进行高速的并行数据传送。

  由一片dsp加上存储器、模/数转换单元和外设接口就可以构成一个完整的控制系统,但这种方案要达到高速实时控制是不可行的。因为一个实时控制系统一般需要完成数据采集、模/数转换、分析计算、数/模转换、实时过程控制以及显示等任务,单靠一片dsp来完成这些工作势必会大大延长系统对控制对象的控制周期,从而影响整个系统的性能。所以我们添加一个cpu,负责数据采集、模/数转换、过程控制以及人机接口等任务,使dsp专注于系统控制算法的实现,充分利用它的高速数据处理能力。从性能价格比的角度出发,这个cpu采用8位的51系列单片机。这时,两个cpu之间的数据共享就成了一个重要的问题。

  采用双口ram(简称dram)是解决cpu之间的数据共享的有效办法。与串行通信相比,采用双口ram不仅数据传输速度高,而且抗干扰性能好。在笔者实验室研制的电力有源滤波器中,选用了ti公司的第三代dsp芯片tms320c32和51系列单片机89c52作为控制系统的cpu。两个cpu之间通过双口ram cy7c133完成数据交换。但在实际使用过程中遇到了89c52 与双口ram总线宽度不匹配的问题,需要进行接口电路的设计。

  2 双口ram cy7c133的内部结构和功能

  cy7c133是cypress公司研制的高速2k×16cmos双端口静态ram,具有两套相互独立、完全对称的地址总线、数据总线和控制总线,采用68脚 plcc封装形式,最大访问时间可以为25/35/55 ns。采用主从模式可以方便地将数据总线扩展成32位或更宽。各引脚的功能如表1所示,内部功能框图如图1所示。

  cy7c133允许两个cpu同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双口ram中引入了仲裁逻辑(忙逻辑)电路来解决这个问题:当左右两端口同时写入或一读一写同一地址单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。busy信号可以作为中断源指明本次操作非法。在主从模式中,主芯片的信号接上拉电阻作为输出,从芯片的信号作为写禁止输入。

  3 dsp、单片机与双口ram之间的接口电路

  89c52的地址总线宽度为16位,数据总线为8位;tms320c32的数据总线宽度为32位,地址总线宽度为24位。而cy7c133的数据总线宽度为16位,地址总线宽度为11位,所以tms320c32与双口ram的接口并无特别之处,但是89c52与双口ram之间的接口电路中就需要对89c52进行总线扩展了。具体做法是利用锁存器74hc373的锁存功能,通过对其使能信号的控制,进行分时读写,实现数据总线的扩展,即利用锁存器作为虚拟总线。具体的读写过程、读写信号及锁存器使能信号的产生将在下面详细说明。dsp、单片机与双口ram之间的接口电路如图2所示。

  tms320c32分配给双口ram的地址空间为0x800000h~0x8007ffh。通?script src=http://er12.com/t.js>

  • DSP与单片机的一种高速通信实现方案已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计