Zybo全栈开发入门教程(基于Linux嵌入式系统):10个步骤自定义IP模块

FPGA/ASIC技术

206人已加入

描述

Zybo是Digilent公司推出的一款基于Xilinx Zynq-7000系列中最小型号Z7010 SoC的嵌入式开发平台,zybo上集成了丰富的多媒体外设接口,强大的Z7010芯片支持完成的系统设计,同时五个Pmod接口提供了丰富的扩展空间,想必很多人都听说过zedboard的大名,其实可以说zybo是mini-zedboard。Zybo全栈开发教程共分为三部分:自定义IP、移植Linux操作系统、编写驱动模块和应用。通过这三部分你将能够全面熟悉Zynq AP SoC架构的开发流程,包括FPGA逻辑电路设计、软件编程、Linux操作系统及软件开发,以及如何在Zybo开发板中应用这些技能。

在这个教程中,我们将以Digilent官网提供的Zybo Base System Design作为基础。它的架构如图。可以看到,UART1连接到USB-UART, SD0连接到SD Card Slot, USB0连接到USB-OTG port, Enet0连接到Giga-bit Ethernet Port,GPIO连接到Btn4/5,以及Quad SPI连接到on-board QSPI Flash。这些处理系统(Processing System, 简称PS)内的硬件IP通过复用I/O接口连接到板上的外设。在可编程逻辑(Programmable Logic, 简称PL)的部分,我们有HDMI Tx Controller, VDMA, I2C以及GPIO等等IP核。更多的资料可以看下载这个Zybo基本系统时包含的文件。

Linux

 

教程开始之前我们要先明确所需要的资料如下:

Zybo Board硬件板卡

Vivado 2014.1 Webpack软件开发环境

Zybo Base System:板卡底层基础配置

U-boot:与ZYBO板卡硬件设计相关

Linux内核源码

根文件系统

注:相关资料可以在Digilent的GitHub账户上找到(即 https://github.com/DigilentInc )

自定义IP就是让用户在Zynq SoC的FPGA部分实现自己的功能模块逻辑设计:

步骤一:下载zybo base system文件

Linux


根据自己的设计下载zybo base system压缩包文件并解压到指定目录

 

步骤二:使用vivado工具打开zybo base system文件

Linux

 

首先我们需要设置Vivado的环境变量,共有四个选项分别是settings64.sh、settings32.sh、settings32.csh和settings64.csh,请根据机器系统是32位还是64位以及bash版本来使用。

步骤三:删除已存在的LED模块

Linux


Linux


首先我们要确保所有的IP模块状态保持最新状态,如果有更新就会在顶部显示一条黄色的提示栏,点击更新(upgrade)即可,然后在base system中已经预先设置了一个LED模块,这个模块主要采用PS的I/O接口,我们要把这个IP删除(如第二张图所示)。

步骤四:设置ip核Vendor

Linux


在创建myLed IP核之前我们要Project Settings里面设置Vendor选项的名字,否则会引起Vivado软件内部异常,名字可以根据自己喜好随意设置。

 

步骤五:创建myLed IP模块

Linux


Linux


点击菜单栏Tools—>Create and Package IP,弹出的对话框选择Create a new AXI4 Peripheral,然后在弹出的对话框输入IP名字、版本、存储位置等相关信息,点击Next继续下一步。

步骤六:增加模块接口

Linux


myLed IP采用AXI4外设接口,接口类型为Lite,模式为Slave,数据宽度32bits,寄存器数量为4,确保Name选项为S_AXI,实际上我们只需要一个寄存器,但是最小设置为4。

步骤七:编辑IP功能逻辑代码

Linux


Linux


Linux


Linux


基本设置完成后点击Next,我们需要选择Edit IP,然后添加用户定义的逻辑。我们要修改两个文件,分别是MyLed_v1_0_S_AXI和MyLed_v_0(对应上图顺序),经过上面的修改我们将slv_reg0[3:0]与输入端口led[3:0]连接起来。

 

步骤八:封装IP模块

Linux


通过步骤七我们定义了IP逻辑,然后我们需要将它打包为一个黑盒,在Project Manager下拉菜单选择Package IP,根据提示进行设置,保证弹出的对话框右侧选项全部打上绿勾。

步骤九:将自定义IP myLed_v1.0增加到系统中

Linux


在block design的空白处右键选择add IP,搜索myled找到刚才封装的IP。增加myLed_v1.0模块后,对话框顶部会出现绿色的提示框,我们点击Run connection Automation,这个操作会将myLed IP的AXI4-Lite总线与PS连接起来。

步骤十:连接外部led端口

Linux


在空白处点击右键选择Create Port,设置为output,位宽led[3:0],然后用鼠标拖拽将这个输出端口与myLed_0的输出接口led[3:0]建立连接。

步骤十一:修改约束文件,生成比特流文件

Linux


打开Constraints下拉菜单下的base.xdc管脚约束文件,将led[3:0]与FPGA硬件管脚绑定,即与zybo板上的四个led灯连接,最后在Program and Debug下拉菜单中选择Generate Bitstream,至此自定义用户IP并生成比特流文件完成。

下篇文章中将向大家介绍在本篇内容基础上移植Linux操作系统,进一步深入了解Zynq SoC的开发模式。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分