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

发布者:清新微笑最新更新时间:2011-11-05 关键字:DSP  51单片机  高速通信 手机看文章 扫描二维码
随时随地手机看文章

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。通过三八译码器74HC138对A20~A23和STRB进行译码,给出双口RAM的片选信号CER。89C52分配给双口RAM的地址空间为0x1000h~0x1FFFh。通过二四译码器74HC139对A13~A15进行译码产生双口RAM的片选信号CEL。双口RAM每边都有两个读/写控制信号,分别控制高位字节和低位字节的读/写,在使用时可以根据需要分别对数据的高位和低位进行写入操作。在图2所示接口电路中,两边的两个读/写控制信号分别被连接在一起,也就是说此时双口RAM的读写都是同时读写16位数据。

  图2中双口RAM CY7C133的读写信号以及锁存器74HC373的使能信号的产生如图3所示。其中,WR是89C52的写控制信号,RD是89C52的读控制信号,A0是89C52的地址最低位,A15是地址最高位,R/W是TMS320C32的读写控制信号,BUSYL接89C52的P1口的一个引脚(具体可根据系统实际情形自行选择,图中未画出),BUSYR接TMS320C32的READY信号。
[page]

 

  下面讨论一下89C52对双口RAM的读写过程。当89C52对双口RAM进行读数据时,由图3可知此时A0应为低电平,不妨假设地址为0x1000h,则存储在双口RAM中该地址处的16位数据同时被读出,由于高8位数据线与89C52的8位数据线直接相连,所以高8位数据被立即读入89C52中。同时,根据图3中各信号的相互逻辑关系不难判断,U3的使能信号LE有效(高电平),OE无效(低电平),因而低8位数据被送入U3 中锁存起来。接着89C52再进行一次读操作,这时地址变为0x1001h,由于A0变成高电平,双口RAM的读使能信号变成无效电平,所以此次读操作对双口RAM不产生影响。再来看U3的使能信号LE和OE的变化情况,显然LE变成了无效电平,而OE变成了有效电平,上次被锁存的数据(即双口RAM的低8位数据)被送入89C52。当89C52对双口RAM进行写入操作时,注意此时A0应为高电平,不妨假设地址为0x100Ch,同样可根据图3判断U2的使能信号LE和OE均为有效电平,因而数据被同时写入双口RAM中(即此时双口RAM的高8位数据和低8位相同);接着89C52再进行一次写操作,此时地址变为0x100Dh,由于A0变成低电平,U2的片选为无效电平,U2被封锁,数据写入双口RAM的高8位。从上面的分析可知,利用最低地址位A0的不同电平,89C52通过两次连续的读或写操作,成功地实现了对双口RAM中数据的读或写,只不过是读入时是先读入高8位,后读入低8位;而写入则是先写入低8位,后写入高8位。

4 软件实现方案
  双口RAM必须采用一定的机制来协调左右两边CPU对它的读写操作,否则会出现读写数据的错误。通常可以用中断、硬件、令牌和软件这四种方式来协调双方,本文采用的是软件方式。从上面的分析中我们可以得知,在接口电路中实际上已经利用89C52的最低地址位A0把双口RAM的存储空间分为奇、偶地址两个空间。其中,奇地址空间专供89C52写,偶地址空间专供89C52读。那么我们只需对TMS320C32的软件作相应处理即可,也就是说,TMS320C32对双口RAM的奇地址空间只读,对偶地址空间只写。这样就避免了TMS320C32和89C52对双口RAM同一地址单元的写入操作。另外,在对双口RAM进行访问之前,CPU首先对本端的BUSY信号进行查询,只有本端/BUSY信号无效时才进行读写操作,进一步保证了数据读写的可靠性。


5 结束语
  通过双口RAM实现双CPU之间的数据通信,极大地提高了数据传输速度和可靠性,满足了控制系统的实时、高速的控制要求。本文所设计的89C52与双口RAM之间的接口电路简单实用,成功解决了它们总线匹配的问题,对其他类似需要总线扩展的系统也有一定的参考价值。

关键字:DSP  51单片机  高速通信 引用地址:DSP与51单片机的一种高速通信实现方案

上一篇:单片机动态扫描接口及程序设计
下一篇:51单片机与ARINC429航空总线接口设计

推荐阅读最新更新时间:2024-03-16 12:45

DSP正引领半导体行业发展
数字信号处理器(DSP)市场正持续地摆脱其作为一个独立芯片种类的身份,一位长期跟踪该市场的分析师称,实际上DSP已经成为了整个半导体行业的领先部门。 Forward Concepts公司总裁兼首席分析师Will Strauss在他最近的无线通信快报中指出,半导体行业协会上周公布的数据表明,DSP出货量比去年同期下降47.2%,比去年12月份下降38.6%。 “不过,数字的急剧下降并不是说DSP市场疲软,而是去年很多分类为DSP的芯片今年被划为ASIC类,如飞思卡尔(Freescale)供给摩托罗拉的3G基带芯片在去年被分类为DSP,而今年高通(Qualcomm)的3G基带芯片是按照ASIC类来统计的。”
[嵌入式]
<font color='red'>DSP</font>正引领半导体行业发展
TMC2310DSP芯片在水下目标检测中的应用
  对目标进行检测、估计、跟踪是雷达与声纳应用的最终目的,其任务是对接收信号进行一定的处理、提取特征、分析识别,以检测目标的存在与否,进而通过对信号的处理与运算估计出目标的方位、距离与速度,实现定位和跟踪.对于水下目标的检测与参量估计有两种方式:一是对海洋声场进行监测,从接收信号中提取目标辐射噪声并进行识别与参量估计(即被动方式);二是由声纳系统发射给定的序列信号(常用的有CW信号和FM信号等),并对接收的回波信号进行检测与参量估计.由于海洋声场极其复杂多变,受温度、盐度、深度、梯度、水流、水域、季节、气候、风浪、温层、流层、界面的反射与折射等诸多因素的影响,使水声信道相当复杂,接收信号通常会畸变,并淹没在噪声之中.对水下目标
[嵌入式]
TMC2310<font color='red'>DSP</font>芯片在水下目标检测中的应用
一种DSP内嵌DARAM的电路设计与ADvance MS仿真验证
  在复杂的系统级微处理器设计中,存储器负责系统程序和数据的储存,是整个系统的重要组成部分,在CPU执行指令的过程中,要经常被访问存储器,所以存储器的读写速度会影响指令执行的速度。RAM是系统芯片中常用的存储器,用来存放数据,普通的RAM在一个时钟周期内只能进行一次读或写操作,即CPU在一个时钟周期内只能访问存储器一次,称为单存取随机存储器(Single-Access On-Chip RAM),而双存取随机存储器(Dual-Access On-Chip RAM)可以在一个吋钟周期内进行数据的读和写两次操作。利用 DARAM 一个周期内“双存取”的特点,可以大幅提高CPU执行指令的速度,进而提高整个系统的性能。   1 DARAM整
[嵌入式]
一种<font color='red'>DSP</font>内嵌DARAM的电路设计与ADvance MS仿真验证
51单片机控制LCD12864显示屏源程序
12864液晶在出厂时其对比度已经调好,所以用户在使用的时候第三管脚可不用接任何东西,本实验板上为了兼容多家12864液晶所以加了液晶对比度调节电位器,若用户使用我们配套的12864液晶可不用管它,液晶的第三管脚悬空就可以。有些液晶功耗比较大,用户在使用的时候可将液晶的第19、20引脚的背光不接,这样字体会很清楚。 单片机源程序如下: /**********************BST-V51实验开发板例程************************ * 平台:BST-V51 + Keil U3 + STC89C52 * 名称: * 晶振:11.0592MHZ * 说明:免费开源,不提供源代码分析. ********
[单片机]
用<font color='red'>51单片机</font>控制LCD12864显示屏源程序
51单片机(二)—— GPIO&Uart
一、GPIO 1.1 内部上拉电路 51单片机的I/O口都可以同时作为输入和输出之用。除了P0口以外,其他的I/O口都有内部上拉电阻。 3个内部上拉电阻都有不同的功用,要理解这个电路需要一定的模拟电路的知识。 内部上拉电阻示意图 由于相关的硬件配置,在编程时有以下需要注意的地方: 当I/O口被用作输入用途时,读取输入前要保证锁存器状态为1。 当将I/O口由低拉高时,指令执行后需要1~2个机器周期才能使实际的输出变成高电平。 在外围电路上需要注意的地方: P0口做普通I/O使用时,要加上拉电路,因为其没有内部上拉。 为防止电流过大,必要时外加限流电阻。 1.2 编程示例 51单片机的I/O口在使用时,并不需要对其
[单片机]
基于DSP的外部存储器引导方法实现
TI公司的高速数字信号处理器TMS320C6000系列DSP支持并行处理,采用甚长指令字(VLIW)体系结构,内部设置有8个功能单元(两个乘法器和6个ALU),8个功能单元可并行操作,最多可以在一个周期内同时执行八条32位指令。指令操作为“流水线”工作方式。应用高性能DSP可以大大提高数据密集型应用系统的性能,能快速完成滤波、卷积、FFT等数字信号处理或进行更复杂的运算,在现代信 内部结构上的差异,TMS320C6000系列与TMS320C54系列的引导方式有很大差别。在开发应用TMS320C6000系列DSP时,许多开发者,尤其是初涉及者对DSP ROM引导的实现有些困难,花费许多时间和精力摸索。笔者结合开发实例,介绍了实现外
[工业控制]
基于<font color='red'>DSP</font>的外部存储器引导方法实现
基于DSP的语音信号处理系统中的抗干扰技术
l 引言   目前,由于具有运算速度快、片上资源丰富和能够实现复杂的线性和非线性算法等特性,DSP已成为通信、计算机和消费电子产品等领域的基础器件,其中在语音信号处理技术方面显得尤为突出。然而,由于包括DSP本身在内的所有电子器件都是干扰源,而且系统所处的工作环境中还有很多外来干扰源,再加上语音识别技术对信号噪声非常敏感,所以在系统设计中必须考虑系统的抗干扰问题。否则,至少会影响系统的处理结果,甚至造成更为严重的后果。本文介绍基于DSP的语音信号处理系统中的抗干扰技术。   2 系统的干扰源和干扰途径   基于DSP的语音信号处理系统中的干扰源主要有雷电放电造成的大气噪声源、太阳黑子运动等造成的天电噪声源、电阻等电子元器件工
[模拟电子]
基于<font color='red'>DSP</font>的语音信号处理系统中的抗干扰技术
51单片机学习笔记1.流水灯实现与蜂鸣器
原理图(此次用到的部分) P2中的某个口为1(高电平)时,无电流流过,对应的二极管不会被点亮 代码 #include reg52.h void delay(unsigned int k) { int i,j; while(k--) { for(i = 1000;i 0;--i) for(j = 110;j 0;--j); } } void main() { unsigned char i = 0; P2 = ~0x01; while(1) { if(i==7) i=0; else i+=1; P2 = ~(0x01 i); delay(1); } } #include re
[单片机]
<font color='red'>51单片机</font>学习笔记1.流水灯实现与蜂鸣器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved