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

发布者:花开堂前最新更新时间:2017-09-14 来源: ofweek关键字:DSP  单片机  高速通信 手机看文章 扫描二维码
随时随地手机看文章

  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信号。

 

  

 

  下面讨论一下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  单片机  高速通信 引用地址:DSP与单片机的一种高速通信实现方法

上一篇:一种采用单片机的超大容量存储器接口设计
下一篇:STM8S_010_I2C读写EEPROM(硬件方式)

推荐阅读最新更新时间:2024-03-16 15:36

基于Atmega128单片机和GPRS的矿区铁路道口监测系统
1 引言   矿区铁路是衔接国家铁路与矿区的中间环节,是铁路运输网的重要组成部分。据有关资料统计,目前国内矿区铁路超过2万公里且其沿线附近通常分布着多个道口。由于道口大多分布在远离市区的矿山企业内部,并且其数量多、分散以及道口之间的距离长,加上矿区内各种运输工具的交叉作业及车辆、人员的不固定的流动,使矿区铁路道口的安全管理成为十分突出的问题。为使各级矿区管理部门能及时、准确掌握各个道口的的安全情况,本文以 Atmega128和MC55为核心,设计一套铁路道口监测系统,实现对铁路道口监测管理的自动化、数字化和网络化。这对保证矿区正常生产、提高矿山企业经济效益和通过道口车辆、行人安全具有重要意义。 2 系统组成
[单片机]
基于Atmega128<font color='red'>单片机</font>和GPRS的矿区铁路道口监测系统
2019MCU变数多,全面战役打响
在不同地域、不同战争阶段和不同战斗规模的情况下,战术的运用也各不相同。根据时机、实力等不同情况,灵活运用和变换战术,对夺取战斗胜利具有重要意义。而对在市场已经驰骋多年的MCU来说,当时间进入2019年,应该做出哪些新的战术选择呢?毕竟MCU增势强劲,不仅销售额在2022年将达到近239亿美元,出货量更将以11.1%的复合年增长率增至约438亿片。 全面竞争 对于MCU厂商来说,除了在芯片本身的集成度、成本、功耗、安全层面不断进化,打造一个广阔的产品系列平台外,还需要从多重维度来推进,应对层出不穷的应用需求。 意法半导体(ST)中国区微控制器事业部市场及应用总监曹锦东指出,随着应用的深入,MCU需更多的合作伙伴在硬
[嵌入式]
2019<font color='red'>MCU</font>变数多,全面战役打响
基于单片机技术的正弦波波形失真度控制
1 正弦波的失真度   设所生成的一个正弦波为A,其功率为P,它包含的谐波分量为A1,A2,……An,其相应的功率分别是P1,P2,……Pn,那么正弦波失真度r定义为:      我们研制的磁耦合非接触式温度传感器是靠正弦波进行非接触传递信号的,该正弦波的频率大小代表某一温度值,因此对正弦波发生器发出的正弦波的失真度有很高的要求。因为其谐波分量的存在(即便进行了滤波),还足以产生一个不存在的温度值,从而导致错误的测量和错误的控制。   正弦波的失真度可用“正弦波失真仪”来测量。 2 单片机正弦波发生器   采用查表方式的单片机正弦波发生器的工作原理如下:   (1)对正弦信号进行采样,设正弦波一个周期采样点数共N点。参见公
[单片机]
基于<font color='red'>单片机</font>技术的正弦波波形失真度控制
基于51单片机八路抢答器资料
(1)设计一个可供8人进行的抢答器。 (2)系统设置复位按钮,按动后,重新开始抢答。 (3)抢答器开始时数码管显示序号0,选手抢答实行优先显示,优先抢答选手的编号一直保持到主持人将系统清除为止。抢答后显示优先抢答者序号,同时发出音响。,并且不出现其他抢答者的序号。 (4)抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间设定为30秒,当主持人启动“开始”开关后,定时器开始减计时,同时蜂鸣器有短暂的声响。 (5)设定的抢答时间内,选手可以抢答,这时定时器停止工作,显示器上显示选手的号码和抢答时间。并保持到主持人按复位键。 (6)当设定的时间到,而无人抢答时,本次抢答无效,扬声器报警发出声音,并禁止抢答。定时器上显示
[单片机]
基于51<font color='red'>单片机</font>八路抢答器资料
51单片机分时控制8路舵机程序
本程序中用到的头文件 12c5a.H下载: http://www.51hei.com/f/12c5a.rar //分时控制舵机,采用的单片机是STC12c5a 51增强型单片机,晶振11.0592MHZ #include 12c5a.H void delay(uint16 time); void Timer_init(); void Timer0(uint32 us); uint16 xdata pwm ={1500,1500,1500,1500,1500,1500,1500,1500}; sbit pwm1=P0^0; sbit pwm2=P0^1; sbit pwm3=P0^2; sbit pwm4=
[单片机]
51单片机开发中一些常用代码块
数码管中的16个字符 uchar code table ={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; 延时函数(使用之前先声明一遍) void delay(uint); void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } 点亮第一个二级管 #include reg52.h //点亮第一个发光二级管 sbit D1=P1^0;//P1是P1口,P1^0代表D1,D1为自己命名的变量 m
[单片机]
单片机C语言入门教程
学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(?Vision)将这些部份组合在一起。 学习之前请先安装KEILC51软件,在学会使用汇编语言后,学习C语言编程是一件比较容易的事,我们将通过一系列的实例介绍C语言编程的方法。图1-1所示电路图使用89c51单片机作为主芯片,这种单片机性属于80C51系列,其内部有8K的FLASH ROM,可以反复擦写,非常适于做实验。89c51的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮
[单片机]
<font color='red'>单片机</font>C语言入门教程
基于51单片机的多点温度控制系统设计
摘 要:针对目前壁挂炉采暖中温度控制不准确的现状,以单片机为控制中心,采用Dalias公司的“一线总线”数字化温度传感器DSl8820以及脉冲控制器件,设计一款多点测温及温度控制系统;系统能够同时测量多点温度,并根据温度设定实时控制各回路通断及壁挂炉的燃烧与停止,从而进一步提高居室的舒适性及采暖系统的经济性。 关键词:51单片机;DSl8820;多点温度检测;温度控制系统 随着生活水平的提高,人们对家居需求由面积需求变为舒适需求。地板采暖采用辐射方式供暖,符合人体生理需求曲线,如果控制系统选取得当,不仅可以提高房间舒适度,更可以使系统运行费用降低许多。如今一般是在典型位置安装一个温控装置,温控装置连接到壁挂炉,温控器根据室温
[工业控制]
基于51<font color='red'>单片机</font>的多点温度控制系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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