基于FPGA+DSP+ARM的数据传送总线变换器
总线接口,分别是64 bit的EMIFA和16 bit的EMIFB。EMIFA接口具备与8、16、32、64 bit系统接口的功能,EMIFB接口端口支持8 bit和16 bit系统[3]。EMIFA为64 bit存储器总线,分成ACE0~ACE3 4个存储空间,每个存储空间可以独立配置,无缝接口具有多种类型的存储器,如SRAM、Flash RAM和DDR RAM等。
3.2.2 FPGA与TMS320C6416的接口电路
在该系统中,采用DSP TMS320C6416 EMIFA接口连接到FPGA的方法实现DSP与FPGA Block RAM的无缝连接。FPGA的双端Block RAM的一端以存储器模式与DSP通信,另一端与内部FPGA逻辑通信[4]。
鉴于EMIF具有灵活的时序参数,只需要极少的FPGA逻辑,因此,只需最低限度的设计工作,FPGA就可以用做DSP协处理器。图3 所示为TMS320C6416与FPGA的接口电路。
4 系统软件设计
4.1 嵌入式操作系统
在该数据传送总线变换器中,实时数据压缩的任务由DSP完成。ARM S3C4510B完成与PC之间的以太网通信,其软件实现所要求的实时性、可靠性和复杂性使得选择一种带有TCP/IP协议包的嵌入式实时操作系统成为必需,而μCLinux是一个带有完整的TCP/IP协议的操作系统,在μCLinux中加入实时RT-Linux模块以满足对嵌入式操作系统的实时性要求。
4.2 驱动和应用程序的开发
基于μCLinux操作系统的硬件驱动和应用程序的开发是在交叉编译环境中进行的,首先在PC机上开发,然后移植到目标机上进行调试并最终固化到目标机上。所开发的硬件驱动有以太网卡控制器驱动、LCD驱动、HPI驱动等驱动程序。系统软件结构如图4所示[5]。
在μClinux操作系统上运行三个任务:读取压缩数据、通过以太网发送数据、接收和执行来自远端PC机的命令。其中读取DSP压缩数据任务对实时性有要求,它通过中断处理程序来实现,而其他的两个任务则通过用户进程来实现。以太网发送数据的任务和读取压缩数据的任务共享一个缓冲区,通过ioctl函数在其间传递缓冲区双向链表的地址。所以需要为数据处理模块上的通信接口HPI注册一个驱动程序,注册驱动程序的函数是:
result=register_chrdev(HPI_MAJOR,"hpi",&hpi_fops)
驱动程序的主要结构如下:
struct file_operations hpi_fops=
{
owner: THIS MODULE,
open: hpi_open,
read: hpi_read,
write: hpi_write,
ioctl: hpi_ioctl,
mmap:hpi_mmap,
release:hpi_release,
};
HPI驱动程序编写完成后,将驱动程序源代码置于../linux-2.4.x/driver/char目录下,同时修改同级目录下的Makefile,在../linux-2.4.x/driver/char/Makefile中加入Obj_y +=hpi.o
同时,为了能够在?滋Clinux启动时自动初始化此字符设备,还需要修改 ../linux-2.4.x/driver/char/men.c文件,在其中加入:
(1)新添加的字符驱动程序初始化函数声明:extern void hpi_init(void);
(2)在字符设备统一初始化函数int _init chr_dev_init(void)中调用新设备的初始化函数,需要在int _init chr_dev_init(void)中加入语句:hpi_init();
在函数int _init chr_dev_init(void)中,字符设备的初始化函数将被统一调用,并完成字符驱动file_operations数据结构的注册,初始化之后就可以使用HPI字符设备了。
本文所设计数据传送总线变换器,不仅解决了由于传输距离远而引起的信号畸变问题,而且满足了信息传递的实时性要求,同时具有网关功能和嵌入式Web功能,能确保系统安全接入Internet。
参考文献
[1] 李驹光.ARM应用系统开发详解--基于S3C4510B的系统设计(第二版)[M].北京:清华大学出版社,2006.
[2] TMS320C6416 datasheet[EB/OL].(2001-02).http://www.TI.com.
[3] TMS320C6000 DSP External Memory Interface(EMIF) Reference Guide[EB/OL].(2008-04).http://www.TI.com.
[4] 使用EMIF将Xilinx FPGA与TI DSP平台接口应用指南[EB/OL].(2007-01-29).http:www.xilinx.com.cn.
[5] DAVID A.Linux编程白皮书[M].朱珂,译.北京:机械工业出版社,2000.
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)