这是在前些日子参加LX9开发板试用活动时写的试用文档,趁着这次【博客大赛】与各位分享一下。
在报名参加活动的时候也了解过关于LX9的资料,但刚收到LX9时给我的第一感觉是袖珍,比一个USB Cable还要小,这要佩服Avnet的工程师了,在如此小的面积下设计出功能强大、性能稳定的开发板来。下面就要对LX9进行开发了,第一步就是要彻底看透这块板子,LX9是以Xilinx公司的Spartan-6 XC6SLX9-2CSG324C FPGA为核心的开发板,总所周知,Spartan FPGA是以低成本、高性价比为主打方向,因此LX9也是以低成本为主要特点,它为工程师提供了适用于MicroBlaze嵌入式应用和关于Spartan-6 FPGA开发的一个很好的解决方案。如图1所示为LX9的正反面视图。
图1-1 LX9实物图
在Avnet官网上提供了关于LX9开发板的相关资料及开发教程,并且提供了参考设计,这为开发者提供了很大的便利,链接为:Spartan-6 LX9 Microboard。以下是EETOP提供的资料:
文档资料:
Avnet_S6_LX9_Microboard_Getting_Start.pdf:进行LX9开发前的准备工作
Avnet_S6_LX9_Microboard_Product_Brief.pdf:LX9开发板简介
Avnet_S6_LX9_Microboard_User_Guide.pdf:LX9开发板使用说明
J50_EDK05-Chipscope_Debugging_13_1_1.pdf:利用Chipscope调试开发文档
Avnet_S6_LX9_Microboard_Configuration_Guide_v1_3.pdf:对LX9开发板进行FPGA配置和编程的说明
中文视频资料:
http://xilinx.eetop.cn/viewnews-733
图1-2 LX9开发板结构图
如图2所示为LX9开发板结构图,其中以Spartan-6 LX9 FPGA为核心,包含扩展I/O、时钟源、miscellaneous I/O、通信端口、存储器和电源这六大模块。
扩展I/O包含两个2*6的PMOD I/O接口,可以扩展ADC和DAC等外设;
时钟源是由两部分组成,第一部分由CDCE913为核心的时钟生成电路组成,一路时钟输入三路输出,其中LX9开发板上提供27MHz的时钟源输入,通过CDCE913分频倍频后输出40MHz、66.7MHz和100MHz的三路时钟输出,并且CDCE913还可由I2C接口可编程时钟输出频率;第二部分由DS1088LU-66+组成,输出一个66.7MHz的固定频率时钟。
miscellaneous I/O由4个LED灯、2个按钮和1个拨码开关组成。
通信端口有三部分:USB-JTAG接口、以太网接口和UART-USB接口。其中USB-JTAG接口可以代替USB Cable,通过USB接口配置FPGA并且烧写FLASH;以太网接口为LX9开发板提供各种网络协议应用;UART-USB接口可以通过USB接口实现UART串行接口协议,使用mini-usb代替了的DB9接口,大大缩小了接口体积。
存储器由32M*16的LPDDR SDRAM和128Mb SPI FLASH组成。在做Microblaze系统开发时,SDRAM可用于作为处理器内存,而FLASH则用于保存硬件系统配置。
熟悉了LX9开发板之后,就要对其进行开发了,但是对其做何应用呢?由于本人是做无线通信的,LX9上也没有相关接口:板上唯一的稍高级接口,以太网接口又不大熟,并且20天的时间太紧了,虽然Avnet官网上提供了LwIP参考设计,但是如果仅仅按照那个例程跑跑程序也没什么意思;板上另外一个通信接口UART-USB感觉又过于简单了,相信初学者初学FPGA时都是拿UART练手的。
LX9开发板的一大特点就是便利的MicroBlaze系统开发,几个预制MicroBlaze 系统所附带的套件使得用户能够在像任何现存标准微处理器中一样开始软件研发。本人以前没接触过Microblaze,不过倒是对Altera的NiosII做过很多相关开发,这两大软核开发流程应该是互通了,掌握了一种,对另外一种应该可以很快上手。果然,按照教程走了一遍MicroBlaze系统的开发就感觉已经轻车熟路了。在基于MicroBlaze系统的开发时,首先可以通过ISE Project Navigator进行整个系统设计的流程导向,在Xilinx Platform Studio中建立基于MicroBlaze系统,在Software Development Kit中进行软件开发,基本与Altera的QuartusII、SOPC Builder、NiosII Software Build Tools这个套路相同。然而,在Xilinx Platform Studio中建系统时,让我眼前一亮,那就是Microblaze加入了对AXI总线的支持,在早期版本的Microblaze中主要支持PLB、LMB和FSL总线的支持。加入AXI总线应用对Microblaze的性能和灵活性都有了提高,因此,我决定对AXI总线的做一下探究。
AXI(Advanced eXtensible Interface)总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。
AXI总线协议是在2003年AMBA3.0版本中首次提出的,包含AXI和AXI-Lite的第一版本。2010年提出的AMBA4.0版本中包含了AXI和AXI-Lite的第二版本,并且新加入了AXI-Stream。
ARM官方提供了对AXI总线规范的详细介绍,以下为相关资料:
AMBA AXI Protocol Specification v2.0
AMBA AXI4-Stream Protocol Specification V1.0
Xilinx支持AMBA4.0中的AXI,Spartan®-6、Virtex®-6及以后系列器件支持AXI总线协议,支持包含AXI-Lite、AXI、AXI-Stream这三种模式,其中AXI-Lite模式主要处理简单应用,通过简单协议可以实现基于地址映射的传输,因其一个地址只对应一个数据的读写,比较适用于控制寄存器和状态寄存器读写应用;AXI模式可以处理需要数据吞吐量比较高的场合,它也是基于地址映射的传输,因其支持突发数据传输,最高支持一个地址256个数据的突发传输;AXI-Stream模式是基于流数据的单向高速传输,不是基于地址映射的,因此并没有突发数据量大小限制。
Xilinx对AXI总线支持提供了许多文档资料:
AXI Specification
AXI-Lite IPIF Specification for Control/Peripheral devices
AXI-Lite IPIF Specification for burst capable memory mapped devices
在Xilinx中支持的AXI总线协议有三种模式:AXI_Lite、AXI和AXI_Stream,在Xilinx FPGA中的AXI总线应用都是基于Microblaze系统,而自定义IP设计可以最直接接触总线操作,因此下面以在Microblaze系统中设计基于AXI-Lite自定义IP为例分别对这三种模式进行详细说明。
AXI-Lite模式主要用于处理简单操作,如功能寄存器或者控制寄存器的读写,因此根据AXI_Lite模式的特点再基于LX9开发板的资源,可以做一个读取DIP拨码开关状态值和控制LED灯的自定义IP。由于AXI_Lite模式的协议比较简单,在介绍协议的同时主要介绍一下在Microblaze系统中设计自定义IP的方法,而在AXI和AXI-Stream这部分就不再重复说明。
第一步:在ISE Project Navigator中建立工程
图3-1 设置对应LX9开发板的选项
第二步,建立基于Microblaze系统
图3-2 建立基于AXI总线的Microblaze系统
图3-3 建立完成的Microblaze系统
第三步,加入自定义外设
图3-4 选择AXI4-Lite
图3-5 设置2个寄存器,因为需要控制DIP和LED
图3-6 选择需要的信号
图3-7 在IP列表中出现设计的IP:AXI_LITE_CUSIP
下接“ 基于AXI总线的自定义IP设计(二)”
用户377235 2012-5-3 09:57