S02_CH04_User_IP实验Enter a post title
S02_CH04_User_IP实验
4.1 创建IP
在之前的教程中,我们通过MIO与EMIO来控制LED,所使用的也是官方的IP,实际当中,官方提供的IP不可能涵盖到方方面面,用户需要自己编写硬件描述语言,然后将其封装成IP来使用,本节就将详细的讲解如何在VIVADO中创建用户自定义的IP。
Step1:打开VIVADO软件,新建一个工程。
Step2:单击Add Source,选择Add or Creat design Sources,然后单击Next。
Step3:单击Create File,输入文件名,单击OK。
Step4:单击Finish,完成Verilog文件的创建。
Step5:将以下代码复制入文本编辑区内。
|
module LED_ML( input CLK_i,//100MHZ input RSTn_i, output reg [3:0]LED_o ); reg [31:0]C0; always @(posedge CLK_i) if(!RSTn_i) begin LED_o <= 4'b0001; C0 <= 32'h0; end else begin if(C0 == 32'd49_999_999)//1s begin C0 <= 32'h0; if(LED_o == 4'b1000) LED_o <= 4'b0001; else LED_o <= LED_o << 1; end else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end end endmodule |
Step6:单击Tools—>Create and package IP,单击Next。
Step7:选择IP的保存路径,单击Next。
Step8:单击Finish完成封装。
4.2 调用自定义IP
Step1:另外新建一个VIVADO工程,根据自己的开发板正确配置芯片型号。
Step2:在Project manager区中单击Project settings。
Step3:选择IP设置区中的repository manager,。
Step:4:单击+号图标,将上一节封装的IP的路劲存放进去,单击OK。
Step5:新建一个BD文件,输入文件名,完成创建。
Step6:向BD文件中添加一个ZYNQ Processing system,根据自身硬件完成IP的配置。
Step7:单击添加IP图标,输入上一节我们自定义IP的模块名,将其添加入BD文件中。
Step8:按如下电路图完成模块间的连线。
Step9:右键单击Block文件,文件选择Generate the Output Products。
Step10:右键单击Block文件,选择Create a HDL wrapper,根据Block文件内容产生一个HDL 的顶层文件,并选择让vivado自动完成。
Step11:选中Project manager,然后右单击Constraints,选择Add Sources。
Step12:输入文件名,完成创建,将上一章EMIO的约束文件copy进去。
Step11:产生bit文件。
4.3 导入到SDK
由于自定义的IP的时钟输入来自于ZYNQ Processing system,源时钟是使用的PS的时钟,因此需要启动SDK整个系统才能启动,而自定义IP不需要由SDK进行配置,因此我们可以按照前几节讲过的内容,在SDK端建立一个Hello World工程跑起来就能让自定义IP跑起来。
Step1:创建一个Hello World工程。
Step2:右击工程,选择Debug as ->Debug configuration。
Step3:选中system Debugger,双击创建一个系统调试。
Step7:设置系统调试。
Step8:单击窗口上的运行按钮,运行程序,可看到LED的流水操作。
4.4 本章小结
本章主要介绍了如下在VIVADO下创建一个自定义的IP,内容比较简单,需要注意的是如果工程中使用的源时钟是为PS时钟的话,是需要启动SDK系统才能正常工作的,若是系统使用到了ZYNQ Processing System,则系统使用的是PS时钟,这是一个判断的依据。在ZYNQ的开发中,创建自定义IP是一项基本功,还未熟练掌握的要勤加练习。
S02_CH04_User_IP实验Enter a post title的更多相关文章
- S02_CH05_UBOOT实验Enter a post title
S02_CH05_UBOOT实验 5.1什么是固化 我们前几章的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化PS, ...
- S02_CH03_EMIO实验Enter a post title
S02_CH03_EMIO实验 3.1 EMIO 和MIO的对比介绍 上次讲到MIO的使用,初步熟悉了EDK的使用,这次就来说说EMIO的使用.如你所见zynq的GPIO,分为两种,MIO(multi ...
- S02_CH02_MIO实验Enter a post title
S02_CH02_MIO实验 2.1 GPIO简介 Zynq7000系列芯片有54个MIO(multiuse I/O),它们分配在 GPIO 的Bank0 和Bank1隶属于PS部分,这些IO与PS直 ...
- 【第一季】CH05_FPGA设计Verilog基础(二)Enter a post title
[第一季]CH05_FPGA设计Verilog基础(二) 5.1状态机设计 状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路.通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态 ...
- 【第一季】CH04_FPGA设计Verilog基础(一)Enter a post title
[第一季]CH04_FPGA设计Verilog基础(一) 4.1 Verilog HDL 代码规范 u 项目构架设计 项目的构架用于团队的沟通,以及项目设计的全局把控 u 接口时序设计规范 模块和模块 ...
- ctrl+enter提交留言
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...
- swoole实验版聊天室
“swoole实验版聊天室”是依据一堂swoole培训课内容改编的,结合了bootstrap前端框架.redis数据库.jquery框架等实现基本功能,只是体现了swoole的应用,并不是为了专门写个 ...
- Oracle第一步
Oracle 启动数据库 Startup [NOMOUNT|MOUNT|OPEN|FORCE] [restrict] [pfile=filename] 启动实例,加载数据库,启动数据库 oRACLE关 ...
- Using Nuget in Visual Studio 2005 & 2008
NuGet is a Visual Studio extension that makes it easy to install and update third-party libraries an ...
随机推荐
- linux中如何配置vim的别名为vi?
答: 向~/.bashrc中添加如下内容: alias vi=vim
- ubuntu 切换默认python版本
现在的python项目都是基于python3的了,再用ubuntu的时候默认的版本是py2的,所以想切换到py3上: 打开终端: sudo update-alternatives --install ...
- Maven IntelliJ
IntelliJ IDEA 已经内建了对 Maven 的支持.我们在此例中使用的是 IntelliJ IDEA 社区版 11.1. IntelliJ IDEA 的一些特性列出如下: 可以通过 Inte ...
- web开发的三层架构
Web层 接收客户端发送过来的数据,然后需要将数据传递给service层 Service层 业务逻辑层:业务:比如检验用户名的是否存在,如果不存在则需要把用户的数据存储在数据库中,如果存在,给web返 ...
- matllab 按照文件夹处理文件
folders=dir('文件夹地址'); folders={folders.name}; folders=setdiff(folders,{'.','..'})'; num=length(folde ...
- pip安装软件报错 utf-8 code can't decode byte 0xcf in position7
pip安装软件报错 utf-8 code can't decode byte 0xcf in position7 根据错误提示的路径找到__init__.py文件 根据错误提示的最后几句话找到对应的行 ...
- 找回Firefox4的状态栏!Status-4-Evar扩展
Status-4-Evar这个扩展能让Firefox4故意移除的状态栏给找回来!官方下载地址为:https://addons.mozilla.org/zh-CN/firefox/addon/23528 ...
- Linux Shell列出网络中所有的活跃主机
因为的的网段是 192.168.1.0/24 , 所以我只需遍历 192.168.1.1 到 192.168.1.255 之间的所有ip然后进行 ping 就可以了: test.sh: #!/bin/ ...
- echarts之title-textAlign
option: { title : { text: '各类数据采集总量TOP5', subtext: '', x:'center', y:'top', textAlign:'center' },}
- 记录一下自己安装Appium的流程
跟着其他大佬的安装攻略,一步一步来的.过程中遇到了一些问题,也都解决了~ 需要准备的东西: 1.JDK1.8 2.Andriod SDK 3.Node.js 4.Python 5.Appium-pyt ...