FPGA Xilinx Zynq 系列(二十四)Zynq SoC 设计的下一步

2020-12-30 11:11:05 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来FPGA Xilinx Zynq 系列第二十四篇,开启十二章,讲述Zynq SoC 设计的下一步等相关内容,本篇内容目录简介如下:

12. Zynq SoC 设计的下一步

12.1 先决条件

12.2 目标与结果

12.3 练习 2A 的概述

12.4 练习 2B 的概述

12.5 练习 2C 的概述

12.6 练习 2D 的概述

12.7 可能的拓展

12.8 接下来?

本系列分享来源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。

Zynq SoC 设计的下一步

本章是一些实践性的内容,和对应的教程一起,目的是在之前各章所学的基础上,对已有的开发 Zynq 系统的技巧加以扩展。具体来说,本章关注如何给基本的 Zynq 系统加上新的 IP,用 IP Integrator 来处理 Zedboard 上的定时器和 GPIO 所产生的中断。

我们会逐步引导如何把额外的IP 连接到系统上,每一步都详细解释了连接的细节。在生成了硬件设计后,就输出数据给开发软件应用的 SDK,以清晰地表达对中断的使用,并直接导出所需的函数。

12.1 先决条件

在做这个练习之前,建议你先读完之前的章节直到第 10 章 《Zynq 片上系统开 发》 ,并顺利完成之前的实践练习 “Zynq 上的第一个设计 (First Designs on Zynq)”,因为本章的这个练习会基于之前做的那个 Zynq 系统来进行扩展。

12.2 目标与结果

这个实践练习的目标是介绍如何给基本 Zynq 系统增加新的 IP,并实现正确的连接。为此,在 ZedBoard 上构建了一个简单的设计,这个设计将会加上额外的 IP并实现连接,然后创建一个软件应用来清晰地展示整个系统的运作。

在完成了这个教程之后,你将能:

• 在一个已有的基本的 Zynq 硬件项目中加入额外的 IP。

• 能配置这个 IP 来利用中断。

• 修订设计来加入多个中断源。

• 用中断控制器来把 IP 的硬件中断连接到 Zynq 的 PS 上。

• 实现更高级的执行在 Zynq 的 PL 上的软件应用,能利用中断和几种类型的 IP。

这个教程的主要目标是扩展开发 Zynq 系统的基本技巧,让读者进一步熟悉可用的软件工具和流程,以及如何创建较复杂的软件应用。

12.3 练习 2A 的概述

第一个实践练习和之前在 ZedBoard 上创建一个简单的 Zynq 系统的教程是一样 的。重复那个练习来建立起对这个过程的熟悉。练习 2A 可以在以下网站下载:www.zynqbook.com

12.4 练习 2B 的概述

这个实践练习要在 Vivado IDE 里对之前创建的 ZedBoard 上的硬件项目做出扩 展。所需的步骤是:

1. 增加额外的 IP (GPIO 按钮)来产生硬件中断。

2. 把硬件中断连接到 Zynq PS 里的中断控制器。

3. 生成硬件设计的 HDL 文件,并创建位流硬件描述文件。

4. 图 12.1 给出了这个练习会创建的硬件设计的概述。

图 12.1: 练习 2B 的 Zynq 硬件设计

在练习 1 的硬件设计上增加了额外的 IP 之后,下一个练习着重创建软件应用来展示 Zynq 系统中单个中断的工作原理。练习 2B 可以在以下网站下载:www.zynqbook.com

12.5 练习 2C 的概述

完成了练习 2B 中的硬件设计之后,下一步是把这个设计输出给 Xilinx SDK。然后要开发一个软件应用,用按下按钮的方式来产生一个中断。这个中断会被 AXI中断控制器所处理,然后传送给 Zynq PS。这将会增加一个用作计数器的变量值, 这个变量值会被传送并写入 AXI GPIO 实例,以二进制的形式在 LED 上显示出来。

这个练习的步骤如下:

5. 把最终的硬件设计输出给 SDK。

6. 创建一个简单的软件应用,用从按钮产生的中断来递增一个计数器,计数器的值要以二进制的形式显示在 LED 上。

7. 对 FPGA 编程,确认软件应用的运作如预期一般,能展示 Zynq 系统的中断功能。

练习 2C 可以在以下网站下载:www.zynqbook.com

12.6 练习 2D 的概述

在这个教程的最终的练习中,我们要扩展在练习 2B 和 2C 中创建和测试过的硬件设计,加上新的中断源:会增加一个 AXI 定时器,在到达设定时间的时候会产生中断,并递增计数器;也会需要做出到中断控制器的恰当的连接。最后,扩展了的硬件设计要输出给 SDK,然后之前练习中的软件应用要被修改用来实现新的功能。

这个练习的步骤如下:

1. 在 Vivado IDE 中打开之前创建的项目。

2. 用 IP Integrator 加入一个 AXI 定时器 (Timer)资源。

3. 在定时器和 PS 中的硬件中断控制器之间连接正确的连接。

4. 生成硬件设计的 HDL 文件,并创建位流硬件描述文件。

5. 图 12.2 给出了这个练习会创建的硬件设计的概述。

6. 把最终的硬件设计输出给 SDK。

7. 修改之前练习所做的软件应用,加入新的中断的功能。

8. 对 FPGA 编程,然后执行这个硬件上的软件应用,确认能够如预期般工作。

图 12.2: 练习 2D 的 Zynq 硬件设计

练习 2D 可以在以下网站下载:www.zynqbook.com

12.7 可能的拓展

完成了练习 2D 之后,你可以引入一些可能的变化,用以个性化已开发的系统。

比如,你可以:

• 调整定时器的到期时间,或按钮每次递增的值。

• 给硬件设计增加新的 GPIO 控制器,连接到 ZedBoard 上的 DIP 开关上。用这个GPIO 驱动函数来读取从 DIP 开关上得到的输入,用以控制以下选项:

- 暂停或恢复定时器的运作

- 计数器递增或递减

- 选择不同的定时器到期时间

12.8 接下来?

本书接下去的几章,会关注用高层综合(High Level Synthesis)来创建定制的 IP 包和抽象化的系统。这些章节也会配有相关的教程练习。

第二十四篇到此结束,下一篇将带来第二十五篇篇,开启第十三章,包括IP包设计等相关内容。欢迎各位大侠一起交流学习,共同进步。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞