在ZedBoard下SPI接口和ARM处理器端实现以太网远端传输的设计

发布时间:2020/6/8

本文介绍了Zed Board平台下可编程逻辑终端SPI接口和ARM处理器终端以太网远程传输的设计。 介绍了Linux下可编程逻辑SPI接口和驱动程序生成的设计,以及采用UDP/IP协议的以太网传输技术。 实验结果表明,该系统能够准确地完成实时数据传输。 
随着嵌入式技术和市场需求的不断发展,嵌入式设备之间进行信息交互以及数据远端传输成为嵌入式系统的一个重要的环节。在嵌入式应用中以太网是解决远端传输高效可行的技术,如进行远端监控、控制和远端异常检测,可节省大量的人力和财力[1]。如今,硬件设备间的通信通常采用WISHBONE总线协议、I2C总线协议、UART协议等。SPI是串行外围接口协议,相比其他协议具有传输速度快、应用简单和占用引脚资源少等优点[2]。本文利用全可编程片上系统特性实现了一种基于ZedBoard的SPI接口及以太网远端传输的设计方案,完成Linux下硬件设备间应用SPI协议通信和数据的远端传输功能,采用PL端制定接口控制模块SPIIP核并且编写Linux下IP核驱动的方法实现接口控制,Linux系统下UDP/IP协议进行以太网远端传输。同时充分利用了ZedBoard平台主芯片Zynq-7000双核CortexA9ARM核和可编程逻辑于一体的特性,为软硬件设计提供了很强的灵活性。

1 系统总体设计
本设计的主控板为ZedBoard开发板,主芯片Zynq-7000结合高性能双核ARM Cortex A9MP Core处理系统和可编程逻辑于一体。系统主要功能是:可编程逻辑端通过SPI协议实现硬件设备间的通信,通过Pmod口实现硬件设备的物理连接,接收的数据再采用Linux系统下UDP/IP协议实现以太网远端传输。系统框图如图1所示。

图1 系统框图

1.1 硬件设计
1.1.1 SPI硬件接口
通过ZedBoard上的Pmod接口实现硬件的物理连接,ZedBoard上的4个Pmod接口(JA、JB、JC、JD)支持LVCMOS3.3V和LVTTL3.3V信号,其中的2个(JC、JD)能够支持525Mb/s的LVDS信号。为了避免短路电流和静电,Pmod接口电路设计中为每个信号口增加了1个静电保护二极管和串接了1个 200Ω的电阻[3] 。Pmod接口电路设计如图2所示。其中SPI协议传输只用到Pmod的4个引脚,SPI的4个信号线SS、MOSI、MISO、SCK分别连接到Pmod的JA1、JA2、JA3、JA4。


图2 Pmod接口电路

1.1.2 硬件配置
Xilinx可编程嵌入式系统工程在Xilinx公司的嵌入式开发套件(Embedded Development Kit,EDK) 环境实现,Xilinx EDK具有完成嵌入式系统设计的一套工具和硬件配置需要的IP核 [4] 。EDK环境下硬 件结构设计的主要工具是Xilinx开发平台(Xilinx Platform Studio,XPS),硬件设计步骤如下:
(1)设置新工程路径;
(2)用IPCatalog中的IP或自定义IP配置外设;
(3)建立UCF文件;
(4)bits流生成;
(5)下载bit流到FPGA中。

本设计中添加一个AXI4-Lite总线设备SPI模块来控制Pmod接口实现硬件设备之间通信,其中 AXI4-Lite全局时钟ACLK设置为100MHz。SPI模块分配的物理地址为0x42020000,以及64K小的空间,SPI配置信息,如图3所示


图3 SPI模块物理地址及大小

1.2 软件设计
软件设计包含Linux下SPI核驱动和Linux下UDP/IP以太网传输应用程序两部分。SPI核驱动在软件设计包含Linux下SPI核驱动和Linux下UDP/IP以太网传输应用程序两部分。SPI核驱动在虚拟机中Ubuntu下交叉编译完成,传输应用程序在EDK开发套件中的软件开发环境下完成。

1.2.1 SPI核驱动
由于远端传输由在Linux系统下UDP/IP协议实现的,因此,编写Linux下的IP驱动,应用程序就可以通过Linux的标准接口访问SPI设备。本设计编写的是MISC型设备驱动程序,包含设备加载、设备卸载以及文件操作函数。



展开

收起

微信

客服

关注公众号咨询客服

  • 在线客服热线

    4008-755-202

  • 服务时间

    周一至周五8:30~18:30

    周六、周日9:00~18:00

  • 投诉工作人员

    朱小姐

    4008-755-202

QQ

咨询

官方微信