Xilinx-ZYNQ7000系列-学习笔记(4):在vivado中自定义IP核

Xilinx-ZYNQ7000系列-学习笔记(4):在vivado中自定义IP核

一、PWM

首先我们先编写一个pwm模块,用于封装成IP核。

`timescale 1ns/1ps
module ax_pwm
#(
	parameter N = 32  //pwm bit width	
)
(
	input	clk,
	input	rst,
	input[N - 1:0]period,
	input[N - 1:0]duty,
	output	pwm_out
	);
	
reg[N - 1:0]period_r;
reg[N - 1:0]duty_r;
reg[N - 1:0]period_cnt;
reg pwm_r;
assign pwm_out = pwm_r;
always @(posedge clk or posedge rst)
begin
	if(rst == 1)
	begin
		period_r <= { N {1'b0}};
		duty_r	<= { N {1'b0}};
	end
	else
	begin
		period_r <= period;
		duty_r <= duty;
	end
end

always @(posedge clk or posedge rst)
begin
	if(rst == 1)
		period_cnt <= { N {1'b0}};
	else
		period_cnt <= period_cnt + period_r;
end

always @(posedge clk or posedge rst)
begin
	if(rst == 1)
	begin
		pwm_r <= 1'b0;
	end
	else
	begin
		if(period_cnt >= duty_r)
			pwm_r <= 1'b1;
		else
			pwm_r <= 1'b0;
	end
end

endmodule

二、建立vivado工程

1.我们在Vivado开发环境里新建了一个“custom_pwm_ip”的工程,并生成了一个名为system的Block Diagram文件,再添加ZYNQ7 Processing System内核系统到这个原理图中,创建好后的Vivado工程及Block Diagram如下:
在这里插入图片描述
2. 接下来需要配置ZYNQ的DDR为 MT41J256M16 RE-125, 再配置MIO48,MIO49为UART1。

三、创建自定义的IP

下面开始创建自定义的RTC控制IP核:
1.点击菜单Tools->Create and Package IP…
2. 选择Create a new AXI4 peripheral项,这里我们是要产生一个AXI4总线接口的外设IP, 前面的那几项是把当前的工程打成包。
在这里插入图片描述
3. 显示IP的名字,版本和描述等信息。我们这里可以修改了IP的名字和存放位置。
在这里插入图片描述
4. 显示AXI总线接口名字,接口是Slave, 数据宽度是32位,IP内部的寄存器数量为4个。 我们这里不需要修改,点击Next。
在这里插入图片描述
5. 点击Finish完成。
在这里插入图片描述
6. 打开IP Catalog界面,我们可以看到ax_pwm_v1.0了,但现在返个IP还不具有任何功能。
在这里插入图片描述
7. 右键选中ax_pwm_v1.0, 然后选择Edit in IP Packager项。
在这里插入图片描述
8. 点击OK, 软件自动会打开另外一个Vivado窗口来对返个用户IP核进行编辑。
9.
新的IP的Vivado工程显示如下:
在这里插入图片描述
9. 双击顶层文件ax_pwm_v1_0.v打开,在下图的位置添加PWM的管脚端口定义。
在这里插入图片描述
在顶层文件ax_pwm_v1_0.v的下面所示位置对pwm管脚的例化。
在这里插入图片描述
10. 在双击打开ax_pwm_v1_0_S00_AXI.v文件,在以下的位置添加pwm的管脚端口定义
在这里插入图片描述
11.将pwm核心功能文件“ax_pwm.v”放在hdl目录,同样可以在返个目录下找到这个文件。
在这里插入图片描述
11. 将“ax_pwm.v”添加到工程中。
12.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
12. 例化pwm核心模块,将slv_reg0用于控制pwm的频率,slv_reg1用于控制pwm的占空比。
13.
13. 可以编译一下看看有没有语法错误
在这里插入图片描述
14. 双击IP-XACT下的component.xml文件,返回到Package IP-rtc_ip窗口,点击Port and Interfaces项,点击Merge changes from Ports and Interface Wizard。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再对前面没有打钩的File Groups点击Merge changes from File Groups Wizard来更新文件和驱动动
选择Review and Package项,然后点击Re-Package IP按键结束IP核的设置。
在这里插入图片描述
到此为止一个用户自定义的IP核就算设计完成了,接下来我们关闭IP核的Vivado工程,回到custom_pwm_ip的系统工程界面,在block中搜索pwm就可以完成导入了。

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq-7000系列之linux开发学习笔记是一系列关于在Zynq7030数据采集板上进行Linux开发的文章。在这些文章,作者提供了关于编译Linux内核、制作设备树、安装NFS等方面的指导和经验。在其一篇文章,作者遇到了在挂载NFS时出现的问题,提示"wrong fs type, bad option, bad superblock"等错误信息。作者还提供了Linux内核源码的下载链接以及开发环境的相关信息。整个学习笔记的目标是让开发板能够连接外网,并通过NFS挂载到虚拟机上运行一个helloworld程序。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Zynq-7000系列之linux开发学习笔记:NFS配置与开发板联网(七)](https://blog.csdn.net/Claudedy/article/details/94591622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)](https://blog.csdn.net/Claudedy/article/details/90760085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值