如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)

新建vivado工程

  • 打开vivado软件,我这里使用的是vivado2019.1,单击create project来创建一个新的工程。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第1张图片
  • 单击next继续下一步。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第2张图片
  • 输入工程名称和工程文件位置,单击next继续下一步。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第3张图片
  • 按默认选择,单击next继续下一步。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第4张图片
  • 根据实际应用型号选择对应的soc型号,单击next继续下一步。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第5张图片
  • 单击finish完成工程的创建。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第6张图片

添加ZYNQ CPU IP核

  • 单击create block design弹出一个对话框。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第7张图片
  • 输入名称,可以使用默认名称,单击ok创建block design
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第8张图片
  • 单击“+”来添加CPU IP核。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第9张图片
  • 在弹出的搜索框中输入ZYNQ,选择对应的CPU。双击ZYNQ7 processing system添加到block文件中。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第10张图片
  • 单击 Run Block Automation。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第11张图片
  • 单击ok完成CPU IP核的添加。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第12张图片
  • 将PS部分的时钟连入PL部分。如下图所示连线。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第13张图片
  • ZYNQ CPU IP核的设置。
    • 双击ZYNQ CPU IP核图标,打开一个设置页面。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第14张图片
    • 选择peripheral I/O pins页面,选中uart0和uart1作为调试的串口输出。选择Quad SPI(我这里板子是从Quad SPI启动的,所以选择了,根据你的板子的实际启动模式来选择)
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第15张图片
    • 选择clock configuration页面,将PS部分输出到PL部分的时钟改为100MHZ。(根据实际要求来改,我这里需要PL部分的时钟为100MHZ)
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第16张图片
    • 选择DDR configuration页面,选择对应的DDR型号(根据实际板子上用的DDR型号来选择),单击OK完成设置。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第17张图片

添加AXI Quad SPI IP核

  • 单击“+”来添加AXI Quad SPI IP核
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第18张图片
  • 在弹出的搜索框内输入quad spi来选择对应的IP核,双击axi quad spi添加该IP核到block文件中。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第19张图片
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第20张图片
  • 单击 Run Block Automation,单击ok完成该IP核的添加。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第21张图片
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第22张图片

生成bitstream文件

  • 右击sources页面中的design_1.bd,单击Generate Output Products。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第23张图片
  • 单击generate完成Generate Output Products。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第24张图片
  • 右击sources页面中的design_1.bd,单击Create HDL Wrapper,单击ok完成Create HDL Wrapper。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第25张图片
  • 单击工具栏中的generate bitstream按钮,生成bitstream文件。
  • 单击ok生成bitstream文件。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第26张图片
  • 直接这么生成bitstream文件会报错,因为spi的输出引脚还没有绑定到实际的物理引脚上

添加引脚约束

  • 单击open implemented design
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第27张图片
  • 打开I/O Ports页面设置SPI的引脚约束。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第28张图片
  • I/O Ports页面中SPI有四个引脚。io0对应SPI的MOSI,io1对应SPI的MISO,ss是片选引脚,sck是时钟引脚。根据实际硬件设计情况将各个引脚绑定到实际的硬件引脚上。我这里只是测试一个SPI master的通信,所以片选引脚和时钟引脚可以随便连接,将MOSI和MISO两个引脚连接到硬件引脚上,并将这两个硬件引脚连接。实际约束如下图所示。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第29张图片
  • 按ctrl+s键保存引脚约束,第一次保存时会弹出一个对话框用来新建一个约束文件。输入文件名,单击ok完成新建。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第30张图片
  • 在sources页面的constraints下可以看到生成的约束文件。也可以直接编辑约束文件来添加约束。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第31张图片
  • 重新生成bitstream文件。

在SDK中编写测试代码

  • 单击工具栏上的file中的export,export hardware,导出平台文件到sdk工作空间中。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第32张图片
  • 单击工具栏上的file中的launch SDK,单击ok打开SDK软件开始代码编写。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第33张图片
  • 在SDK的project explorer栏中可以看到从vivado中导出的平台文件。
  • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第34张图片
  • 在SDK中新建一个hello world工程,编译工程下载到板子里输出打印信息。
    • 单击工具栏上file中的new->application project,打开新建工程对话框。输入工程名称,单击next
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第35张图片
    • 选择hello world工程。单击finish完成新建。系统会自动新建两个工程,一个是应用工程,一个是BSP工程。右键应用工程,单击build project,软件自动编译两个工程,在应用工程的debug文件夹下生成可下载的elf文件。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第36张图片
    • 右键应用工程,选择debug as->debug configurations打开设置页面。选中reset entire system和program FPGA
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第37张图片
    • 单击debug进入debug页面。将板子上的串口连接到PC端,打开窗口软件,我这里使用的tera term。设置波特率为115200.运行程序,串口打印输出hello world。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第38张图片
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第39张图片
  • 测试SPI
    • 导入SPI使用的参考实例代码。在BSP工程中双击打开system.mss文件。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第40张图片
    • 在system.mss文件中找到axi_quad_spi,单击import examples,弹出一个对话框选择例程。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第41张图片
    • 选择想要参考的例程,单击ok即可将例程添加到SDK工作空间。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第42张图片
    • 将例程代码文件xspi_low_level_example.c拷贝到应用工程源码目录下替换自动生成的helloworld.c文件。在xspi_low_level_example.c文件中添加一个新的RecvBuff数组用来接收MOSI发出的数据,并且添加打印代码将数据从串口打印输出。编译工程后debug运行,RecvBuff成功接数据并在串口打印输出。
    • 如何在vivado中使用AXI IP核搭建ZYNQ 7000平台(以spi IP核为例)_第43张图片

你可能感兴趣的:(ZYNQ,vivado)