
zynq
只是有点小怂
本职工作是电子工程师,其他都是业余爱好
展开
-
Digilent提供的PmodOLEDrgb驱动程序
examples里的main.c/******************************************************************************//* *//* main.c -- Demo project for the PmodOLEDrgb IP .原创 2021-05-08 16:44:11 · 435 阅读 · 0 评论 -
Digilent提供的Pmod AD5驱动程序
examples里的main.c/******************************************************************************//* *//* main.c -- Example program using the PmodAD5 IP .原创 2021-05-08 16:40:27 · 278 阅读 · 0 评论 -
xilinx提供的初始化DMA的代码(含注释)
// A function that wraps all AXI DMA initialization related API callsint init_dma(XAxiDma *axiDmaPtr){ XAxiDma_Config *CfgPtr; int status; // Get pointer to DMA configuration CfgPtr = XAxiDma_LookupConfig(XPAR_AXIDMA_0_DEVICE_ID); if(!CfgPt原创 2021-05-07 17:24:55 · 1169 阅读 · 0 评论 -
xilinx提供测试dma和fft在sdk端的代码
来自ug871的ch10 Using HLS IP in a Zynq SoC Design的lab2 Streaming Data Between the Zynq CPU and HLS Accelerator Blocks/* * Copyright (c) 2009-2012 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATIO.原创 2021-05-05 21:22:29 · 1203 阅读 · 0 评论 -
xilinx官方教程ug871利用HLS实现RealFFT
首先我在米联客上看到HLS算法基础入门12课时的S05_CH08_傅里叶变换的 HLS 实现,中间一段提到这个教程根据官方实现在官方的参考手册 ug871-vivado-high-level-synthesis-tutorial.pdf 中对 FFT 有比较详细的介绍,并且官方提供的 Example 中也有对应的工程方便大家学习,这一节我们主要说一下如何使用 TCL 语言创建工程,并且进行对应的操作,源码直接使用官方提供的好的,那就没有米联客什么事了,打开Docnav搜索ug871,仔细找找.原创 2021-05-04 17:07:21 · 1940 阅读 · 0 评论 -
xilinx在提供的代码xfft2real.cpp和real2xfft.cpp
hls_realfft.h/*******************************************************************************Vendor: XilinxAssociated Filename: hls_realfft.hPurpose: Part of a Vivado HLS tutorial exampleDevice: AllRevision History: March 31, 2013 - initial release.原创 2021-05-03 23:45:34 · 220 阅读 · 0 评论 -
zedboard的DDR3型号MT41K128M16HA
zedboard的DDR3型号可以在Hardware User’s Guide中找到,型号为 MT41K128M16HA-15E:D,总大小为512MB(128M x 32)在SDK中可以看到最高地址到了1fff_ffff,一个f代表4个1,7个f总共有28个1加上开头总共有29个1(拆成9+10+10),10个1代表1K,两个1K相乘为1M,再乘以2^9=512M...原创 2021-05-02 22:08:46 · 1222 阅读 · 0 评论 -
AXI DMA用于传输的函数XAxiDma_SimpleTransfer()
/*****************************************************************************//** * This function does one simple transfer submission * * It checks in the following sequence: * - if engine is busy, cannot submit * - if engine is in SG mode , cannot原创 2021-05-02 21:54:32 · 2895 阅读 · 0 评论 -
简单分析Pmod AD5的文档和官方例程
根据官方文档Pmod AD5是24位AD,用得芯片是AD7193(我尝试阅读了这个芯片手册,麻了太多了,还是直接看Digilent官方提供的程序),使用通信协议是SPI,使用Pmod的好处是不用关心接口协议和时序分析,直接插上去就完事了。根据PmodAD5的结构体定义可以知道,第一部分定义的是AD5传输的SPI协议,第二部分定义的是数据,u8即unsigned 8-bit无符号8位数,有三部分故总共为24位。这里铺垫一下2^23=8388608。AD最主要的部分是用作采集数据,所以重点分..原创 2021-04-30 20:47:03 · 456 阅读 · 1 评论 -
Digilent提供的Pmod AD1驱动程序
在github上下载Digilent提供的IP核,在路径\ip\Pmods下找到PmodAD1点进去\drivers\PmodAD1中examples是main主程序/******************************************************************************//* *//* mai.原创 2021-04-29 23:47:01 · 470 阅读 · 0 评论 -
pmod ad2 digilent 提供的pmodad2.c和pmodad2.h
配合原理图服用PmodAD2.h/******************************************************************************//* *//* PmodAD2.h -- Driver definitions for the PmodAD2 .原创 2021-04-18 17:28:29 · 320 阅读 · 0 评论 -
basys3利用microblaze连接Pmod ad2
点击➕添加microblaze点击Run Block Automation把Local Memory设置为128KB切到Boards添加系统时钟,这步也可以先做添加USB UART双击这个模块在IP Configuration下修改波特率为115200添加IP库选择JB连接AD2点击Run Connetion Automation,全选后点OK点击刷新符号进行整理布局如下Sources下右键BD文件点击Create HDL Wrapper生成顶层文件点击生成比特流并.原创 2021-04-18 17:24:43 · 588 阅读 · 0 评论 -
记录zedboard无法识别com的解决思路
zedboard有时连上串口都不能用xil_printf输出,今天我更干脆直接无法识别了,打开设备管理器可以看见没有显示COM,说明USB Serial Converter没有转换成功,打开SDK Terminal连接COM显示是空的。首先尝试最简单的断电重启法,无效首先根据这位博主的文章 【zedboard串口bug最终解决办法】zynq开发 在SDK 终端Teminal找不到COM3、COM5等接口 无法连接uart串口 ZYNQ驱动问题 解决办法 https://blog.csdn...原创 2021-04-18 11:28:59 · 1311 阅读 · 1 评论 -
zedboard的xdc文件
ZedBoard Master XDC Rev C/D v3 来自于网页最后一项 https://www.avnet.com/wps/portal/us/products/avnet-boards/avnet-board-families/zedboard/下载地址 https://www.element14.com/community/servlet/JiveServlet/downloadBody/90943-102-1-377444/zedboard_master_XDC_RevC_D_v..原创 2021-04-17 23:02:32 · 771 阅读 · 0 评论 -
zedboard连接pmod oledrgb
参考教程 basys3利用microblaze连接Pmod OLEDrgb Pmod快速入门 第1期Pmod NAV Pmod快速入门 第2期 PmodOLED 首先创建一个新工程,选择板卡文件zedboard,创建一个bd文件点击 IP setting.原创 2021-04-17 00:14:51 · 727 阅读 · 0 评论 -
将hls生成的IP添加到vivado2018
打开settings下的IP Repository的➕目录选择hls工程生成的impl文件夹下的ip刷新后点击OK就添加成功了添加后在IP Catalog下可以自动识别HLS的IP双击可以查看这个IP并准备把它例化进工程原创 2021-04-15 10:27:04 · 1840 阅读 · 1 评论 -
hls和modelsim进行联合仿真
在solution下点击Run C/RTL Cosimulation选择仿真器为Modelsim,Dump Trace选择all,选择编译库地址为之前在vivado中生成的器件地址,没生成的可以重新回去生成一下,参见博客 vivado2018.3和modelsim10.6d进行联合仿真根据ug871-vivado-high-level-synthesis-tutorial的描述,最好将modelsim添加到环境变量里,不然找不到CAUTION! This lab exercise require.原创 2021-04-15 00:10:09 · 1642 阅读 · 0 评论 -
hls和modelsim联合仿真生成波形找不到wlf文件
wlf是modelsim的波形文件,用modelsim打开这个可以加载出波形文件然鹅我运行完 RUN C/RTL Cosimulation后每发现这个文件,后来发现没有在Dump Trace下勾选All,还修改环境变量老半天了(/(ㄒoㄒ)/~~原创 2021-04-14 23:44:56 · 800 阅读 · 1 评论 -
zynq创建ramip核
新建一个工程打开IP Catalog,搜索ram,找到Block Memory Generator选择配置类型为单端口修改写数据位宽为32接着点击OK生成即可打开veo模板文件,红色代表IP核还在生成中可以把对应代码拷贝进顶层ip_ram.v文件就可以驱动ip核了//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAGblk_mem_gen_0 your_instance_name ( .cl.原创 2021-04-11 18:57:10 · 467 阅读 · 0 评论 -
basys3利用microblaze连接Pmod OLEDrgb
参考教程 Digilent Pmod乐高积木式传感器—Pmod OLEDrgb 教程首先要导入basys3的板卡文件,这样方便连接Pmod vivado2018.3根据板卡Boards直接创建工程(比如basys3和Arty A7)首先导入Pmod IP核,这可以在gayhub下载zip文件 https://github.com/Digilent/vivado-library,解压后把整个master文件添加至工程 vivado2018.3添加IP库注意是这整个project..原创 2021-04-11 00:02:47 · 1030 阅读 · 1 评论 -
[Common 17-39] ‘connect_bd_intf_net‘ failed due to earlier errors. 的解决办法
连接pmod时按照教程点击Connetor JB连接pmod out时死活连不上,按理说应该是如下图的pmod out连接出来到jb接连报了两个错误 [BD 5-106] Arguments to the connect_bd_intf_net command cannot be empty 和 [Common 17-39] ‘connect_bd_intf_net’ failed due to earlier errors.点击综合还是生成顶层文件依然报错仔细分析觉得可能少了接..原创 2021-04-09 23:58:55 · 5039 阅读 · 0 评论 -
vivado2018.3添加IP库
Settings->IP->Repository点击➕添加库,把地址复制进去或直接选择,等待刷新一下后点OK可以点IP Catalog查看IP原创 2021-04-09 20:27:18 · 3463 阅读 · 2 评论 -
vivado2018.3根据板卡Boards直接创建工程(比如basys3和Arty A7)
参考文档 https://reference.digilentinc.com/vivado/installing-vivado/start#installing_digilent_board_files之前在vivado下创建适用于basys3的工程时是根据Parts选择芯片型号创建,这种方法很慢而且我根本记不住它的芯片型号。用zedboard时发现在Boards下直接选择板子就可以,难道是因为钞能力吗?不,仅需要简单配置,也可以在Boards下查找bayss3,毕竟用得是Digilent官方家的..原创 2021-04-09 20:10:29 · 3515 阅读 · 0 评论 -
zynq开发系列6:创建AXI IP实现PS对PL的数据配置(步骤三配置SDK)
新建一个工程,模板选择空,在板级支持包可以看见breath_led的三个文件,可以根据这个对呼吸灯模块进行配置新建main.c,首先把呼吸灯开关打开,通过接口对呼吸灯做一个配置,打开 breath_led_ip.h 并include进main.c查看函数 BREATH_LED_IP_mWriteReg() 的说明,向 BREATH_LED_IP 寄存器写数据,可以通过这条语句配置呼吸灯模块。输入参数需要寄存器的基地址,偏移地址和向寄存器写得数据基地址在 xparameters.h 里查看,并in.原创 2021-04-08 01:32:48 · 1406 阅读 · 0 评论 -
zynq开发系列6:创建AXI IP实现PS对PL的数据配置(步骤二配置block design)
点➕添加breath_led_ip,可以直接搜索,双击进行查看点击Run Connection Automation让软件自动连接点下刷新按钮修改一下布局引出led的管脚修改为ledGenerate Output Products 并 Create HDL Wrapper对PL端LED进行管脚约束set_property PACKAGE_PIN T22 [get_ports led]set_property IOSTANDARD LVCMOS33 [get_ports led].原创 2021-04-07 19:05:44 · 364 阅读 · 0 评论 -
zynq开发系列6:创建AXI IP实现PS对PL的数据配置(步骤一)
在Vivado开始界面选择Manage IP,新建一个名为custom_ip的文件夹专门存放IP核新建一个IP,Tools 下打开 Create and Package New IP在 IP Catalog 下可以看见很多官方IP,User Repository下才是自己的IP,我之前跟着视频做了一遍,直接用得别人呼吸灯的代码但是因为按键复位高电平和别人板子不一样没办法运行,懒得直接修改原先IP再更新到工程里,就直接新建一个IP看能否成功。下面有些图中名字为breathe_led_ip,不要惊慌,.原创 2021-04-07 18:44:40 · 1194 阅读 · 0 评论 -
zedboard板子上呼吸灯的实现(第一版)仿真代码的实现
为了便于仿真的实现,定义周期数值period_cnt缩小为50,每次改变的数值duty_cycle定义为5,这两个数值本来可以定义在参数中,懒得重写代码直接修改了数值。module breathe_led( input clk, // 时钟信号 input rst, // 复位信号 output wire led ); // reg define reg [16:0] period_cnt; // 周期计数器 1khz = 1ms .原创 2021-04-06 23:25:58 · 237 阅读 · 0 评论 -
zedboard上呼吸灯的实现(第二版)
根据野火的教程改编而来,端口信号时钟信号和复位信号,输出信号连接到板子上的LED灯。呼吸灯呼吸效果分为完全熄灭和完全点亮两个过程,通过控制PWM的占空比来控制灯的亮灭程度,将第一个状态完全熄灭的时间定义为一个周期T。接下来保持一段时间的低电平,比如十分之一周期的低电平,表示点亮一段时间(野火低电平点亮LED)。设置完全熄灭到完全点亮时间为1s故需要一个计数器cnt_1s,分成1000份将1s/1000得到T=1ms故需要一个计数器cnt_1ms,每次增加的点亮时间分为1000份得1ms/1000=1us..原创 2021-04-05 18:26:39 · 227 阅读 · 0 评论 -
vivado2018.3和modelsim10.6d进行联合仿真
首先确认modelsim的型号是否在modelsim10.6c及以上,没有需要重新安装问题分析 ERROR: [Vivado 12-5602] compile_simlib failed to compile for modelsim with error in 8 libraries (cxl_error.log)我用modelsim10.1c进行编译 (Vivado下进行Compile Simulation Libraries )时报错,后来我想了一下,之前好像配置了modelsim和IS.原创 2021-04-02 20:56:31 · 7917 阅读 · 1 评论 -
zedboard实现流水灯
50MHz 4个灯闪烁的效果module water_led #( parameter CNT_MAX = 25'd24_999_999 )( input wire sys_clk, input wire sys_rst, output reg [3:0] led_out); reg [24:0] cnt = 25'd0; reg cnt_flag = 0; always @(posedge sys_clk or posedge .原创 2021-04-01 23:59:40 · 511 阅读 · 0 评论 -
zedboard板子上呼吸灯的实现(第一版)
这是原始代码时钟信号为50MHzmodule breathe_led( input clk, // 时钟信号 input rst, // 复位信号 output led ); // reg define reg [15:0] period_cnt; // 周期计数器 1khz = 1ms 1_000_000ns / 20ns(50mhz) = 50_000(16位二进制) reg [15:0] duty_cycle;.原创 2021-03-23 22:52:15 · 234 阅读 · 0 评论 -
fpga小项目1:两个灯交替闪烁
module breathe_led( input clk, input rst, output [1:0] led); reg [26:0] cnt = 27'd0; assign led = (cnt < 27'd50_000_000)?2'b10:2'b01; always @(posedge clk or posedge rst) begin if(rst) cnt <= 27'd0;原创 2021-03-23 22:11:45 · 1506 阅读 · 0 评论 -
zynq开发系列5:通过AXI GPIO的中断实现PL端按键控制PS端LED(SDK开发详解)
axi_gpio是PL端gpio(FPGA资源搭建的软核),ps7_gpio是ps端gpio(硬核)。打开Documentation的示例Examples,可知第二个是关于中断的示例。导入示例import examples对照并结合上一个中断实验代码zynq开发系列4:MIO按键中断控制LED来编写用到了AXI GPIO导入头文件,根据mss文件描述axi_gpio叫做gpio故导入文件xgpio.h。ps端gpio叫做gpiops故导入文件xgpiops.h导入AXI GPIO的器件ID,点开定.原创 2021-03-22 17:23:23 · 4322 阅读 · 1 评论 -
zynq开发系列5:通过AXI GPIO的中断实现PL端按键控制PS端LED
在pg144-axi-gpio(LogiCORE IP Product Guide)中可以看见AXI GPIO提供通用输入输出接口到AXI接口,32位软核,设计与AXI4-Lite接口进行连接。IOP中GPIO是硬核,芯片中已经实现的硬件电路,AXI GPIO是在PL端用逻辑实现的软核。在ug585的1.4.2 PS-PL interfaces中介绍了两种接口,功能接口和配置接口。AXI互联属于功能接口,功能接口又分AXI_ACP,AXI_HP和AXI_GP。在框图中均可以看见,实现了PL和PS间数据传输.原创 2021-03-21 19:53:00 · 1880 阅读 · 0 评论 -
zynq文档阅读pg144-axi-gpio之AXI GPIO IP核
在pg144-axi-gpio(LogiCORE IP Product Guide)中可以看见AXI GPIO提供通用输入输出接口到AXI接口,32位软核,设计与AXI4-Lite接口进行连接。IOP中GPIO是硬核,芯片中已经实现的硬件电路,AXI GPIO是在PL端用逻辑实现的软核。在ug585的1.4.2 PS-PL interfaces中介绍了两种接口,功能接口和配置接口。AXI互联属于功能接口,功能接口又分AXI_ACP,AXI_HP和AXI_GP。在框图中均可以看见,实现了PL和PS间数据传输.原创 2021-03-21 12:20:15 · 3014 阅读 · 0 评论 -
zynq开发系列4:MIO按键中断控制LED
a原创 2021-03-20 00:51:54 · 1806 阅读 · 0 评论 -
zynq阅读文档之通过中断读GPIO输入的编程指导
ug585的14.3.4中给了从GPIO输入引脚读数据的第二种方法——中断把MIO引脚12配置成上升沿中断把触发类型设置为上升沿向中断类型寄存器写1设置为边沿触发,INT_TYPE_0 [12] = 1向极性寄存器写1设置为上升沿(0是下降沿),INT_POLARITY_0 [12] = 1只是配置成上升沿,向INT_ANY寄存器写0(1是上升沿和下降沿均可以)INT_ANY_0 [12] = 0使能中断向INT_EN寄存器写1,INT_EN_0 [12] = 1查看中断状态是否.原创 2021-03-17 17:20:31 · 451 阅读 · 0 评论 -
zynq文档阅读之GPIO的中断
根据文档ug585的ch14.2,当检测到中断时INT State被置为1,中断没有被屏蔽时读取1,(中断检测逻辑和中断使能逻辑)通过与门输出中断到GICGeneric Interrupt Controller (GIC) 中断控制器。在block diagram可以看到GIC可以接收来自PL和PS的中断请求信号,GIC需要对中断请求信号进行编号(ID)。中断控制器通过ID判断中断来自哪个外设。GPIO的中断ID为52具体描述如下所示...原创 2021-03-17 16:59:59 · 1612 阅读 · 0 评论 -
zynq文档阅读之EMIO和MIO的细微差别
阅读ug585的14.2.2 EMIO signalsEMIO寄存器接口与上一节中描述的MIO寄存器接口相同。然而,EMIO接口只是PS和PL之间连线,因此有一些区别EMIO输入直接连接到PL,输入与输出或OEN寄存器都无关(MIO作为输出时,输入和输出值一致;EMIO输入和输出没有关系)。当DIRM设置为0时,可以从DATA_RO寄存器读取输入。输出不是三态使能信号,所以输出和OEN没有关系(EMIO直接连接到PL,不支持三态;OEN打开MIO是输出,OEN关闭MIO是三态信号高阻态)。输出值.原创 2021-03-13 23:20:15 · 1045 阅读 · 0 评论 -
zynq开发系列4:EMIO连接按键控制MIO连接的灯
EMIO是负责PL端和PS端通信,PL侧按键可以通过连接EMIO来控制连接到MIO的PS侧的LED。原理和实验3 zynq开发系列3:GPIO连接MIO通过按键控制LED灯亮起 类似,只是由MIO侧的按键为了PL侧的按键,故软件部分的开发只是替换掉这个信号,但硬件部分需要添加EMIO模块。设计zynq核在实验3的基础上添加EMIO。首先在 Peripheral I/O Pins下勾选上GPIO EMIO,然后在MIO Configuration 下点开I/O Peripherals,再点开GPIO修改.原创 2021-03-13 17:54:46 · 626 阅读 · 0 评论