你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

EETOP赛灵思“安富利杯”LX9开发板试用笔记之基于AXI总线的自定义IP设计

发布者:huxiaokai2005 时间:2011-10-24 13:28:19

(本设计笔记配有视频演示,地址:http://xilinx.eetop.cn/viewnews-850

前言:此次非常感谢EETOPAvnet给我这次机会试用LX9 Microboard开发板,这次试用的过程还是很曲折的。当我第一次看到这个活动的时候,其实已经错过了第一阶段试用的时间,但是很庆幸,还有第二阶段的试用机会。当第二阶段试用名单出来之后,有点小失望,试用名单中没有我的名字。这样在我渐渐快要淡忘这次活动的时候,接到一个从北京打来的长途电话,是EETOP论坛的管理员打来的,在电话中说第二阶段试用者中有一位由于个人问题想要将试用机会转让,询问我有没有兴趣,我当然是毫不犹豫地答应了下来,但是给我试用的时间只有20天,虽然时间比较紧,但是对于这次难得的机会需要格外珍惜,争取交出一份令自己满意的答卷。

1         LX9 Microboard开发板研究

在报名参加活动的时候也了解过关于LX9的资料,但刚收到LX9时给我的第一感觉是袖珍,比一个USB Cable还要小,这要佩服Avnet的工程师了,在如此小的面积下设计出功能强大、性能稳定的开发板来。下面就要对LX9进行开发了,第一步就是要彻底看透这块板子,LX9是以Xilinx公司的Spartan-6 XC6SLX9-2CSG324C FPGA为核心的开发板,总所周知,Spartan FPGA是以低成本、高性价比为主打方向,因此LX9也是以低成本为主要特点,它为工程师提供了适用于MicroBlaze嵌入式应用和关于Spartan-6 FPGA开发的一个很好的解决方案。如图1所示为LX9的正反面视图。

aLX9正面实物图

bLX9反面实物图

1-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.pdfLX9开发板简介

Avnet_S6_LX9_Microboard_User_Guide.pdfLX9开发板使用说明

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研究

1-2 LX9开发板结构图

如图2所示为LX9开发板结构图,其中以Spartan-6 LX9 FPGA为核心,包含扩展I/O、时钟源、miscellaneous I/O、通信端口、存储器和电源这六大模块。

扩展I/O包含两个2*6PMOD I/O接口,可以扩展ADCDAC等外设;

时钟源是由两部分组成,第一部分由CDCE913为核心的时钟生成电路组成,一路时钟输入三路输出,其中LX9开发板上提供27MHz的时钟源输入,通过CDCE913分频倍频后输出40MHz66.7MHz100MHz的三路时钟输出,并且CDCE913还可由I2C接口可编程时钟输出频率;第二部分由DS1088LU-66+组成,输出一个66.7MHz的固定频率时钟。

miscellaneous I/O4LED灯、2个按钮和1个拨码开关组成。

通信端口有三部分:USB-JTAG接口、以太网接口和UART-USB接口。其中USB-JTAG接口可以代替USB Cable,通过USB接口配置FPGA并且烧写FLASH;以太网接口为LX9开发板提供各种网络协议应用;UART-USB接口可以通过USB接口实现UART串行接口协议,使用mini-usb代替了的DB9接口,大大缩小了接口体积。

存储器由32M*16LPDDR SDRAM128Mb SPI FLASH组成。在做Microblaze系统开发时,SDRAM可用于作为处理器内存,而FLASH则用于保存硬件系统配置。

2         AXI总线研究

熟悉了LX9开发板之后,就要对其进行开发了,但是对其做何应用呢?由于本人是做无线通信的,LX9上也没有相关接口:板上唯一的稍高级接口,以太网接口又不大熟,并且20天的时间太紧了,虽然Avnet官网上提供了LwIP参考设计,但是如果仅仅按照那个例程跑跑程序也没什么意思;板上另外一个通信接口UART-USB感觉又过于简单了,相信初学者初学FPGA时都是拿UART练手的。

LX9开发板的一大特点就是便利的MicroBlaze系统开发,几个预制MicroBlaze 系统所附带的套件使得用户能够在像任何现存标准微处理器中一样开始软件研发。本人以前没接触过Microblaze,不过倒是对AlteraNiosII做过很多相关开发,这两大软核开发流程应该是互通了,掌握了一种,对另外一种应该可以很快上手。果然,按照教程走了一遍MicroBlaze系统的开发就感觉已经轻车熟路了。在基于MicroBlaze系统的开发时,首先可以通过ISE Project Navigator进行整个系统设计的流程导向,在Xilinx Platform Studio中建立基于MicroBlaze系统,在Software Development Kit中进行软件开发,基本与AlteraQuartusIISOPC BuilderNiosII Software Build Tools这个套路相同。然而,在Xilinx Platform Studio中建系统时,让我眼前一亮,那就是Microblaze加入了对AXI总线的支持,在早期版本的Microblaze中主要支持PLBLMBFSL总线的支持。加入AXI总线应用对Microblaze的性能和灵活性都有了提高,因此,我决定对AXI总线的做一下探究。

AXIAdvanced eXtensible Interface)总线协议是ARM公司提出的AMBAAdvanced Microcontroller Bus Architecture)协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。

AXI总线协议是在2003AMBA3.0版本中首次提出的,包含AXIAXI-Lite的第一版本。2010年提出的AMBA4.0版本中包含了AXIAXI-Lite的第二版本,并且新加入了AXI-Stream

ARM官方提供了对AXI总线规范的详细介绍,以下为相关资料:

AMBA AXI Protocol Specification v2.0

AMBA AXI4-Stream Protocol Specification V1.0

Xilinx支持AMBA4.0中的AXISpartan®-6Virtex®-6及以后系列器件支持AXI总线协议,支持包含AXI-LiteAXIAXI-Stream这三种模式,其中AXI-Lite模式主要处理简单应用,通过简单协议可以实现基于地址映射的传输,因其一个地址只对应一个数据的读写,比较适用于控制寄存器和状态寄存器读写应用;AXI模式可以处理需要数据吞吐量比较高的场合,它也是基于地址映射的传输,因其支持突发数据传输,最高支持一个地址256个数据的突发传输;AXI-Stream模式是基于流数据的单向高速传输,不是基于地址映射的,因此并没有突发数据量大小限制。

XilinxAXI总线支持提供了许多文档资料:

AXI Specification

AXI-Lite IPIF Specification for Control/Peripheral devices

AXI-Lite IPIF Specification for burst capable memory mapped devices

AXI-Lite IPIF Specification for burst capable stream devices

3         基于AXI总线的自定义IP设计

Xilinx中支持的AXI总线协议有三种模式:AXI_LiteAXIAXI_Stream,在Xilinx FPGA中的AXI总线应用都是基于Microblaze系统,而自定义IP设计可以最直接接触总线操作,因此下面以在Microblaze系统中设计基于AXI-Lite自定义IP为例分别对这三种模式进行详细说明。

AXI-Lite模式主要用于处理简单操作,如功能寄存器或者控制寄存器的读写,因此根据AXI_Lite模式的特点再基于LX9开发板的资源,可以做一个读取DIP拨码开关状态值和控制LED灯的自定义IP。由于AXI_Lite模式的协议比较简单,在介绍协议的同时主要介绍一下在Microblaze系统中设计自定义IP的方法,而在AXIAXI-Stream这部分就不再重复说明。

3.1 自定义外设设计流程

第一步:在ISE Project Navigator中建立工程

3-1 新建工程

3-2 设置对应LX9开发板的选项

3-3 点击Finish完成工程建立

第二步,建立基于Microblaze系统

3-4

3-5 新建Microblaze系统

3-6 建立基于AXI总线的Microblaze系统

3-7 DIPLED去除

3-8 建立完成的Microblaze系统

第三步,加入自定义外设

3-9

3-10 设置自定义外设名称

3-11 选择AXI4-Lite

3-12 设置2个寄存器,因为需要控制DIPLED

3-13 选择需要的信号

3-14 点击Finish完成设计

3-15 IP列表中出现设计的IPAXI_LITE_CUSIP

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了