热情的PMOD IPS入门

概述

Digilent提供了几个ip,旨在使在FPGA上实现和使用Pmod尽可能简单。本指南将描述如何在Vivado Microblaze或Zynq设计中使用Pmod IP核。

在本教程结束时,您将为您的FPGA或Zynq平台提供Vivado设计和演示,它使用Digilent PMOD IP核心。

下面两个下拉表显示了本教程支持的Digilent FPGA系统板和Pmods,以及完成本教程需要了解的关于它们的一些详细信息。

平台支持
平台 处理器类型
ARTY A7 Microblaze
附庸风雅的S7 Microblaze
arty z7 Zynq
Basys3 Microblaze
Cmod A7 Microblaze
CMOD S7 Microblaze
科拉Z7 Zynq
Genesys2 Microblaze
Nexys4 Microblaze
Nexys4-DDR Microblaze
Nexys视频 Microblaze
Microblaze
Zybo Zynq
Zybo Z7. Zynq
PMODS支持
Pmod 接口类型 参考时钟频率(兆赫 时钟信号名称 中断销名称/ s 使用PmodGPIO 额外的笔记
8 ld GPIO - - - 是的 -
ACL SPI 80 ext_spi_clk. - - -
ACL2 SPI 50. ext_spi_clk. - - -
AD1 SPI - - - - -
AD2 IIC. - - - - -
AD5 SPI 50. - - - -
肌萎缩性侧索硬化症 SPI 50. ext_spi_clk. - - -
amp2. GPIO - - timer_interrupt - -
aq IIC. - - - - -
BB GPIO - - - 是的 -
祝福 UART - - - - -
BT2 UART - - - - -
BTN GPIO - - - 是的 -
可以 SPI One hundred. ext_spi_clk. SPI_interruptGPIO_interrupt -
CLS SPI 50. ext_spi_clk. - - -
CMPS2 IIC. - - - - SDK项目需要数学库
颜色 IIC. - - - - -
DA1 SPI 50. ext_spi_clk. - - -
DHB1 脉宽调制/GPIO - - - - -
DPG1. SPI 50. ext_spi_clk. - - -
内附 GPIO - - - - -
ESP32 UART - - - - -
全球定位系统(GPS) UART - - gps_uart_interrupt - -
陀螺仪 SPI 50. ext_spi_clk. - - -
HYGRO IIC. - - - - -
JSTK SPI 16 ext_spi_clk. - - -
JSTK2 SPI 16 ext_spi_clk. - - -
KYPD GPIO - - - - -
领导 GPIO - - - 是的 -
maxsonar. GPIO - - - - -
MicroSD 使用Pmod SD IP核 -
mtd SPI - - - - -
导航 SPI /GPIO 50. ext_spi_clk. - - -
oled. SPI /GPIO - - - - -
OLEDrgb SPI /GPIO 50. ext_spi_clk. - - -
PIR GPIO - - - - -
R2R GPIO - - - - -
RTCC IIC. - - - - -
SD. SPI - - - - -
SF3 SPI 50. ext_spi_clk. QSPI_INTERRUPT - -
苏维埃社会主义共和国 GPIO - - - 是的 -
SWT. GPIO - - - 是的 -
TC1 SPI 50. ext_spi_clk. - -
TMP3 IIC. - - - -
无线上网 SPI - - WF_INTERRUPT - 需要385 kB的Bram或DDR

先决条件

硬件

  • 支持Digilent 7系列FPGA系统板
  • Microusb Cable / s
  • 一个或多个支持Digilent Pmods

软件

  • Xilinx Vivado 2018.2与Xilinx SDK和Digilent Board文件
  • Digilent Vivado IP库
    • 步骤2本教程介绍了如何下载和解压缩这些文件。

重要的

如果要使用的PMOD IP具有自述文件,请务必在开始本教程之前查看它。此文件可以在其中找到vivado-library / ip / Pmods /“你pmod”目录中。

教程

1.创建一个新的Microblaze/Zynq模块设计

要确定本教程是否需要使用Microblaze或Zynq,请参阅平台支持下拉桌发现概述部分本教程的。或者,导航到平台的资源中心在这里
Microblaze
遵循Vivado IP Integrator入门教程获得一个基本的MicroBlaze块设计。



具有外部DDR内存的电路板的微孔块设计的示例。
Zynq
遵循Vivado IP Integrator入门教程获取基本的Zynq块设计。



这是Zynq模块设计的一个例子。

2.添加Digilent库存储库

2.1)找到Digilent的最新版本vivado-library版本号与使用的Vivado版本匹配的存储库(例如:“v2016.4-1”是Vivado 2016.4的第一个版本。下载Vivado-Library- .zip文件 (不是一个源代码档案!),然后提取这个存档在一个难忘的位置。这个GitHub库包含了大量的用于Digilent板的IP核,包括Digilent所有的Pmod IP核和Pmod接口描述。
2.2)点击项目设置在项目经理。

2.3)点击知识产权然后打开存储库管理器标签。点击 添加按钮并选择vivado-library解压ZIP存档到的文件夹。点击好吧


3.将Pmod添加到你的方块设计中

3.1)点击董事会选项卡(在下面的橙色突出显示)

信息

此列表包含在您的平台的板文件中定义的所有组件。您可以使用它轻松地插入IP块,该IP块将与平台上的硬件一起工作,例如以太网端口或通用用途领导.在步骤1.1中创建初始设计时,应该已经选择了其中一些。

3.2)向下滚动到板组件的Pmod部分。双击要设置的连接器。

3.3)选择指定Pmod的IP,点击好吧.下面的照片显示了所选PMODOLEDRGB的IP核心。

提示

几个比较简单的GPIOPmods可以与PmodGPIO IP Core一起使用。要查看Pmod是否受此IP核的支持,请参阅Pmod兼容性表概述部分本教程的。


4.连接自动化运行

4.1)点击连接自动化运行然后选中PMOD IP核心名称旁边的框,然后单击好吧


5.连接参考时钟

重要的

一些PMOD IP核心需要参考时钟正常运行。看看您的PMOD是否需要参考时钟请参阅发现的PMOD兼容表概述部分.如果您的PMOD不需要参考时钟,则跳到步骤6

将一个参考时钟附加到Pmod IP核是不同的,这取决于您正在使用的平台。选择最能描述平台的选项卡(请参阅概述部分如果你不知道)。
Zynq
5.1)双击ZYNQ处理系统块来重新定制它。在左侧菜单中,单击时钟配置.扩大PL织物时钟下拉并检查尚未检查的第一个fclk_clk以激活它。将所请求的频率设置为PMOD所需的频率。该频率可在Pmod兼容性图表中找到概述部分本教程的。点击好吧

提示

如果已经检查的FCLK_CLK的一个具有与PMOD所需频率匹配的频率,则可以使用该时钟。可以将一个时钟连接到多个目的地。

5.2)将此新时钟连接到PMOD IP内核上的时钟输入。可以在PMOD兼容性图表中找到PMOD IP内核的时钟输入的名称概述部分本教程的。

微毛与米格
5.1)双击MIG_7Series块以重新自定义。在Xilinx内存接口生成窗口中,请继续单击下一个直到你看到选择额外的时钟(如下所示)。单击此框并选择Pmod所需的频率或最接近的可用较慢频率。所需的频率可在Pmod兼容性图表中找到概述部分本教程的。

提示

如果其他时钟中的一个已经被使用,并且它的频率与你的Pmod所需的频率相匹配,那么你可以使用这个时钟。可以将一个时钟连接到多个目的地。如果是这样的话,你可以取消退出MIG配置对话框。

5.2)请点击下一个.当你到达引脚选择屏幕时,点击验证然后好吧.继续点击下一个.点击接受在许可协议屏幕上,然后继续单击下一个.当你到达终点时,点击产生用额外的时钟重新生成你的米格方块。
5.3)连接这个新的时钟到您的Pmod IP核的时钟输入。您的Pmod IP核的时钟输入端口的名称可以在Pmod兼容性图表中找到概述部分本教程的。

MicroBlaze没有米格
5.1)双击时钟向导IP块,重新定制。在自定义对话框中,选择Output Clocks选项卡。检查下一个未被检查的时钟以激活它。将请求的输出频率设置为Pmod所需的频率。该频率可在Pmod兼容性图表中找到概述部分本教程的。点击好吧

提示

如果其他时钟中的一个已经被使用,并且它的频率与你的Pmod所需的频率相匹配,那么你可以使用这个时钟。可以将一个时钟连接到多个目的地。

5.2)将此新时钟连接到PMOD IP内核上的时钟输入。可以在PMOD兼容性图表中找到PMOD IP内核的时钟输入的名称概述部分本教程的。


6.连接中断

重要的

一些Pmod IP核需要中断才能正常工作。要查看Pmod是否需要中断,请参阅Pmod兼容性表概述部分.如果你的Pmod不需要中断,那么跳到步骤7

将Pmod IP核心中断附加到处理器上是不同的,这取决于您使用的平台。选择最能描述平台的选项卡(请参阅概述部分如果你不知道)。
Zynq
6.1)如果一个端口被命名IRQ_F2P.在你的Zynq处理系统块上不存在,双击该块重新定制它。在左侧菜单中,单击中断.检查然后展开织物中断,然后展开PL-PS中断勾选IRQ_F2P旁边的框。

6.2)添加一个Concat对IP核块进行设计。重新定制concat块,以确保输入的数量与你需要连接到Zynq处理器的中断数量相匹配——可能只有一个。点击好吧
6.3)连接Pmod IP核的中断端口到concat块的输入端口,concat的输出端口到Zynq处理系统的IRQ_F2P端口。

Microblaze
6.1)如果你的MicroBlaze块没有一个连接到它的Interrupt端口的AXI中断控制器,添加一个AXI中断控制器到你的块设计中。手动连接axi_intc_0的中断端口到MicroBlaze块的interrupt端口。使用连接自动化将它的AXI接口连接到系统的其余部分。

6.2)将芯片IP核心添加到块设计。重新自定义Concat块以确保输入的数量与您需要连接到MicroBlaze处理器所需的中断次数 - 可能只有一个。点击好吧
连接Pmod IP核的中断端口到concat块的输入端口,concat的输出端口到intr您的AXI中断控制器端口。


7.验证设计

7.1)点击 重新制定布局按钮来重新排列你的方块设计。

7.2)选择 验证设计.这将检查设计和连接错误。
7.3)如果你已经为你的模块设计创建了一个HDL包装作为板的一部分开始使用……教程中,跳过本步骤的其余部分。否则,在设计验证步骤之后,我们将继续创建HDL系统包装器。点击来源标签并找到块设计。

7.4)右键单击块设计,然后单击创建高密度脂蛋白包装.让Vivado管理包装器并自动更新它,然后单击好吧



这将在VHDL中创建一个顶级模块,并允许您生成一个比特流。

8.生成位文件

8.1)在Vivado的顶部工具栏中,单击 产生的比特流.这也可以在其中找到流导航器左侧的面板,下程序和调试.如果您还没有保存您的设计,您将得到一个提示来保存块设计。

开始生成位文件。工具将运行合成执行.在两者都成功完成之后,将创建位文件。你会发现在项目窗口的右上角运行着合成和实现的状态栏。

这个过程可以发生在任何地方5至60分钟取决于Vivado运行的计算机和目标FPGA的大小。
比特流生成后,屏幕上会弹出消息提示。您不必为这个演示打开已实现的设计。点击取消

9.将硬件设计导出到SDK

9.1)在Vivado窗口的顶部,单击文件→导出→导出硬件.选中复选框以包括比特流然后点击好吧.这将为Xilinx SDK提供它需要知道的关于硬件设计的所有信息,以及将硬件编程到目标FPGA系统板所需的文件。



下的项目目录中将创建一个新的文件目录echo_server.sdk.类似于Vivado硬件设计项目的名称。另外两个文件,.sysdef.hdf也创造了。这一步基本上创建了一个新的SDK工作区。
9.2)在主工具栏上,单击文件→启动SDK.将两个下拉菜单都保留为默认值<本地项目>然后点击好吧.这将打开Xilinx SDK并导入导出的硬件。


10. Xilinx SDK.

HW设计规范和包含的IP块显示在“system.hdf”文件中。Xilinx SDK独立于Vivado,即,从这一点开始,您可以在导出的HW设计顶部的C / C ++中创建SW项目。如有必要,SDK可以直接使用主Vivado项目目录中的<项目> .sdk文件夹作为工作区启动。从这一点来看,如果您需要返回Vivado并更改HW设计,那么建议关闭SDK窗口并在Vivado中制作所需的HW设计编辑。在此之后,必须遵循保存设计的顺序,允许Vivado重新生成HDL包装器,并生成新位文件。然后,必须将此新的位文件和修改后的硬件设计导出到SDK。

在这内项目资源管理器在左侧的TAB中,可以看到硬件平台项目。硬件平台的名称遵循在Vivado中创建的块设计包装器的名称。该硬件平台包含所有的硬件设计定义、已添加的IP接口、外部输出信号信息和本地内存地址信息。
设计中的任何PMOD IP的驱动程序都可以在硬件平台的相应文件夹中找到/司机.如果要编辑这些驱动程序,请使用电路板支持包项目中的版本libsrc /.如果您确实修改了驱动程序,请记住,对硬件的任何更改都会覆盖这些更改,以及使用重生BSP来源选择。

11.在SDK中创建一个新的应用程序项目

11.1)点击 下拉箭头并选择应用程序项目



给您的项目一个没有空格的名称,然后单击下一个
11.2)选择空应用程序从模板列表中单击好吧

您将看到两个新文件夹项目资源管理器面板。

  • 包含所有二进制文件,.C和.H(头文件)的应用程序项目
  • 项目的板支持包,其中包含项目可能包含的驱动程序源文件

我们的主工作源文件夹也包含一个重要的文件,在这里显示为“lscript.ld”。这是Xilinx自动生成的链接器脚本文件,包含关于块设计的不同IP组件的内存地址的信息,以及其他内存区域的大小。


12.导入示例项目

扩大design_1_wrapper_platform_0.文件夹中。在这内司机文件夹,你会发现你在设计中使用的Pmods列表。扩大Pmod…/例子文件夹并将在此找到的所有文件复制到project_name / src文件夹中。


13.用位文件编程FPGA

确保你的板是打开的,并连接到主机PC与微型USB电缆UART和编程。在一些板上,你只需要连接一个单一的PROG/UART端口,而在另一些板上,你需要将你的PC连接到两个不同的端口,通常命名为UART和PROG或JTAG。在顶部工具栏上,单击 FPGA程序按钮。有些板还要求它们连接到一个单独的电源。
13.2)点击程序使用硬件设计编程FPGA。


14.编程MicroBlaze / Zynq处理器

14.1)大多数演示要求您使用PC上的串行终端来读取演示打印的消息。终端的设置取决于您的单板,但通常您需要使用波特率为115200或9600、8位数据、无校验位和一个停止位。Zynq项目将使用115200波特率,而MicroBlaze项目的波特率将取决于Vivado中Uartlite IP的配置。
14.2)选择您的应用程序项目,然后单击 运行……按钮。选择在硬件上启动(系统调试器)然后点击好吧

14.3) Xilinx SDK将在Microblaze/Zynq处理器的main.c中运行程序。查看示例主文件顶部的注释头,以获得关于演示程序做什么的更多信息,以及任何额外的设置要求。