前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA Xilinx Zynq 系列(三十)IP 的创建

FPGA Xilinx Zynq 系列(三十)IP 的创建

作者头像
FPGA技术江湖
发布2020-12-30 11:24:52
7680
发布2020-12-30 11:24:52
举报
文章被收录于专栏:FPGA技术江湖
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来FPGA Xilinx Zynq 系列第三十篇,开启十七章,带来 IP 的创建 等相关内容,本篇内容目录简介如下:

17. IP 的创建

17.1 目标与成果

17.2 练习 4A 概述

17.3 练习 4B 概述

17.4 练习 4C 概述

17.5 可能的拓展

17.6 接下来?

本系列分享来源于《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。

IP 的创建

本章是实践的内容,关注的是在 Zynq-7000 平台实现的定制 IP 模块的创建。在本章所呈现的实践练习中所用的 IP 创建方法,和第 13 章《IP 包设计》中详细介绍的是一致的。

17.1 目标与成果

这些实践练习的总的目标是介绍各种语言的 IP 创建流程以及创建 IP 的工具。每个在这个实践教程中所创建的所有的 IP 模块,都会被放在一起来形成一个基于DSP 的系统,然后会在第 20 章 《IP Integrator 的探索》中用于进一步的实践。在完成了这个教程之后,你将能够:

  • 用下列语言 / 工具创建 IP 包:- HDL- MathWorks HDL Coder- Xilinx Vivado HLS
  • 熟悉 Vivado IP Packager 的流程

17.2 练习 4A 概述

这个练习要用 HDL (VHDL)创建一个简单的 IP 模块,它让 ZedBoard 上的 LED 们可以被 PS 上运行的软件所控制。这个过程会利用 Vivado 里的 “Create and Package IP Wizard(IP 创建与打包向导)”,用它来创建一个 AXI-Lite 接口包裹 器,这个包裹器能让这个定制的 IP 作为一个 AXI-Lite 从机连接到 Zynq 处理器上。会介绍 IP 打包的过程,着重介绍自动 AXI-Lite 互联检测和存储器映射的寄存器的导出。外部的 LED 引脚会在 IP Integrator 设计中通过创建新的 XDC 文件来被映射 到 LED 接口上。

这个练习中所涉及的步骤是:

1. 在 Vivado IDE 中创建一个新的项目。

2. 调用 Create and Package IP Wizard,创建一个新的 AXI-Lite 从机 IP。

3. 给所产生的 IP 模板加入定制的功能。

4. 用 IP Packager 打包这个新定制的 IP。

5. 把打包好的 IP 加到 IPCatalog 中。

6. 创建一个包图,通过 AXI 互联把这个 LED IP 连接到 Zynq 处理器。

7. 产生并输出硬件设计给 SDK。

8. 创建简单的软件应用来测试这个定制的 IP 的功能是否正确。

练习 4A 可以在以下网站下载 : www.zynqbook.com

17.3 练习 4B 概述

要在 MathWorks Simulink 中创建和测试一个自适应最小中位数平均修正 (又称自适应最小二乘,Least Mean Squares,LMS)滤波器。然后用 HDL Coder 产生这个 LMS 子系统的 HDL 代码,并打包成一个可以在 Vivado 里实现的 IP 核。这样就对HDL Coder 流程做了很好的介绍,HDL Coder 能自动产生遵循正确的信号命名规范的 AXI-Lite 接口,从而创建出 IP Integrator 兼容的 IP 来。所产生的 IP 然后就可以被输入到 Vivado IDE 项目中,并由 IP Packer 来打包。

一个自适应滤波器是一种自学习的滤波器,能根据通道或特定的信号组来做调整,而不是事先设计成单一的滤波特性。LMS 算法就是这样一种自适应滤波器设计方法,它使用交替权重更新算法来更新 FIR 滤波器的因数,以尽可能地从噪声中构建出混杂于其中的所需的信号。图 17.1 给出了一个 LMS 滤波器的框图。

图 17.1: LMS 过滤掉未知来源的噪声的原理框图

这个练习要做的步骤是:

1. 打开 Simulink 并创建一个 LMS 系统。

2. 找到做 HDL 产生所需的定点信号类型。

3. 测试这个 LMS 确认工作正确。

4. 打开 HDL Coder 工作流,设置所需的参数来产生一个 Xilinx 兼容的 IP 核。

5. 把 HDL Coder 产生的 IP 输入到 Vivado IP Catalog 中。

练习 4B 可以在以下网站下载 : www.zynqbook.com

17.4 练习 4C 概述

在这个练习中,Vivado HLS 会被用来根据已有的 C 代码实现创建一个 NCO。这会在介绍 Vivado HLS 功能的第 16 章 《用 Vivado 高层综合做设计》中谈及的实践 例子的基础上做开发。

这个 NCO 的实现会经由 Vivado HLS 来产生 HDL 代码,然后可以被打包作为一个 IP 核来被引入 Vivado IP Integrator 项目中。

实现 NCO 的一个常用的方法是使用正弦查找表(Lookup Table,LUT)。正弦波 形可以通过逐步遍历 LUT 的表项来产生出来。遍历到表的末尾的时候,只要简单地回到表头就可以了,这样就能创建出周期性的波形来了。图 17.2 描绘了这个方案。渐变的功能是由一个定点累加器产生的。累加器的输入会在每一步中被加到上次值上。因此这个输入的数值的大小就控制了这个振荡器的频率。

图 17.2: 数字控制震荡 (NCO)的架构

这个练习要做的步骤是:

1. 打开 Vivado HLS 并导入已有的 NCO 的 C 代码算法实现。

2. 用提供的 C 代码测试集文件做这个 NOC 的 C 代码算法的仿真。

3. 把 NCO 算法输出成一个 HDL IP 核。

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

17.5 可能的拓展

完成了练习 4C 之后,有几种可能的变化,可以引入来个性化这个系统。比如, 你可以:

  • 在练习 4A 所创建的 IP 核的基础上,用 HDL 来创建一个 IP 核,读入 ZedBoard上的 DIP 开关和 / 或按钮的值。
  • 选择一个方法,为这个系统创建进一步的 IP 包,形成音频效果,比如回声或是反转。

17.6 接下来?

这组实践练习就使得 IP 创建这个话题圆满了。接下来,我们要进入 IP 重用和集成的话题了,我们会关注以 IP 为中心的系统 设计方法,以及可用的各种 IP 库。AXI 互联会被非常详细地介绍,也会有相应的深入的实践练习,主要目的是在整个 Zynq 嵌入式系统设计中使用 IP Integrator。

第三十篇到此结束,下一篇将带来第三十一篇,开启第十八章,带来 IP 重用与集成等相关内容。欢迎各位大侠一起交流学习,共同进步。

END

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档