FPGA培训——Block Design的应用

通过自己的学习的和了解,觉得这种只是赛灵思的开发一种设计方法,这样做是便于开发者在复杂总线或者信号很多的时候进行连接,毕竟图形化更为直观。

Block Design中一般是添加的IP ,然后再次封装成Block,其实Block中添加代码文件也是可以的。所以我们本文分为两部分,第一部分是如何创建和封装自己的ip 第二部分是如何封装成block。

一 :如何创建和封装自己的ip

Vivado版本:Vivado 2019.2
开发板:xc7a35tfgg484-2

打包串口发送模块uart_tx
1、首先打开发送模块的VIVADO工程,确保其编译无误(最好进行仿真验证、上板验证保证其功能正确性),如下:

2、点击Tools-----create and package new ip

3、点击Next

4、选择选项1,点击Next,各选项含义:

1---将当前工程打包为IP核
2----将当前工程的模块设计打包为IP核
3----将一个特定的文件夹目录打包为IP核
4----创建一个带AXI接口的IP核

5、选择IP存放路径,建议专门建一个文件夹来管理所有建立的IP核,然后点击Next

6、点击OK,然后点击NEXT,会自动创建一个新工程,用来生成IP核

7、新生成的IP核打包工程如下:

弹出Package ip 界面。如果不小心关了这个界面,可以在最左边的“PacgeIP”

在右边的界面可以配置一系列参数:

Identification:主要是一系列信息,如IP名字,开发者、版本号等。因为本文仅作示范,所以我这边所有信息都没改。

compatibility:设置该IP 支持的芯片型号,有的芯片可能资源问题不支持这个设计的ip核。

file groups:IP核的文件架构,可以添加或删除文件。比如添加仿真文件、例化文件,说明文件等。我这边保持默认

Customization Parameters:定制化参数。可对参数进行自己的配置,如参数名称啊,类型啊,自定义区间,可选列表等。双击可配置参数的名字、默认值等等。

点击BPS----edit parameter,对参数进行配置(该参数为串口模块的波特率)

将格式Format改为long类型,再勾上Specify Range,Type改成List of values,再添加3个参数(仅作示范)--4800、9600、115200。再将默认值Default value改为9600。这样就将该参数配置成了可选参数,默认9600,可选值:4800、9600、115200。

再使用同样的方法将参数CLK_FRE(模块时钟频率)改为long类型,默认50000000.

Ports and Interfaces:这里展示了IP的接口,可根据需求添加、删除接口或者总线。

需要说明的是,这里很容易报警告:

这个警告是因为IP核打包器在设计中推断出了时钟端口或是复位端口。例如:如果信号名称包含以下任何一种:[ ]clk,[ ]clkin, [ ]clock[ ], [ ]aclk 或 [ ]aclkin,那么IP打包器就会为将其判断成为时钟接口。被自动判断出的接口,IP打包器会倾向于认为你使用AXI接口来处理这个信号,因为IP打包器工具主要是针对于AXI接口。所以如果你的IP中并不使用AXI总线,这两条警告可以直接忽略,在实际的IP中不会有任何的影响。

Addressing and Memory:地址分配和储存映射。ip核的地址,如果PS通过AXI总线访问PL,PS可通过这个地址识别到这个IP核,可以理解为IP核的ID。本设计用不到,直接跳过,感兴趣的可以看XILINX的手册UG1118。UG1118----Creating and Packaging Custom IP

Customization GUI:参数设置的GUI界面。可以对以后配置IP核的界面做一个修改。可以看到,红框内的参数都是我设置好的默认值。

Review and Package:IP核总览及生成界面。点击Package IP完成IP打包

IP核成功打包,如下:

二:Block Design

 图形化的Block Design  --这一部分和上面用的不是自己封装的IP,所以主要看流程

1.新建FPGA工程,并且添加IP的路径,添加成功后会有提示识别到的IP。

点击Settings----IP----Repository, 添加IP核所在路径:

2.创建一个BlockDesign

3.命名为system,这个名字也可以自己取,默认情况下米联客的blockDesign都为system

BlockDesign其实就是一个容器,这个容器里面我们放入IP并且通过把IP接口通过连线的方式相互关联,这样图形化的设计效率要高一些,也更加直观。

4.单击"+"号添加我们需要用到的IP

这个地方有一点不好的是就是如果先在工程里面添加了一些IP,后创建的Block ,那么这个些ip是无法添加到Block中的,只能在block中重新添加。

5.只要输出关键词就能找到相关的IP,双击IP就能添加进入BlockDesign

6.先把我们需要用到的IP都添加进来如下图

首先设clk_wiz_0的时钟设置,输入时钟频率可以根据实际板子的输入时钟频率而设定

设置HDMI输出IP需要的时钟

VTC的设置,默认就是720P的时序参数

HDMI输出IP的设置,选择artix7,实际上对于7代的FPGA都可以选择artix7,而对于ultrascal 选中ULTRASCAL或者ultrascal+的FPGA选择ULTRASCAL_PLUS

7.使用鼠标连线,最终结果如下,这张图就代表了FPGA的程序设计,本质还是我们之前写的FPGA代码

对于一些信号命名如果不符合我们习惯,可以单击信号,修改命名

8. 当你需要把IO端口引出到外部,可以右击IP的端口,选中make External

单击已经引出的信号,还可以修改名字

如果有连接错误的线,还可以右击端口延长的部分,选择Disconnect Pin断开这个端口的连接

更多控制方法可以右击鼠标,根据弹出的菜单选择命令。具体的操作过程也可以通过视频教程学习。

9.右击system 选择Create HDL Wrapper,这个过程就是产生一个FPGA的顶层文件,调用system这个BlockDesign

以下是自动产生的文件

这时候也可以展开system看下源码(注意,这个源码是复制了我们03_ip路径下的源码,一般我们修改了ip源码,VIVADO会提示更新IP,重新复制03_ip路径下的原来过来)

10.添加FPGA约束文件,编译并且测试

Block Design中间也是可以直接添加.v文件的,具体可以参考这篇博文:

Vivado将.v文件作为模块加入Block Design-CSDN博客

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值