自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 AXI DMA

DMA是现代计算机的重要特色之一,是硬件实现存储器与存储器之间或存储器与I/O设备之间直接进行 高速数据传输的内存技术,它允许不同速度的硬件设备进行沟通,而不需要依靠中央处理器的中断负载。如果不用DMA搬运数据,那么中央处理器就需要从来源把每一片段的数据复制到寄存器中,这一过程一直 占用CPU的资源。当使用DMA时,CPU向DMA控制器发出一个存储传输请求,当DMA控制器接收到请求就会将数据从源地址搬运到目的地址。在数据搬运过程中不占用CPU资源,CPU。

2025-09-20 18:33:19 796

原创 AXI4 DDR读写测试

五、m_axi_init_txn连接按键,m_axi_txn_done和m_axi_erro连接led用作观察。由于我的板子只有一个pl端的led因此我就将m_axi_erro信号随便连接一个GPIO外设由于我们的按键一开始为高电平,而DDR初始化信号检测到上升沿才初始化。五、添加pl端信号,m_axi_init_txn这个信号是初始化信号,检测到上升沿的时候才有效,检测到高电平后会立马对地址指向的数据内存初始化,然后我们对齐重命名。m_axi_txn_done这个是对写入和读出的数据对比完成信号。

2025-09-19 22:50:46 537

原创 AXI4 协议

写数据的三个通道是相互独立的。显示写事务如何使用写地址、写数据和写响应通道。

2025-09-17 23:14:24 1639

原创 SystemVerilog 学习之SystemVerilog简介

SystemVerilog是一种硬件描述和验证语言(HDVL),由Accellera开发并于2005年成为IEEE标准(IEEE 1800)。它在传统Verilog基础上扩展了高级验证和设计功能,广泛应用于数字电路设计、验证及系统级建模领域。

2025-09-13 23:18:27 538

原创 vivado下载程序后不弹出ila窗口

中下载pl部分的程序就好了。然后就可以通过SDK一起烧录pl和ps侧的程序了。正常情况是这样的,没有运行ps的话没有下图红框中的ila。原因:因为ila用的ps提供的clk,所以要先用SDK运行ps 然后再在。

2025-09-13 22:56:23 1736

原创 ZYNQ PS读写PL BRAM

这个ip核呢是将我们通过AXI输入进BRAM的数据通过自定义的ip核转为合适的ram接口信息接到ramip核上,这样就可以通过ps端输入的读使能,读地址读数据长度信息转化为ram的读使能,读地址,保证时序正确。1、创建IP管理器2、选择AXI接口的ip核,然后一直保持默认最后点击完成,3、编辑这个ip,右键ip核,然后选择编辑选项,进入编辑页面,然后默认ok就行4、添加一个控制文件(.v)如下为什么要写这个模块呢?为什么不能通过ps侧输入读使能,读数据直接连接到ram的ip核上呢?

2025-09-13 22:50:30 1329

原创 ZYNQ EMMC

一、简介eMMC 的英文全称是 Embedded Multi Media Card,即嵌入式多媒体卡(又叫嵌入式存储卡),eMMC 是 MMC协会所订立的内嵌式存储器标准规格,主要是针对手机或者平板电脑为主,是一种非易失性的存 储器件。eMMC 采用统一的 MMC标准接口,把高密度的非易失性存储器及Flash控制器封装在一颗芯中,从 而减少了对 PCB主板空间的占用。Flash控制器用于对Flash进行管理,相比于直接将NAND Flash接入到 Host 端(ZYNQ。

2025-09-08 22:55:23 1541

原创 ZYNQ FLASH读写

Quad-SPI闪存控制器是PS内输入/输出外设(IOP)的一部分,用于访问多比特串行闪存设备,实现高吞吐量和低引脚数应用。控制器工作在三种模式之一:I/O模式,线性寻址模式,和传统SPI模式。在I/O模式下,软件与闪存设备协议密切交互。软件通过四个TXD寄存器向控制器写入flash命令和数据。软件读取RXD寄存器,其中包含从闪存设备接收到的数据。线性寻址模式使用设备操作的子集来消除I/O模式读取闪存所需的软件开销。线性模式使硬件向闪存发出命令并控制从闪存总线到AXI接口的数据流。

2025-09-07 23:21:30 1041

原创 ZYNQ PS XADC读取芯片内部温度值,电压值。

在DRP读命令的情况下,当它被移出命令FIFO时,XADC_DRP的DR寄存器的旧内容被移出。在IGAP时间之后,当前DRP读取的结果在XADC DRP的DR寄存器中可用。XADC具有两个12位每秒1兆采样(MSPS)的adc,带有独立的轨道和保持放大器,一个模拟多路复用器(多达17个外部模拟输入通道),以及片上热传感器和片上电压传感器。XADC是更大的模拟混合信号(AMS)主题的一部分,它是模拟和数字电路的组合。PS- xadc接口是PS的一部分,可以在不编程PL的情况下由PS APU访问。

2025-09-07 22:07:39 601

原创 ZYNQ SDK软件在线调试

3、双击添加断点,然后点击运行可以让程序运行到设置断点这一语句。比如我这里断点设置处的代码是让LED亮。观察开发板LED是亮的。1、然后右键项目->debug as->launch on hardware。4、可以将鼠标放在变量上观察变量的值,也可以在右上区域的变量栏观察变量。5、修改代码后可以不退出调试界面,如下图可以运行程序和程序烧录调试程序。6、退回到编写程序界面:在右上角落出点击中间这个按钮(C/C++)即可。

2025-09-07 20:43:11 408

原创 ZYNQ 定时器

每个Cortex-A9处理器都有自己的专用32位定时器和32位看门狗定时器。两个处理器共享一个全局64位定时器。这些计时器的时钟始终为CPU频率(CPU_3x2x)的1/2。在系统级,有一个24位看门狗定时器和两个16位三重定时器/计数器。系统看门狗定时器时钟在1/4或1/6的CPU频率(CPU_1x),或可以通过外部信号从MIO引脚或从PL时钟。两个三重定时器/计数器总是时钟1/4或1/6的CPU频率(CPU_1x),用于计算信号脉冲的宽度一个MIO引脚或从PL。如下是系统框图。

2025-09-07 20:01:58 480

原创 ZYNQ UART中断

五、这里就一个注意的点:#define UART_INT_IRQ_ID XPS_UART1_INT_ID。这里我用的小梅哥的板子,他的UART外设在vivade进行硬件设计的时候只能选择UART1,根据原理图所得。而正点原子的启明星zynq开发板的外设为UART0。一、另存一个zynq的hello word工程,命名为uart_inter_loop。四、打开SDK,新建一个项目,建立一个main.c的源文件后编写SDK代码。二、删掉SDK包,重新生成SDK 硬件设计编写代码。

2025-09-07 16:39:22 442

原创 ZYNQ UART中断

1、系统框图。UART控制器是一个全双工异步接收和发送器,支持宽可编程波特率和I/O信号格式的范围。控制器可以容纳自动奇偶校验生成和多主检测模式。在ZYNQ中UART操作由配置寄存器和模式寄存器控制。fifo的状态,通过状态、中断状态和调制解调器读取调制解调器信号和其他控制器功能状态寄存器。如上图是UART控制器的系统架构。可以发现UART有两个中断号。这是因为,我们PS侧有两个串口。在前面章节对PS ZYNQ IP进行配置时发现有两个串口,UART0,UART1。

2025-09-07 11:19:03 1298

原创 ZYNQ 解决拷贝程序的路径问题。

6、按照3、4、5打开system_wrapper_hw_platform_0的知识包路径然后将system_wrapper_hw_platform_1,上述复制的路径给system_wrapper_hw_platform_0即可。3、进入SDK后我们会发现如下两个板级包,一个是原工程路径的板级知识包(system_wrapper_hw_platform_0),一个现有路径下的板级知识包(system_wrapper_hw_platform_1)。2、直接打开SDK,为我们SDK的程序重新重新配置路径。

2025-09-07 00:07:13 358

原创 ZYNQ 之程序的固化

10、通过上面的步骤我们已经有了我们固化到flash的两个文件一个是镜像文件(.bin)一个是flsb里面的(.elf)文件。因为我是拷贝我的工程到其他目录下面的,改变了SDK路径,因此会导致有些地方配置没配好,进而导致烧录不成功。当然这里说明一下,如果你是纯PL端的程序就按照纯FPGA固化的方式烧录,这里因为用到了PS端和PL端的程序,因此我们介绍ZYNQ下的方式烧录。9、由于第七步,所以我们这里会自动加载生成镜像文件的路径,如果不在第七步选中我们的项目就要我们自己添加所需文件的路径。

2025-09-06 23:32:45 1509

原创 ZYNQ 自定义ip核在工程用到后需要修改自定义ip后怎么办?

8、然后发现我们的 ip锁住了,因为这是因为我们block desinge 用到了原来没改变之前的ip核。因此我们需要删掉我们的ip然后重新添加我们已经设计好的ip。因为这个参数是初始参数,因此为了和pl端呼吸灯代码保持一致,因此我们需要修改我们的我们的配置范围。7、进入我们的工程,点击block desigen ,vivade检测到已经修改ip因此我们点击两个蓝色字体刷新ip。2、点击ip->选择自定义ip仓库->点击需要修改的自定义ip->点击编辑自定义IP包。10、删除原来的ip重新添加。

2025-09-06 15:54:27 458

原创 ZYNQ 自定义IP

由于我们的要创建的工程是PS端控制PL端的呼吸灯工程,因此将PL侧的这个创建的IP定义为从机:slave。以下是需要修改的地方。21、创建block design,并添加ps 侧的ip和我们刚刚创建的PS侧的呼吸灯的ip。按照以前的修改zynq ip的配置。20、添加我们自定义的ip核进入工程,设置->IP->仓库->➕->自定义ip管理目录->ip_repo->选中IP->点击ok。5、创建AXI接口的 IP,为什么不选上面的三个呢,因为上面的几个是对我们已有的ip进行操作,而最下面是创建IP选项。

2025-09-06 15:25:44 1271 1

原创 FPGA AXI_GPIO控制LED

4、添加串口IO,设置波特率,设置DDR型号,这次的信号需要全部用到,因此不需要删除,并且,我们根据系统框图发现我们用了AQXI传输的中断系统,因此添加中断选项。因为要用到PS端的LED,因此要选上GPIO_MIO,至于为什么是GPIO_MIO,可以去看看系统框图。6、修改AXI_GPIO IP配置,这里主要有两个注意点,第一个是奖这里的GPIO WIDHT 改为1,因为我们只用到了一个PL端的按键,因此,只要使用一个通道的的一个位。PL端按键生成的中断后通过AXI接口发送到PS改变LED的状态。

2025-09-04 18:05:03 1540

原创 FPGA GPIO之MIO中断

INT_POLAIRTY控制的是进一步选择中断类型由上表可知假如INT_TYPE是1,那么如果INT_POLAIRTY也是1的话就是上升沿中断(不考虑INT_ANY)。INT_ANY只有当INT_TYPE是1的时候才有效,INT_ANY为1时候且INT_TYPE也为1时候,寄存器INT_POLAIRTY不起任何作用。INT_START寄存器连接的是DQ触发器的CLR端口因此我们可以推断该寄存器的作用是清除2我们的中断设置。INT_MASK这个寄存器是只读的,并显示哪些位是当前被屏蔽的,哪些是被屏蔽的。

2025-09-03 16:51:11 547

原创 FPGA GPIO之EMIO控制LED

8、根据你自己板子原理图修改PS端按键的mio的宏定义,与上一讲的类似。按我的理解是EMIO只有54个,我们这里只用到了一个PL端的按键,因此,PL端的引脚就会从高到低的分配给EMIO,因此我们就可以在sdk写逻辑读取emio54引脚pl端的按键数值来控制ps端的led。11、烧录成功后就可以看效果了,可以PL端控制PS端LED。4、该引脚为PL端的因此为PL端添加引脚约束,根据22你自己板子PL端的引脚设置。9、为了实现PL端按键控制PS端的我们先要烧录PL端的bit流。10、SDK烧录PS端的程序。

2025-09-02 20:49:26 230

原创 ZYNQ GPIO之MIO控制LED闪烁

根据原理图看看自己的PS端LED是MIO多少,我这里是7,同时根据原理图判断PS端led是高有效还是低有效.图1发现PS_LED0为高有效,因此点亮设置为1,熄灭设置为0.然后图二发现PS_LED0是连接的mio7所以这里宏定义的数字为7.8、配置波特率和DDR(使用默认波特率115200,DDR根据自己的芯片手册配)一般zynq7020的DDR型号为MT41J256M16 RE-125。13、点击export hardware后默认点击ok,此时在我们的项目文件夹下面会生成一个SDK文件。

2025-09-02 17:06:36 655

原创 FPGA:基于的肤色的人脸识别

这就不多说了,自己先根据项目结构图来理解一下,知道思路后按照以下设计完成各模块编写即可。

2025-08-20 18:10:21 611

原创 fpga实现同步fifo

观察上面的波形我们发现,写指针从零开始递增,并且写到满的时候,full信号会拉高。那我们可以假设满足指针关系且写使能有效但是读使能也有效,这种情况写和读使能是同时进行的,就永远不会满,读写指针永远会相差至少一个地址位。观察代码我们发现,存储数据的数组的最大个数为FIFO_DEPTH,也就是我们定义的10。但是这个和我们用户数据定义有关,我们只需要10个数据,那么超出的数据也不会存起来,这也就达到了用户定义的最大数据存储的目标。那么指针大于15,就会出现截断的情况,指针就会回到0。那么就会从头开始写。

2025-08-07 22:38:38 1308

原创 基于fpga的双边滤波。

双边滤波是一种非线性滤波器,它既可以达到降噪平滑,同时又保持边缘的效果。和其他滤波的原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均来代表某个像素的强度,所用的加权平均也是基于高斯分布的。双边滤波的权重,不仅考虑了像素的空间距离(如高斯滤波),还考虑了像素范围的辐射差异(如像素与中心像素的相似程度,也是高斯分布的),结合空间距离与相似度,计算得到最终的权重(空间距离与相似度的高斯分布)。数学原理:对于每一个像素p,输出值b(p)是其领域像素内的加权平均。

2025-08-05 17:00:14 1097 1

原创 基于fpga的高斯滤波。

均值/中值滤波,对于滤波窗口内每个像素的权重都是一样的。但是噪声在图像当中往往比较突兀,即和原图有较大的差异,那么它必然不是平均分布的。本节先引入一个概念:正态分布,其概率分布图,如图所示,数据主要集中在中间,并向两边逐渐减少。因此我们引入正太分布函数如下:一个是一维的,一个是二维的。其中σ为高斯分布的强度,σ值越大,数据越分散;反之,数据越向中心集中分布。图像像素是平面分布的,如果灰度值在0~255范围可取,那么灰度图像就是二维分布的。2、高斯核(模板)

2025-08-05 16:01:58 361

原创 基于faga的的中值滤波

中值滤波,简单来说就是将像素矩阵的中值赋给输出图像即可。由下图可见,像素噪声可能为异常点,即与周围像素差值过大,那么如果这时候使用均值滤波,输出橡树点就会受到这个异常点的干扰。因此我们可以通过取该矩阵内的所有像素点的中值。

2025-08-05 00:25:17 396

原创 基于fpga的均值滤波

图像在传输、解码过程中容易产生噪声。因此为了有效去除叠加在图像里面的噪声,又尽可能的减少对原始数据的影响,我们引入滤波算法,当然滤波算法有很多中,这里我们首先介绍均值滤波。均值滤波顾名思义就是求均值。他的思路也比较简单,就是求矩阵内的均值,核心难点是求出3x3滑动矩阵。。

2025-08-04 23:43:10 514

原创 FPGA实现 RGB565 转YUV

RGB565 转YUV本质上就三个公式。至于为什么是这个公式,我觉得没必要深究,只要知道Y,U,V三个通道代表什么就行。

2025-07-31 22:20:01 387 1

原创 FPGA sobel边缘检测之双fifo实现滑动矩阵窗口

废话少说,直接进入今天的正题。通过fpga实现边缘检测主要包括一个顶层模块和两个内部模块。其中最重要的是3x3的滑动矩阵窗口模块。这里有两种实现方式一种是双fifo缓存,一种双ram,这里主要介绍双fifo实现滑动矩阵。还有个模块就是RGB转YUV。这个模块比较简单,只要注意时序问题就可以。顶层模块主要是计算滑动窗口矩阵的x与y方向的梯度。这里重点介绍滑动窗口的实现。

2025-07-31 21:39:28 1348 2

原创 基于bmp图像的双三次插值算法

在源文件(.cpp)写入方法实现。在bmpget类方法加入。在showBmp里面调用。

2024-10-07 19:30:38 353 2

原创 基于bmp图像的双线插值算法

实现效果:这个算法有点问题,有实力的改一下,改好的艾特我在评论区发一下源码。然后在源文件(.cpp)里面写入方法实现。下一篇:基于bmp图像的双三次插值算法。首先在bmpget类下面加入一个方法。和是篇文章类似按照步骤加入代码。在下面的方法加入调用。

2024-10-07 18:45:44 344

原创 基于bmp图像的最佳邻算法

在上一篇的文章建立的项目的基础上,我们在bmpGet类里面添加一个成员方法。关于这个算法,网上有很多资料,这里只贴和上一篇文章建立的项目对应的代码。然后在源文件(.cpp)里面加入该方法的实现。最后在Widget下的显示方法调用该方法。下一篇:基于bmp图像的双线插值算法。

2024-10-07 18:31:34 288 2

原创 如何使用QT显示bmp图片(24位)

Qt实现对bmp图片的处理

2024-09-19 22:06:40 1270 4

原创 如何用链表解决PTA(Basic Level)Practice (中文)1004题

如何用链表解决PTA(Basic Level)Practice (中文)1004题

2023-01-24 22:20:18 436 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除