DSP与单片机的一种高速通信实现方案
起,也就是说此时双口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信号无效时才进行读写操作,进一步保证了数据读写的可靠性。
《DSP与单片机的一种高速通信实现方案(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/155575.html
图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与单片机的一种高速通信实现方案(第2页)》