专栏首页开源FPGA基于ZYNQ的SOC——Hellow_World实验

基于ZYNQ的SOC——Hellow_World实验

  ZYNQ是一款SOC芯片,之前使用VGA做过的实验只是PL(Programmable Logic)部分,而ZYNQ最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分)。

  本实验的目的是熟悉ZYNQ的PS(Processor Subsystem)部分使用方法,了解开发板资源,做一个最小系统Hellow world,使用资源有ARM Cortex-A9、DDR3内存、一个UART串口。实验内容是,将写好的程序加载到DDR内存中,然后CPU一条一条执行,那么执行的情况可以通过串口打印观察。

本次实验需要用到的资源,CPU XC7Z010(XC7Z010-1CLG400C)、两片 MT41J128M16JT-125 or MT41K128M16JT-125 512MB DDR3、经过实验确定我这块板子上是两片MT41K128M16JT-125 512MB DDR3。

一、硬件部分

在开发板上选择QSPI Flash跳线帽

供电方式不用改,选择USB供电

首先是使用Vivado新建一个工程,工程名为Hellow_world,这里省略掉新建工程部分。新建工程部分和之前使用Vivado的流程类似。

点击create block design,将名字设置为system

点击如图所示图标,添加IP,选择ZYNQ7 Processing System

然后点击Run Block Automation

什么也不做直接点击OK。

然后会看到图上会生成两个输出

按如图所示连接。

双击IP核进入设置界面,点击clock configuration 设置输入时钟,按如图所示。

点击设置MIO configuration设置如图所示。

设置DDR 我这里使用的官方的ZYNQ,查手册的DDR配置如图所示,设置完成点击OK。

然后到工程下,右键单击system,选择generate output products,

然后再右键system,选择Create HDL Wrapper,选择如图所示,选择OK。

然后点击如图所示图标,生成电路

可能会等几分钟,生成完成后点击File 选择Export,选择Export Hardware,勾选上include bitsteam,然后OK。

点击File,launch SDK,点击OK ,这样硬件平台就搭建完毕了。

二、软件部分

SDK开启了之后,点击File-New-application Porject,然后输入工程名Hellow_World。其他如图所示配置,点击Next。

这里我们直接选择官方的测试工程Hellow_World.

看到如图所示生成两个文件Hellow_World和Hellow_World_bsp,然后右键点击Hellow_World,选择Debug As-Debug configuration。按如上图所示配置,点击apply,然后点击debug。

然后会弹出如图所示界面,点击如图所示配置串口。

配置完成后,点击run运行,则串口那里会打印出来,Hellow_World。

测试正确。我们还可以看一下代码。

 1 #include <stdio.h>
 2 #include "platform.h"
 3 
 4 void print(char *str);
 5 
 6 int main()
 7 {
 8     init_platform();
 9 
10     print("Hello World\n\r");
11 
12     cleanup_platform();
13     return 0;
14 }

   代码这部分也是十分简单的,两个头文件,一个显示输出函数,然后是主函数。主函数也是十分简单的,这样我们就完成了基于ZYNQ SOC的第一个程序Hellow_World,如果你没有像我这样串口打印出来Hellow World,那说明你有哪一个步骤错误了,请仔细查看,如果本文有错误,欢迎来联系博主,我们共同讨论学习!

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • QuartusII13.0使用教程详解(一个完整的工程建立)

      好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神...

    NingHeChuan
  • Zynq学习笔记(1)——Hellow World

      Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在...

    NingHeChuan
  • 基于basys2用verilog设计多功能数字钟(重写)

    话不多说先上图 ? 前言          自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表。记得当时做的时候也没少头疼,最后用时间磨...

    NingHeChuan
  • 微信里的这 4 款「秘密武器」,全方位保护你的隐私

    今天,知晓程序(微信号 zxcx0101)要推荐 4 款「秘密」小程序,给你的微信加把锁。

    知晓君
  • BeautifulSoup解析库select方法实例——获取企业信息

    本文内容由浙江浦江中学方春林老师提供。 Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed 开源协议的 HTTP...

    Python小屋屋主
  • ASP.NET AJAX(10)__Authentication ServiceAuthentication ServiceAuthentication Service属性Authentication

    在通常情况下,如果使用AJAX方式调用WebService,则可能被恶意用户利用,造成性能以及安全性的问题,所以我们需要使用一些验证方式来保护WebServic...

    小白哥哥
  • 【设计模式】——工厂方法FactoryMethod

      前言:【模式总览】——————————by xingoo   模式意图   工厂方法在MVC中应用的很广泛。   工厂方法意在分离产品与创建的两个层次,使用...

    用户1154259
  • Android App自动更新之通知栏下载

    本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下

    砸漏
  • Altium Dsigner18——PCB与原理图交互式布局设计

    Altium 提供了一个交互式布局的功能,我们在利用这个命令的时候我们在原理图中选中器件的时候,在 PCB 中同样的会被选中,这样可以大大节省我们分模块设计时,...

    Winter_world
  • Spring Boot(三):RestTemplate提交表单数据的三种方法

    在REST接口的设计中,利用RestTemplate进行接口测试是种常见的方法,但在使用过程中,由于其方法参数众多,很多同学又混淆了表单提交与Payload提交...

    业余草

扫码关注云+社区

领取腾讯云代金券