自定义IP核 呼吸灯

UG1118 XILINX 创建定制IP核的数据手册

 

2种添加方法:

  1.直接把verilog工程 ADD MODULE 加到DESIGN框框中

  2.把文件封装成IP核。再添加到BLOCK DESIGN中

 

 

 

创建和封装新的IP核向导

 

 

在创建带AXI4接口的IP核时,有几个接口类型供我们选择

  AXI4:存储器映射接口,我们可以指定一个地址,然后它最大支持256次的突发传输。也称为AIX4-FULL 接口。

  AXI4-LITE: 存储器映射接口,轻量级的AXI4接口,简化版的AXI4接口,不支出突发传输的操作,或者说只支持单次传输一个数据,所以这个接口占用的资源更少,但是传输带宽更低。 

  AXI4-STREAM:传输流数据,视频数据或者高速adda模块

 

 

 

 

 

 

 先创建一个工程,用来管理自定义IP核。

 

 

 

 

 

 

 

 

 

 

 

 

 此处例化时因为有一个参数,然后把这个参数例化了 。接下来才是端口。

 例化完了之后还要在顶层文件进行参数例化,端口例化

 

 

 

 

 第二个compatibility,右键family可以添加芯片类型。下面是产品开发的周期,可以选第二个,其实选择哪个都没有什么影响。

 

 

 

双击我们自己添加的隐藏参数 进行修改配置

 

 

 完成封装后关闭工程

之后创建呼吸灯的工程  BLOCK design

如果IP catalog没显示就自己添加IP

 

 

添加两个IP之后点自动布线,自动生成。再引出led引脚。

 

 

 

 

 进行PL引脚分配

 

 

SDK

 

创建一个带AXI4接口的IP核后,vivado软件帮我们生成这3个文件,有这3个文件,PS部分就可以方便的通过里面的几个函数来去实现对我们自定义IP核里面的寄存器做一个配置

 

 

基地址,要写入的寄存器地址,要写入的数据

 

读IP核寄存器里面的数值。 

 

 

 

 头文件 xil_io.h 里有breath_writereg的函数部分 xil_in(out)32。  第3个直接写1也行,高位会自动填充0.

这其实是通过AXI接口的寄存器。

 

 

 

 

 这次加点功能,改变其步进值,即改变呼吸频率,进行循环呼吸灯。

 

 

 加点东西:现在先读出寄存器的状态,等于0的话,给寄存器写入1。等于1的话给寄存器写入0。(演示如何从一个自定义的IP核对其寄存器进行读操作)

 

 

 

 

 

对已经封装好的IP核进行修改

 

如果代码有问题就直接进行修改

 

 

 

 

 假设有不是从PS端写入的信号,如温度湿度啥的,未来简单显示,这边用了固定的数字,如果有其他模块所输出的数据的话,也可以通过一个端口传递的方式把它作为一个input加到这里面然后替换它放在这一串数字的位置。

 

posted @   涛大林  阅读(291)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
点击右上角即可分享
微信分享提示