FPGA的Zynq 7000学习–基于黑金AX7010开发板的Hello World 实验

/9月开学入手了黑金AX7010开发板,自己也没有学到很多,但是还是想一步一步记录自己的进步,所以开了博客,也想好好归纳归纳,让自己尽快成长起来,谢谢。/
大家学习C语言或者51单片机,相信也是从最基本的“Hello World实验”开始的。不过ZYNQ 7000又有一点不同,就是它是分为PL和PS两个部分,按道理我们应该先学习PL是什么?干什么用?怎么用?PS又是是什么?干什么用?怎么用?
但是我想,让大家先看到一个实验结果,相比会更加直观性,关于FPGA的相关知识点以及用到的原理有时间我会整理好,发出来。
现在,我们将在AX7010/AX7020开发板上创建一个简单的ZYNQ嵌入式系统(软核),然后我们将会使用SDK创建一个简单的软件应用程序,并下载到ZYNQ的ARM处理器中,实现串口的字符打印。
开始吧!
硬件平台:黑金AX7010开发板
vivado版本:Vivado 2017.4
SDK平台:SDK 2017.4
注:本实验只用到PS(ARM)部分,Vivado部分只是用来配置PS部分的引脚

1、 Vivado工程创建

1.1:打开Vivado的界面,在Vivado开发环境中双击Create New Project图标,创建一个新的工程。
1.2:弹出一个Vivado工程向导,点击Next按钮。

1.3:在弹出的对话框中输入工程名和工程存放目录,我们这里取一个helloworld的工程名。点击Next按钮(注意:在create project subdirectory前面打勾,说明工程文件会在工程路径下新建一个工程名project name的文件夹下,不打勾就是工程会直接在project location的文件夹下)。
1.4:在下面的对话框中默认选择RTL Project, 即生成RTL寄存器转换级的工程(具体的知识点以后会更新,现在看到别方),点击NEXT。

1.5:添加源文件,即RTL的.v文件,因为我们这次只是演示,没必要自己写.v文件,所以暂时不选,点击NEXT。
1.6:添加约束文件,即.sdc文件,也暂时不选,点击NEXT。
1.7:在接下来的对话框选择所用的FPGA器件,以及进行一些配置。FPGA芯片型号一定要跟开发板上的型号一致,我这里是黑金的AX7010。首先在Family里选择Zynq-7000, Speed grade选择-1, Temp grade选择C,在Package选择clg400,然后在下面的列表中选择xc7z010clg400-1。(AX7020用户选择xc7z020clg400-2)。

1.8:再次确认一下板子型号有没有选对,没有问题再点击“Finish”完成工程创建。
1.9:工程创建后,图形化界面如下图所示,这就是Vivado的主界面了,一般的IP设计和.v文件的设计就是在这界面进行的:

2、建立原理图

2.1 ZYNQ的嵌入式系统开发一般有原理框图的形式来设计,这样硬件的连接看起来会更加直观。点击“Create Block Design”按钮来添加原理图设计文件。

2.2:“Design name ”这里不做修改,保持默认 “design_1 ”,这里可以根据需要修改,不过名字要尽量简短,否则在 Windows 下编译会有问题。

2.2:点击“ Add IP ”即“+”快捷图标。

2.3:搜索“ zynq ”或者其他“system”等关键字,在搜索结果列表中双击 “ZYNQ7 Processing System”。(不要选择后面带BFM(总线功能模型)的,带BFM的IP 为先前的IP处理器版本)。

2.4:双击 Block 图中的“ processing_system7_0 ”模块,配置相关参数。

2.5:在“ PS PL Configuration ”选项中展开所有项目 。
其中Page Navigator界面下有8个子项,分别为Zynq Block Design, PS-PL Configuration,Peripheral I/O Pins, MIO Configration, Clock Configuration, DDR Configuration, SMCTiming Calculation, Interrupts。这些页面选项是针对ZYNQ的不同硬件模块的配置,其中PS_PL页面提供了PS到PL的相关接口配置信息以及PS部分一些配置信息;Peripheral I/O Pins页面主要是对一些通用外设接口的配置;MIO Configruation页面主要是对MIO已经EMIO的分配控制;Clock Configruation页面主要是对PS端时钟资源的配置和管理;DDR Configration页面主要是对DDR控制器一些参数的配置;Interrupts页面主要是对中断进行配置管理。

2.6:取消“ M AXI GP0 interface ”接口,这个接口可以扩展 PL 端的 AXI 接口外设,所以 PL 如果要和 PS 进行数据交互,都要按照 AXI 总线协议进行, xilinx 为我们提供了大量的 AXI 接口的 IP 核。

2.7:UART配置
从原理图中我们可以找到串口连接在 PS 的 MIO 48 MIO 49 上,所以在“ Peripheral I/OPins ”选项中使能 UART1 MIO 48 MIO49 Bank 0 电压选择“ LVCMOS3.3V Bank 1 电压选择“ LVCOMS 1.8 V ”,本实验仅仅使用了一个串口功能,这里就不再使用其他设备。

2.8:时钟配置
在“ Clock Configuration ”选项卡中我们可以配置 PS 时钟输入 频率,这里默认是33.333333 ,和板子上一致,不用修改 CPU 频率默认 666.666666Mhz ,这里也不修改。同时 PS 还可以给 PL 端提供 4 路时钟,频率可以配置,这里不需要,所以保持默认即可。

2.9:DDR3配置
在“ DDR Configuration ”选项卡中可以配置 PS 端 ddr 的参数, AX7010 配 置 DDR3 型号为“MT41J128M16 HA 125” AX7020 配置 DDR3 型号为“ MT41J256M16 RE 125” 这里ddr3 型号并不是板子上的 ddr3 型号,而是参数最接近的型号 。 “Effective DRAM BusWidth ”,选择 32 Bit。

2.9:点击“ Run Block Automation vivado 软件会自动完成一些导出端口的工作。

2.10:点击“ OK”。

2.11:点击“ OK ”以后我们可以看到 PS 端导出一些管脚,包括 DDR 还有 FIXED_IO ,按键 Ctrl +s ”保存设计。

2.12:选择 Block 设计,右键“ Create HDL Wrapper… 创建一个 Verilog 或 VHDL 文件。

2.13:保持默认选项,点击“ OK”。

2.14:展开设计可以看到 PS 被当成一个普通 IP 来使用。

2.15:选择 block 设计,右键“ Generate Output Products”

2.16:点击“ Generate”。

2.17:在菜单栏“ File --> Export --> Export Hardware…”导出硬件信息,这里就包含了 PS 了的配置信息。

2.18:在弹出的对话框中点击“ OK ”,因为实验仅仅是使用了 PS 的串口,不需要 PL 参与,这里就没有使能“ Include bitstream”(将来比较复杂的设计就要添加进来了)。

3、SDK调试部分

3.1:点击 Vivado 菜单“ File --> Launch SDK ”,启动 SDK。

3.2:启动 SDK 后我们会看到一个文件夹,有一个名为 "system.hdf ”文件,这个文件就包含了Vivado 硬件设计的信息,可以给软件开发使用,也可以看到 PS 端外设的寄存器列表。

3.3:在 SDK 的菜单“ New --> Application Project ”,建立一个 APP 工程。

3.4:“Project name ”填写 “hello ”,其他默认,点击 Next。

3.5:模板选择“ Hello World ”,点击 Finish。

3.6:可以看到 SDK 创建了一个“ hello ”目录,还有一个 hello_bsp ”的目录,在 hello_bsp目录中可以找到很多有用的信息,其中有“ BSP Documentation ”包含了一些 PS 外设的 API说明。

3.7:双击“ system.mss ””,还可以看到有些 PS 外设还提供了例程,这是用来了解学习这些外设的第一手资料。

3.8:连接 JTAG 线 到开发板 、 UART 的 USB 线 到 PC。
3.9:使用 PuTTY 软件做为串口终端调试工具, PuTTY 是一个免安装的小软件(其他的串口软件也可以的,只要波特率设置为默认的115200就行)。

3.10:选择 Serial Serial line 填写 COM3 Speed 填写 115200 COM3 串口号根据设备管理器里显示的填写 ,点击 Open。

3.11:在上电之前最好将开发板的启动模式设置到 JTAG 模式。

3.12:给开发板上电,准备运行程序,开发板出厂时带有程序, 这里可以把运行模式选择 JTAG模式 然后重新上电 。选择“ hello ”,右键,可以看到很多选项,本实验要用到这里的Run as ”,就是把程序运行起来 Run as ”里又有很对选项,选择第一个 Launch onHardware(System Debuger) Debuger)”,使用系统调试,直接运行程序。

3.13:这个时候观察 PuTTY 软件,可能有输出显示,也 可能 没有 输出。

3.14:为了保证系统的可靠调试,需要添加一个配置,右键“ Run As --> Run。

3.15:选择“ Reset entire system ”复位整个系统,如果系统中还有 P L 设计,还必须选择Program FPGA ”,再次点击 Run。

3.16:点击“ OK ”,确认重新运行。

3.17:这次就可以看到熟悉的“ Hello World ”显示出来了。

3.18:除了“ Run As ”,还可以 Debug As ”,这样可以设置断点,单步运行。

3.19:进入 Debug 模式。

3.20:和其他 C 语言调试模式一样,可以逐步运行、设置断点等。
3.22:右上角可以切换 IDE 模式。

至此,整个实验就完成了。本次实验通过一个简单的
Hello World 讲解了 SDK 的使用, SDK 拥有很强大的功能,不能一
一讲解,在我们不断的使用中逐渐掌握。
本次实验主要是依照黑金的教程来做,黑金基础教程只是第一步,这第一步一定得做好,每一步都走好,尽量掌握每一步为什么要这么做,硬件设计就是积累的过程,慢慢学吧,有疑问的欢迎一起交流,谢谢!

FPGA的Zynq 7000学习--基于黑金AX7010开发板的Hello World 实验相关推荐

  1. 1-1 基于黑金AX516开发板 fpga 按键点灯程序 #每周3例程坚持3个月激励计划#

    一.功能描述 1.AX516开发板有四个led和四个按键,使用key1 ,key2 ,key3,key4分别进行控制led1.led2.led3.led4: 2.按键按下则灯点亮,按键松开灯熄灭 3. ...

  2. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  3. 紫光fpga logos2 pango design 开发工具 黑金 axp100开发板资料 带 ddr 以及高速收发器例子

    紫光fpga logos2 pango design 开发工具 黑金 axp100开发板资料 带 ddr 以及高速收发器例子 有双相机采集存储 ddr 后进行hdmi输出叠加显示的工程 包含1多个例子 ...

  4. 【媒体控制器】开源项目学习笔记(基于Arduino Micro开发板)

    ☑️ 首先说明:本项目基于Arduino Micro 开发板开发的,外设只用到了EC11E1534408无定位旋转编码器. 项目来源:[DIY]自制PC外设-媒体控制器,在英国_哔哩哔哩_bilibi ...

  5. 基于易灵思开发板RiscV的调试流程

    基于易灵思开发板RiscV的调试流程 一.相关环境准备 1.软件Install 2.硬件Device 二.硬件环境搭建 1.开发板连接 2.下载代码到开发板 三.软件环境搭建 1.启动Eclipse软 ...

  6. 基于NNEWN NSR3588开发板Android12系统实现四屏异显

    基于NNEWN NSR3588开发板Android12系统实现四屏异显 RK3588四屏异显功能实现介绍 1.硬件连接 2.内核dts配置 3.Android异显示方案 4.四屏异显测试APK及效果演 ...

  7. 基于Arduino Uno开发板的红外遥控开发

    基于Arduino Uno开发板的红外遥控开发 1 准备 1.1 硬件与软件 1.2 走线 2 代码 2.1 ReceiveDump 2.2 SendRawDemo 1 准备 1.1 硬件与软件 单片 ...

  8. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法

    Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法 首先,我们来看一下Arduino UNO开发板的具体引脚排列,如下图所示, 再了解一下三色RGB LED模块,如下图所示 ...

  9. 基于ShineBlink物联网开发板和机智云平台开发的“针对短期内宠物无人照顾的智能宠物屋”系统

    正式介绍作品前先说明一下,我是湖南文理学院计算机与电气工程学院的一名大三学生,我叫陈海涛.作品全部内容均为个人创意.个人设计并手工制作,后期会考虑写论文投期刊,So!!严禁抄袭!抄袭必究! 该作品是用 ...

  10. 基于arduino uno 开发板制作的 智能书包项目

    基于arduino uno 开发板制作的智能书包,当时收短视频启发,集合自动售货机的代码和RC522 读卡模块代码结合制作,现基本功能可以实现 ,目前代码部分尚不稳定需要继续改进 //一个智能书包小发 ...

最新文章

  1. linux玩我的世界java版_Linux下安装我的世界(Minecraft)
  2. 2022秋招大战:算法岗挤破头,JAVA开发也被迫内卷
  3. 解决git 提交出现这个错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.
  4. 为什么白帽SEO更好?
  5. Oracle数据库基础知识点汇总
  6. 【USACO 3.1】Score Inflation(完全背包)
  7. android 6.0 ios9谁快,没安卓6.0流畅?iOS 9突飞猛进终于不卡
  8. VS2008 快捷键 大全
  9. 三大角度 PK ,Go 语言和 Node.js 谁胜谁负?
  10. 织梦(Dedecms) V5.6 plus/carbuyaction.php 本地文件包含漏洞
  11. php object
  12. 问题:jquery中的change()事件,以及jquery中的prop()事件与attr()事件的区别
  13. linux awk sed经典题,awk与sed命令面试题整理
  14. win10计算机休眠快捷键,win10睡眠快捷键,win10睡眠按啥键唤醒
  15. 从蚂蚁金服的BI和大数据团队建设,看透BI发展,再不懂就落伍了
  16. CVTE软件C语言面试经验,CVTE软件技术支持面试总结
  17. 会议签到web_基于Web的网络签到系统设计与实现
  18. TCP客户端与服务端开发
  19. 5.20,福利一波,用文字拼一个自己最爱的人
  20. 浅谈国产智能手机的自主创新

热门文章

  1. 伺服舵机基础知识汇总
  2. mysql 查询条件为空则_MySql当查询条件为空时不作为条件查询
  3. 14款实用项目管理工具,精英必备!
  4. 闽南歌歌词有一句电子计算机,丁丁丁丁是什么歌_抖音闽南歌曲丁丁丁丁歌名、歌手、歌词介绍_游戏吧...
  5. 多标签分类问题中的评价指标:准确率,交叉熵代价函数
  6. pr中音频转场的介绍和使用
  7. ios storyboard 传参 返回传参(segue)
  8. 给即将步入大学的学子们的一封信
  9. 华为路由器配置DHCP
  10. 关于赚钱的 6 个重要认知,多数人都不知道