Zedboard学习(四):PS+PL搭建SoC最小系统 标签: fpgazedboardxilinxsoczynq 2017-07-07 15:58 7人阅读

zynq最核心的设计理念就是软件加硬件,即PS+PL。通过软硬件协同设计,结合了FPGA与双arm9内核,对于嵌入式拥有极大的优势。

SoC:System on
Chip的缩写,称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

整个片上系统主要使用资源:ZYNQ系列FPGA XC7Z020、2片DDR、串口芯片(USB转UART)。zedboard板子自带了这些资源,不需要另外添加模块。

PL部分(VIVADO):

新建工程,工程名为min_system,步骤省略,与前一篇博客建立工程步骤相同。(打开链接
这里写图片描述

建好工程后,点击Create Block Design。
这里写图片描述

名字取为soc_system。
这里写图片描述

刚建好的Block Design。
这里写图片描述

点击这里写图片描述,添加IP核。

在弹出的搜索框中输入zynq,查找zynq7处理器。双击选中即可添加入Block Design。
这里写图片描述

添加完成后,点击上方出现的Run Block Design,自动进行配置。加载vivado软件自带的官方配置。

直接点OK。
这里写图片描述

加载好的zynq处理器系统。
这里写图片描述
其相当于一个CPU。现在在vivado中配置的是基础的硬件配置,属于PL;后面可以在SDK中对其进行软件编程,属于PS。

给处理器连上时钟,才可以工作。用鼠标左键长按拖动即可连线。
这里写图片描述

双击ZYNQ7 Processing System模块,可以自定义硬件配置,添加或删减CPU的硬件功能。这里不做修改。
这里写图片描述

保存当前设计,之后可以看到多出了一个design,如下所示:
这里写图片描述

在soc_system上,即之前建立的Block Design,右键–>Generate Output Products。
这里写图片描述
点击generate产生仿真模型。
这里写图片描述
官方的配置文件一般都不会出错,如果是自己设计的,最好还是仿真一下,避免有bug。

回到前面新建好的Block Design,右键–>Create HDL Wrapper,创建顶层verilog HDL文件。
这里写图片描述

选上面的,创建的Verilog HDL文件用户可以自己修改;选下面的,不可以修改。一般选上面的就行了。
这里写图片描述

随后自动生成顶层的Verilog HDL文件。
这里写图片描述

产生比特流文件,作为FPGA的底层硬件配置。
这里写图片描述

等待vivado分析综合完,不过编译得挺慢的,喝杯茶休息一下吧。

产生了比特流文件之后就要导出了。
File–>Export–>Export Hardware
这里写图片描述
注意Include Bitstream也要选勾,要把生成的比特流文件导出到sdk,不然怎么下载都不会成功的,因为没有底层硬件配置好CPU,软件程序怎么可能跑的起来。

PS部分(SDK):

接下来,启动SDK进行软件部分的设计。
File–>Launch SDK
SDK界面。
这里写图片描述

新建工程。
File–>New–>New Appilcation Project
这里写图片描述
选项解释:

OS Platform:操作系统平台,有三种可选:standalone(裸机)、freertos823_xilinx、linux。选standalone。
Hardware Platform:选择的就是之前导出的硬件平台,当然也可以选择其他软件自带的配置好的硬件平台。默认已经选择好了我们自己建立的硬件平台。
Processor:zynq自带的两个arm9处理器,选择其中一个即可。默认选择好了,不改动。
Language:可以选择c语言呢或者c++,选默认的c语言。
Board Support Package:板级支持包,名字取为Hello_bsp。

Next,选择Hello World工程模板。
这里写图片描述

点击Finish后,创建工程。
这里写图片描述

修改Hello_World.c文件。

/******************************************************************************
*
* Copyright (C) 2009 - 2014 Xilinx, Inc.  All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* Use of the Software is limited solely to applications:
* (a) running on a Xilinx device, or
* (b) that interact with a Xilinx device through a bus or interconnect.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* XILINX  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* Except as contained in this notice, the name of the Xilinx shall not be used
* in advertising or otherwise to promote the sale, use or other dealings in
* this Software without prior written authorization from Xilinx.
*
******************************************************************************/

/*
 * helloworld.c: simple test application
 *
 * This application configures UART 16550 to baud rate 9600.
 * PS7 UART (Zynq) is not initialized by this application, since
 * bootrom/bsp configures it to baud rate 115200
 *
 * ------------------------------------------------
 * | UART TYPE   BAUD RATE                        |
 * ------------------------------------------------
 *   uartns550   9600
 *   uartlite    Configurable only in HW design
 *   ps7_uart    115200 (configured by bootrom/bsp)
 */

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"


int main()
{
    init_platform();

    print("Hello Zedboard\n\r");

    cleanup_platform();
    return 0;
}

程序就是从串口打印字符串:”Hello Zedboard\n\r”。
默认设置波特率为115200。
这里写图片描述

下载测试:

SDK自带串口调试助手,点击+号,新建一个连接:
这里写图片描述
填入对应的端口号。
这里写图片描述

右键Hello工程,Run as–>Run Configuration
双击下面选中的项,新建一个下载配置。
这里写图片描述
如下都是默认配置:
指定了硬件平台、处理器、比特流文件、tcl文件。bit文件为之前vivado下生成的比特流文件。
这里写图片描述
工程名、可执行文件。elf文件是SDK中工程编译后生成的可执行文件。
这里写图片描述

最后可以下载程序进板子了。
首先配置底层硬件。
xilinx tools–>program fpga
由于之前已经导出了比特流文件,所以默认已经选好了比特流文件。
点击Program。

然后下载软件程序。
之前在Run Configuration已经配置好,可以直接Run了。
点击这里写图片描述 的小箭头,选择之前配置好的下载配置。等一下子程序会下载进去。

运行结果:
这里写图片描述

posted @ 2017-07-07 15:58  做人要厚道_xu  阅读(646)  评论(0编辑  收藏  举报