打印

用CPLD实现DSP2407A与S3C4480的通信

[复制链接]
1012|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Peonys|  楼主 | 2019-4-30 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用CPLD实现DSP2407A与S3C4480的通信


    在现代汽车电子中,一般有多个微控制器共同协调工作。DSP控制器采用哈佛结构,运算速度快,所以在汽车电子中广泛采用DSP芯片来实现汽车动力系统的控制。ARM是一种32位微控制器,有丰富的外扩接口,因此在汽车电子中一般用ARM来实现大容最的数据存储和人机交互或GPS全球定位系统,故在DSP和ARM之间需要进行数据交换。

   CPLD(Complex Programmable Logic Device)是一种复杂的用户可编程逻辑器件,由于采用硬件可编程技术,从而使没计硬件电路也像设计软件一样方便。DSP2407A是T1公司设计的一款专为满足大范围的数字电动机控制应用的微控制器。S3C4480是三星公司专为手持设备设计的高性价比的微榨制器。本设计以Xilinx公司的XC95108为例,通过在CPLD中开辟2块独立的SRAM区域(各1字节)来实现DSP2407A与S3C4480的并行通信。采用这种通信方式,数据传输准确、高速,基本可以满足DSP2407A与S3C4480总线接口实时通信的要求,从而将整车动力控制和人机交互有机地统一起来。


1 整体系统结构设计
    DSP2407A负责采集汽车所有的数据,再将数据通过CPLD发给S3C44B0进行数据存储和人机交互。有时S3C4480要接收触摸屏命令,命令也通过CPLD发给DSP2407A控制器,从而控制整台汽车的动作。对DSP2407A,要及时响应由S3C44B0发过来的命令;而对于S3C4480,要随时接收DSP2407A送来的数据,这样,双方通信的实时性就要很强。因此在系统设计中,DSP2407A用中断方式接收数据,S3C44BO用查询方式接收数据。

    在DSP2407A中,[DO~D7]是数据线,[A15~A12]是地址线,IS是I/0空间选通引脚,当访问外部的存储器或I/O空间时为低电平。WE是写使能,RD是读使能。IOPC7足通用I/O引脚,用来判断DSP2407A是否可以往CPLD写数据。当IOPC7为低电平时,代表DSP2407A可以往CPLD中写数据;若为高电平,则表示CPLD中已有数据,这时DSP2407A不能往CPLD中写数据。XINT1是外部中断,用来通知DSP2407A准备读取CPLD中的数据。

   在CPLD中,用l片XC95l08来实现。XC95108共有108个宏单元,有足够的空间来实现2个8位的SRAM区;主要用来实现DSP2407A和S3C44B0之间的数据交换,没置DSP2407A和S3C44B0读/写控制的状态位。在S3C44B0中’[D0~D7]是数据线,nGCSl是芯片选择信号,当存储器地址在相应段的地址区域时芯片被激活。nWE是写允许信号,nOE是读允许信号。IOPF0是通用I/O口,用来监视可否从CPLD中读取数据:当它为高电平时,代表CPLD中有数据,可以读取数据;当它为低电平时。表示CPLD中无数据可读取。IOPF1是通用I/O口,用来监视可否向CPLD中写数据:当它为高电平时,代表CPLD中无数据,可以向CPLD中写数据;当它为低电平时,代表CPLD中已有数据,S3C44B0不能向CPLD中写数据。系统结构如图1所示。




2 CPLD的设计

    采用Xilinx ISE8.1为设计工具,用国际上通用的VHDL语言来编写源程序。
2.1 8位数据从DSP中传送到ARM中
当[A15~A12]是1100时,DSP2407A开始向CPLD中写数据,并置dspsign_write和armsign_read为1;表示CPLD中已经有数据了,通知S3C4480可以读取数据和DSP2407A暂时不能向CPLD中写数据;同时将数据写入锁存器sraml中。

当ARM发出读取数据信号,开始将数据从sraml中读出,并且置dspsign_write和armsign_read为0时,表示CPLD中没有数据了,DSP2407A可以向CPLD中重新写数据。



2.2 8位数据从83CA480中传送到DSP2407A中
当S3C4480向CPLD写数据时,将数据写入到锁存器sram2中,同时置dsp_int为0,通知DSP2407A产生一个外部中断,可以从CPLD中取数据;置armsign_write为0,表示CPLD中已有数据,S3C4480不能再向CPLD中写数据。

当[A15~12]是1101时,DSP2407A向CPLD中发出一个读取信号,数据从锁存器sram2传送给DSP2407A中,并且置dsp_int为1,armsign_write为l,表示数据已被DSP2407A读走,S3C4480可以继续向CPLD中写数据。


3 S3C4480和DSP2407A通信软件设计
在本程序中,DSP2407A采用中断方式接收数据,S3C4480采用查询端口方式接收数据。

(1)DSP2407A程序

   

(2)S3C44B0程序

   




使用特权

评论回复

相关帖子

沙发
Peonys|  楼主 | 2019-4-30 16:46 | 只看该作者
用CPLD实现DSP2407A与S3C4480的通信

文档.pdf

158.1 KB

使用特权

评论回复
板凳
51xlf| | 2019-5-5 17:06 | 只看该作者
DSP和CPLD如何结合使用?   

使用特权

评论回复
地板
i1mcu| | 2019-5-5 17:06 | 只看该作者
用于扩展DSP的存储空间

使用特权

评论回复
5
pmp| | 2019-5-5 17:06 | 只看该作者
在DSP设计中运用CPLD 的情况比较多

使用特权

评论回复
6
mmbs| | 2019-5-5 17:06 | 只看该作者
CPLD将DSP和FLASH、RAM连接起来?

使用特权

评论回复
7
1988020566| | 2019-5-5 17:07 | 只看该作者
CPLD主要是完成这个工作,好让DSP专心干自己该干的事。

使用特权

评论回复
8
lzbf| | 2019-5-5 17:07 | 只看该作者
CPLD也能存储,只是资源占用多.

使用特权

评论回复
9
houjiakai| | 2019-5-5 17:07 | 只看该作者
FPGA通过EMIFA接口      

使用特权

评论回复
10
youtome| | 2019-5-5 17:08 | 只看该作者
,怎么编写DSP访问外部RAM的程序?

使用特权

评论回复
11
cemaj| | 2019-5-5 17:08 | 只看该作者
利用XINTF接口将数据传输到DSP  

使用特权

评论回复
12
updownq| | 2019-5-5 17:09 | 只看该作者
EMIF口和HPI口都扩展出来      

使用特权

评论回复
13
lzbf| | 2019-5-5 17:09 | 只看该作者
CPLD是逻辑器件,DSP是CPU   

使用特权

评论回复
14
51xlf| | 2019-5-5 17:09 | 只看该作者
CPLD起了什么作用?是帮助扩展GPIO接口吗?

使用特权

评论回复
15
1988020566| | 2019-5-5 17:09 | 只看该作者
DSP速度较高,和一些外部低速器件连接的时候需要时序上的配合

使用特权

评论回复
16
i1mcu| | 2019-5-5 17:09 | 只看该作者
用于扩展DSP的外部接口         

使用特权

评论回复
17
pmp| | 2019-5-5 17:09 | 只看该作者
书上扩展DSP的存储空间一般直接将DSP和FLASH、RAM通过地址线和数据线连接

使用特权

评论回复
18
mmbs| | 2019-5-5 17:09 | 只看该作者
电路连接上有什么要求?  

使用特权

评论回复
19
updownq| | 2019-5-5 17:09 | 只看该作者
DSP与FPGA采用EMIF接口通信,即将FPGA作为DSP的外部SRAM

使用特权

评论回复
20
cemaj| | 2019-5-5 17:09 | 只看该作者
EMIF外部存储器接口的使用  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

640

主题

901

帖子

5

粉丝