[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-35 VIVADO用户IP软件总线接口封装

devtools/2024/9/24 8:24:55/

软件版本:VIVADO2021.1

操作系统:WIN10 64bit

硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA

实验平台:米联客-MLK-H3-CZ08-7100开发板

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

目录

1概述

2 VTC IP封装总线接口

2.1 Add Interface-General页面

2.2 Add Interface-Port Mapping页面

2.3复位和时钟

2.4Customization GUI的调整

2.5完成封装

3TPG IP封装总线接口

3.1vid_in总线封装

3.1.1Add Interface-General页面

3.1.2Add Interface-Port Mapping页面

3.2vid_out总线封装

3.3复位和时钟

3.4Customization GUI的调整

3.5完成封装

4HDMI IP封装总线接口

4.1vid_in总线封装

4.2下拉列表设置


1概述

使用VIVADO基于图形化创新编程FPGA的方式可以大大提高FPGA编程效率,但是前提是把代码打包成图形化的IP形式。

前面一节课我们只是完成了简单IP的封装,如果对于有非常多的信号的总线接口,那么利用总线接口封装可以让我们连线的时候以总线形式互联。

当一组或者一类信号接口信号很多,如果单根连线的方式,会非常麻烦,因此把一组或者一类接口封装为总线接口,只需要对总线进行互联,对于图形化设计,提高效率,也简化的设计。

本文实验中对视频时序接口RGB接口的关键信号进行总线封装。并且使用的是VIVADO IP封装库中自带的总线video timing,对于不是VIVADO自带的总线接口,我们也可以自定义,这个本章节不讲解,如果读者感兴趣,可以在 “米联客DDR缓存方案AXI-FDMA”专题中学习,该章节有对复杂的用户自定义接口的自定义总线FDMA接口进行封装。

2 VTC IP封装总线接口

本文不再赘述和前一篇封装IP相同的内容部分,如果有不清楚请阅读前文“VIVADO自定义IP简单封装方法”,本文重点讲如何把分离的接口封装为总线IP。单击图下的”+”号,或者选中需要封装总线的信号右击,选择Add Bus Interface(对于VIVADO已经有的总线接口选择这个,没有的需要选择Create Interface Definition, 米联客自定义IP FDMA专题中,FDMA总线接口的封装就会用到, 不再本章节讨论范围)

2.1 Add Interface-General页面

新弹出的界面修改如下几个参数

Name: 改为vtc_out

Display Name:改为vtc_out

Mode:保持master(这个很关键,两个互联的接口,必须一个是master一个是slave)

然后修改总线接口的定义,可以看到支持包括AXI、Signal 、IO Interfaces 、Advanced 、User 多种已经软件自带的接口。

可以看到Advanced中video_timing_rtl包含了VSYNC 、HSYNC、DE 三个信号,和我们自己编写的VTC IP的O_vtc_vs 、O_vtc_hs 、O_vtc_de进行匹配,这样后续软件就能自动识别互联了

单击OK后如下

2.2 Add Interface-Port Mapping页面

实际上左边大写的信号是系统默认设置的总线信号规则,而右边的是用户自己的信号,通过单击选中需要匹配的信号,然后单击Map Ports完成信号匹配

依次完全所有的信号设置

现在总线接口设置成功了

2.3复位和时钟

最终完成后如下:

2.4Customization GUI的调整

参数默认排列如下,可以调整后更加符合使用习惯

比如把H_Syncstart参数上调,单击向上箭头

我们这里把V_Syncstart也做下调整

2.5完成封装

单击Re-Package IP 完成封装

3TPG IP封装总线接口

本文不再赘述和前一篇封装IP相同的内容部分,如果有不清楚请阅读前文“VIVADO自定义IP简单封装方法”, 

TPG IP有2个总线接口需要创建

1是和VTC IP相连的视频时序接口

2是输出的视频时序包含了数据部分

3.1vid_in总线封装

3.1.1Add Interface-General页面

新弹出的界面修改如下几个参数

Name:改为vid_in

Display Name:改为vid_in

Mode:改为slave(这个很关键,两个互联的接口,必须一个是master一个是slave)

然后修改总线接口的定义,可以看到支持包括AXI、Signal 、IO Interfaces 、Advanced 、User 多种已经软件自带的接口。

可以看到Advanced中video_timing_rtl包含了VSYNC 、HSYNC、DE 三个信号,和我们自己编写的VID IP的I_vid_vs 、I_vid_hs 、I_vid_de进行匹配,这样后续软件就能自动识别互联了

单击OK后如下

3.1.2Add Interface-Port Mapping页面

实际上左边大写的信号是系统默认设置的总线信号规则,而右边的是用户自己的信号,通过单击选中需要匹配的信号,然后单击Map Ports完成信号匹配

依次完全所有的信号设置

现在总线接口vid in设置成功了

3.2vid_out总线封装

方法一样,更多详细的过程不再重复,主要看下关键的部分

Name:改为vid_out

Display Name:改为vid_out

Mode:改为master(这个很关键,两个互联的接口,必须一个是master一个是slave)

Interface Definition:改为vid_io_rtl

信号MAP如下

3.3复位和时钟

最终完成后如下:

3.4Customization GUI的调整

可以看到,我们没有需要调整的参数,默认就这样

3.5完成封装

单击Re-Package IP 完成封装

4HDMI IP封装总线接口

本文不再赘述和前一篇封装IP相同的内容部分,如果有不清楚请阅读前文“VIVADO自定义IP简单封装方法”。

HDMI IP 中有一个下拉列表的设置,是本节内容的重点。

4.1vid_in总线封装

HDMI有一个视频时序输入接口,因此需要定义一个slave形式的视频时序总线接口,这个和前面VTC的vid_in设置一样,不再重复。

4.2下拉列表设置

由于XILINX的serdes2和serdes3不一样,所以需要一个下拉列表可以选中

设置FAMILY类型包括:

ULTRASCALE, ULTRASCALE_PLUS和7FAMILY

封装完成后的界面

用同样的方法封装其他的IP,比如AD7606的IP ,ADV7611驱动的IP ,LVDS触摸屏的IP等等,这里不再重复。

下一节课实验使用本节课完成的IP,大家之前用传图方法实现的HDMI测试图形输出


http://www.ppmy.cn/devtools/108676.html

相关文章

网络注册平台如何集成身份证实名认证功能?Java实名认证接口集成示例

网络平台集成身份证实名认证功能已经成为提升用户信任和满足法律要求的关键步骤,不仅可以提高注册过程的安全性和便捷性,还能有效保护用户的个人信息安全,但如何实现该功能成为了线上平台企业的一大困扰。 为助力减少信息泄露的风险&#xff…

根据NVeloDocx Word模板引擎生成Word(一)

自从我们基于免费开放的E6开发平台,实现了根据Word模版生成Word文档的模版引擎后,也实实在在帮助到了一些有需要的朋友。但是由于制作Word模版的过程对于很多人会是一个很头疼的事情,虽然提供了详细的文档,但是我们也经常接到他们…

美食|基于SpringBoot+vue的美食网站(源码+数据库+文档)

美食网站 基于SSMvue的美食网站 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 用户模块实现 餐厅模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

Elasticsearch文档值

在Elasticsearch中,文档值(Doc Values)是用于高效存储和检索数据的一种数据结构,特别是在处理聚合、排序和过滤操作时。文档值是Elasticsearch为每个字段生成的预先计算的格式化数据,目的是改善性能和降低内存使用。 …

QT作业1

1> 手写unique_ptr指针指针 代码&#xff1a; #include <iostream>using namespace std;// 自定义的unique_ptr类模板 template <typename T> class unique_ptr { public:// 构造函数&#xff0c;接收一个指针explicit unique_ptr(T* ptr nullptr) noexcept …

git cz 规范化 git commit 格式

git cz 规范化 git commit 格式 npm install git-cz --save-devnpm install commitizen --save-devnpm install cz-customizable --save-dev // 这是package.json自动生成的 "config": {"commitizen": {"path": "./node_modules/cz-custo…

【ruby java】登陆功能/邮件发送模版240903

Rails 风格登录系统添加全面而详细的注释&#xff0c;解释每个部分的功能和用途。​​​​​​​​​ 详细注释&#xff0c;解释了每个文件和代码块的功能。以下是一些关键点的总结&#xff1a; 1. 控制器&#xff08;Controllers&#xff09;: - ApplicationController: …

DrissionPage设置启动浏览器为edge

1.查看浏览器启动路径 在浏览器地址栏输入下面地址&#xff0c;拿到可执行文件的路径 。 edge://version/ 2.替换路径 打开DrissionPage._configs. chromium_options.py文件&#xff0c;找到def browser_path(self)这个函数&#xff0c;将返回内容替换为edge的启动路径&#x…