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文件。

  1. /******************************************************************************
  2. *
  3. * Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved.
  4. *
  5. * Permission is hereby granted, free of charge, to any person obtaining a copy
  6. * of this software and associated documentation files (the "Software"), to deal
  7. * in the Software without restriction, including without limitation the rights
  8. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. * copies of the Software, and to permit persons to whom the Software is
  10. * furnished to do so, subject to the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be included in
  13. * all copies or substantial portions of the Software.
  14. *
  15. * Use of the Software is limited solely to applications:
  16. * (a) running on a Xilinx device, or
  17. * (b) that interact with a Xilinx device through a bus or interconnect.
  18. *
  19. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  20. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  22. * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  23. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
  24. * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  25. * SOFTWARE.
  26. *
  27. * Except as contained in this notice, the name of the Xilinx shall not be used
  28. * in advertising or otherwise to promote the sale, use or other dealings in
  29. * this Software without prior written authorization from Xilinx.
  30. *
  31. ******************************************************************************/
  32. /*
  33. * helloworld.c: simple test application
  34. *
  35. * This application configures UART 16550 to baud rate 9600.
  36. * PS7 UART (Zynq) is not initialized by this application, since
  37. * bootrom/bsp configures it to baud rate 115200
  38. *
  39. * ------------------------------------------------
  40. * | UART TYPE BAUD RATE |
  41. * ------------------------------------------------
  42. * uartns550 9600
  43. * uartlite Configurable only in HW design
  44. * ps7_uart 115200 (configured by bootrom/bsp)
  45. */
  46. #include <stdio.h>
  47. #include "platform.h"
  48. #include "xil_printf.h"
  49. int main()
  50. {
  51. init_platform();
  52. print("Hello Zedboard\n\r");
  53. cleanup_platform();
  54. return 0;
  55. }

程序就是从串口打印字符串:”Hello Zedboard\n\r”。

默认设置波特率为115200。

下载测试:

SDK自带串口调试助手,点击+号,新建一个连接:



填入对应的端口号。

右键Hello工程,Run as–>Run Configuration

双击下面选中的项,新建一个下载配置。



如下都是默认配置:

指定了硬件平台、处理器、比特流文件、tcl文件。bit文件为之前vivado下生成的比特流文件。



工程名、可执行文件。elf文件是SDK中工程编译后生成的可执行文件。

最后可以下载程序进板子了。

首先配置底层硬件。

xilinx tools–>program fpga

由于之前已经导出了比特流文件,所以默认已经选好了比特流文件。

点击Program。

然后下载软件程序。

之前在Run Configuration已经配置好,可以直接Run了。

点击 的小箭头,选择之前配置好的下载配置。等一下子程序会下载进去。

运行结果:

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

  1. 第一章 MIZ701 VIVADO 搭建SOC最小系统HelloWorld

      本章内容是MIZ701中的第五章,本来也是要过渡一下FPGA部分的,但是由于MIZ701没有单独提供PL部分的晶振时钟,时钟必须通过PS产生,所以本章内容作为Miz701的第一章内容.本章的目的是 ...

  2. [框架]eclipse搭建ssm框架 一 标签: eclipsetomcat框架 2017-03-25 21:28 1085人阅读 评论(

    虽然现在也做过一些项目,但是自己从头搭起来的框架几乎没有,所以这两天自己搭了一下ssm的框架,下面写一下框架的搭建过程.并且给出增删改查四条线来方便大家熟悉代码. 环境准备 maven3.2.3 ec ...

  3. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  4. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  5. Zedboard学习(二):zedboard的Linux下交叉编译环境搭建 标签: 交叉编译linuxzedboard 2017-07-04 23:49 19人阅读

    环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...

  6. Maven学习 (四) 使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  7. [OpenGL] 1、环境搭建及最小系统

    >_<: 首先推荐一个企业版的VC6.0自带OpenGL和DirectX,非常方便:http://pan.baidu.com/s/1mgIAGi8 PS: 要注意这里的OpenGL建立的工 ...

  8. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser 2014-06-25 14:25 722人阅读 评论(1) 收藏

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  9. OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读

    上一篇文章中介绍了如何使用OpenCV自带的haar分类器进行人脸识别(点我打开). 这次我试着自己去训练一个haar分类器,前后花了两天,最后总算是训练完了.不过效果并不是特别理想,由于我是在自己的 ...

随机推荐

  1. licode从客户端到连上信令服务器流程

    var config = {audio: true, video: true, data: true, screen: screen, videoSize: [640, 480, 640, 480], ...

  2. MQTT的知识点

    问题一:单片机缓存有限,处理能力有限的情况下,消息不可能一次发出,这种情况下要怎样通过MQTT发布消息? 先组装publish协议的头,里面写好payload的长度,通过tcp发出去,然后一点一点发p ...

  3. dom4j使用的小例子

    product.xml: <?xml version="1.0" encoding="UTF-8"?> <root> <produ ...

  4. 7503E-M-irf2配置以及bfd配置

    IRF2配置 irf domain 10 irf mac-address persistent always irf auto-update enable irf auto-merge enable ...

  5. 数据运算+-*/,比较运算符==!=,赋值运算,逻辑运算and,or,not,成员运算in,not in,身份运算is is not,位运算&|,运算符的优先级

    取模就是返回余数. 取模的作用主要是来取奇偶数来用的,奇数干嘛,偶数干嘛. 比较运算符: 赋值运算: 逻辑运算: 赋值的时候可以多个变量同时赋值 成员运算: in就是在不在的意思. 身份运算: 位运算 ...

  6. 虚拟机桥接网卡下配置centOS静态IP

    前面我们讲了怎么去配置asterisk,但是配置完了,是没有什么效果出现的,因为asterisk相当于一个服务器,我们需要一个客户端去给它连接起来,如果你是在自己的机子上装了虚拟机,那最好配一下cen ...

  7. 【POJ】3616 Milking Time(dp)

    Milking Time Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10898   Accepted: 4591 Des ...

  8. socket链接循环

    server------------------------#!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/5 import socke ...

  9. SSMS安装英文版后无法修改为中文

    SSMS的UI语言和所安装的Visual Studio的语言是相关的,你这种情况应该是第一次安装的时候安装了英文版的visual studio isolated shell,在卸载的时候你没有卸载这个 ...

  10. 从一个开发的角度看负载均衡和LVS--FullNat

    从一个开发的角度看负载均衡和LVS 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务 ...