用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程序