首页 > 其他分享 >34 VIVADO自定义IP简单封装方法

34 VIVADO自定义IP简单封装方法

时间:2023-12-29 18:33:21浏览次数:27  
标签:封装 自定义 uart IP rx 34 rstn 图形化

软件版本:VIVADO2021.1

操作系统:WIN10 64bit

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

登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!

1 概述

XILINX作为FPGA全球老大,不仅仅是硬件技术实力,而且EDA软件也是非常优秀,XILINX VIVADO是业内最先进的开发工具。从VIVADO开始,支持通过图形化编程FPGA,极大提高了开发效率,图形化开发方法减少了低端接口输入输出错误。

但是,为了方便图形化设计,VIVAOD需要用户编写的代码封装成图形化的IP。当然封装后的IP也可以和原来一样方便的调用。本文以实现串口IP封装为例,介绍VIVADO IP图形化封装的方法,以及调用方法。

本文的目前以简单的UART IP封装为例,简单介绍图形化IP的封装方法,一些复杂接口IP封装方法,比如uifdma_dbuf IP的封装我们后续特色课程中再单独提供。

2 硬件电路分析

硬件接口和子卡模块请阅读"附录 1"

配套工程的 FPGA PIN 脚定义路径为 soc_prj/uisrc/04_pin/ fpga_pin.xdc。

3 准备源码

我们把之前编写的uart串口的程序需要稍作修改,把波特率分频参数放到端口中,这样可以方便我们双击IP后设置默认的分频参数。

修改后的顶层文件

`timescale 1ns / 1ns //仿真时钟刻度和精度

 

module ui_uart#

(

parameter  integer   BAUD_BSP  = 115200,  //波特率

parameter  integer   SYSCLK_HZ = 50_000_000  //系统时钟

)

(

input  I_sysclk,//系统时钟输入

input  I_uart_rx,//uart rx接收信号

output O_uart_tx //uart tx发送信号

);

 

reg [11:0] rstn_cnt = 0;//上电后延迟复位

wire uart_rstn_i;//内部复位信号

wire uart_wreq,uart_rvalid;

wire [7:0]uart_wdata,uart_rdata;

 

assign uart_wreq  = uart_rvalid;//用uart rx接收数据有效的uart_rvalid信号,控制uart发送模块的发送请求

assign uart_wdata = uart_rdata; //接收的数据给发送模块发送

assign uart_rstn_i = rstn_cnt[11];//延迟复位设计,用计数器的高bit控制复位

 

//同步计数器实现复位

always @(posedge I_sysclk)begin

    if(rstn_cnt[11] == 1'b0)

        rstn_cnt <= rstn_cnt + 1'b1;

    else

        rstn_cnt <= rstn_cnt;

end

 

//例化uart 发送模块

uiuart_tx#

(

.BAUD_DIV(SYSCLK_HZ/BAUD_BSP -1)

)

uart_tx_u

(

.I_clk(I_sysclk),//系统时钟输入

.I_uart_rstn(uart_rstn_i), //系统复位

.I_uart_wreq(uart_wreq), //uart发送驱动的写请求信号,高电平有效

.I_uart_wdata(uart_wdata), //uart发送驱动的写数据

.O_uart_wbusy(),//uart 发送驱动的忙标志

.O_uart_tx(O_uart_tx)//uart 串行数据发送

);

 

//例化uart 接收

uiuart_rx#

(

.BAUD_DIV(SYSCLK_HZ/BAUD_BSP -1)

)

uiuart_rx_u

(

.I_clk(I_sysclk), //系统时钟输入

.I_uart_rstn(uart_rstn_i),//系统复位

.I_uart_rx(I_uart_rx), //uart 串行数据接收

.O_uart_rdata(uart_rdata), //uart 接收数据

.O_uart_rvalid(uart_rvalid)//uart 接收数据有效,当uart_rvalid_o =1'b1 uart_rdata_o输出的数据有效

);

     

endmodule

 

4 封装图形化IP

首先新建一个FPGA工程把源文件添加进去

单击菜单Tools->选择Create and Package New IP

 

 

 

 

 

 

Identification页面主要设置一些描述信息,其中最关键的是IP的名字设置

Compatibility页面设置该IP 支持的芯片型号

File Groups设置文件路径

Customization Parameters 页面设置用户参数,这就是顶层文件中的参数

双击参数可以进行修改,我们这里定义的parameter integer默认就是long整形,其他包包括:

float浮点类型

bool 布尔类型 FALSE 0 或 TRUE 1

bitString 类型 通常用二进制或者16进制表示

Default Value设置默认值

string 字符串

Ports and Interfaces信号接口

Customization GUI,最终IP以图形化呈现的形式

Review and Package重新产生IP

封装的参数会保存到这个文件

检查IP路径的文件夹

5 测试结果

测试结果和前面的文章测试结果一致,参照第12课。

标签:封装,自定义,uart,IP,rx,34,rstn,图形化
From: https://www.cnblogs.com/milianke/p/17935514.html

相关文章

  • 使用Pipenv进行Python虚拟环境管理--conda平替
    Pipenv使用教程Anaconda是一个开箱即用的Python开发环境,同时也包含虚拟环境管理工具conda。但是Anaconda的缺点包括:大型安装包:Anaconda的安装包相对较大,需要消耗较多的磁盘空间。依赖冲突:在使用Anaconda时,若安装包过多可能会出现依赖冲突的情况,需要手动解决。此时则......
  • TCP и IP
    ПротоколпередачиTCP/IP,аименнопротоколуправленияпередачей/сетевойпротокол,такженазываемыйпротоколомсетевойсвязи.Этосамыйпросто......
  • IPC
    1wpa_cli与wpa_supplicant之间通信关键函数:(1)wpa_cli发送命令到wpa_supplicantstaticvoidwpa_request(structwpa_ctrl*ctrl,intargc,char*argv[])-1->staticconststructwpa_cli_cmdwpa_cli_commands[]={{"status",wpa_cli_cmd_status,NULL,cli_cmd_fl......
  • 恒创科技:阻止指定IP地址进行网站访问的简单方式
    ​许多网站管理员,应该都会将恶意持续访问的IP请求视为比较头疼的一个问题。要解决这个不正常的访问请求,增强网站安全性,有些简单方式可用。在下面的文章中,介绍了使用.htaccess来禁止某些IP地址的简单方式。首先,您需要将要阻止的IP地址添加到.htaccess文件中。以下是详......
  • ECharts 是一个使用 JavaScript 实现的开源可视化库¹²³⁴。它可以流畅地运行在 PC
    ECharts是一个使用JavaScript实现的开源可视化库¹²³⁴。它可以流畅地运行在PC和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11,Chrome,Firefox,Safari等)²³⁴。ECharts底层依赖轻量级的Canvas类库ZRender¹²³,提供直观,生动,可交互,可高度个性化定制的数据可视化图表¹......
  • `pip freeze` 是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python
    pipfreeze是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python的包管理器pip中使用,主要用于生成一个项目的依赖列表。这个列表可以用于在其他环境中重新创建相同的库设置,通常通过使用pipinstall-rrequirements.txt命令,其中requirements.txt是由pipfree......
  • 服务器被入侵后如何查询连接IP以及防护措施
    目前越来越多的服务器被入侵,以及攻击事件频频的发生,像数据被窃取,数据库被篡改,网站被强制跳转到恶意网站上,网站在百度的快照被劫持等等的攻击症状层出不穷,在这些问题中,如何有效、准确地追踪到访问服务器的外部IP是一个重要的方向。首先我们应该从以下方面入手:检查服务器的进程是不......
  • 在SpringBoot中自定义指标并使用Prometheus监控报警
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享在10分钟教你使用Prometheus监控SpringBoot工程中介绍了如何使用Prometheus监控SpringBoot提供的默认指标,这篇介绍如何自定义业务指标,并使用Prometheus进行监控并报警,同时在Grafana进行展现示例......
  • 当然可以。PyScript 是一个 Python 前端框架,它使用户能够在浏览器中使用 HTML 界面构
    当然可以。PyScript是一个Python前端框架,它使用户能够在浏览器中使用HTML界面构建Python程序¹。Vue是一个用于构建用户界面的渐进式框架。PyScript和Vue可以一起使用,以便在Vue组件中编写Python代码,并在Vue组件中使用Python库²。PyCharm是一个流行的Python......
  • PyScript 是一个框架,<py-script></py-script> 标签 html 如何在 PyScript 中使用 Pyth
    PyScript是一个框架,它允许用户使用HTML的界面在浏览器中创建丰富的Python应用程序¹。以下是如何在HTML中运行PyScript的步骤²⁴:1.在HTML文件的`<head>`部分插入以下代码:```html<linkrel="stylesheet"href="https://pyscript.net/alpha/pyscript.css"/><scri......