LEEE@FPGA
这个作者很懒,什么都没留下…
展开
-
ZYNQ LWIP 协议栈初始化
想要使用LwIP,那就必须先将协议栈初始化,我们就创建一个函数,在函数中初始化协议栈,注册网卡,设置主机的IP地址、子网掩码、网关地址等,比如作者个人电脑的IP地址是192.168.1.10,那么我们在开发板上设置的IP地址必须是与路由器处于同一子网的,我就设置为192.168.1.88,因为这个地址必须是路由器承认的合法地址,否则路由器不会对这个IP地址的数据包进行转发,网关就写对应的网关(路由器IP地址)192.168.1.1即可,255.255.255.0为整个局域网的子网掩码。原创 2024-09-26 11:29:29 · 95 阅读 · 0 评论 -
xilinx 优秀的xdc参考
【代码】xilinx 优秀的xdc参考。原创 2024-09-21 10:34:04 · 169 阅读 · 0 评论 -
ZYNQ LWIP(RAW API) TCP函数学习
当服务器收到客户端发来的请求连接报文后,内核会遍历TCP监听链表tcp_listen_pcbs,找到和报文中一致的IP地址、目标端口号的控制块,然后内核将新建一个完整的TCP控制块,将监听TCP控制块tcp_pcb_listen的字段内容拷贝到完整的TCP控制块中,然后填写远端IP地址与端口号等字段,最后再将这个完整的TCP控制块挂载到tcp_active_pcbs链表中,当然,监听TCP控制块tcp_pcb_listen并不会被删除,因为它还需等待其他客户端的连接,这正是服务器必须要实现的功能。原创 2024-09-14 09:28:36 · 436 阅读 · 0 评论 -
ZYNQ TCP 协议的远程更新 QSPI Flash
远程更新 QSPI 就是将 BOOT.bin 文件通过网络协议如常用的 TCP、 UDP 协议传给远端联网的文件接收端。接收端将文件暂存在 DDR3 中,当文件传输完成后,接收端接收到更新命令后将调用相关函数将文件数据写入到 QSPI 中,写入完成后为了防止写入出错,需要将写入到 QSPI 中的数据读出以进行校验。校验成功后就可以重新以 QSPI 启动的方式启动,完成远程更新。更新方式比较。原创 2024-09-12 15:42:55 · 528 阅读 · 0 评论 -
ZYNQ LWIP (RAW API) UDP函数学习
在使用UDP协议进行通信之前,必须创建一个UDP控制块,然后将控制块与对应的端口号进行绑定,才能发送报文,而在接收UDP报文的时候,这个端口号就是UDP报文唯一识别的标志,否则UDP报文将无法递交到应用层去处理,即无法通过UDP控制块的接收回调函数递交给应用层,新建控制块的函数很简单,就是在内存池中申请一个MEMP_UDP_PCB类型的内存块,用于存放UDP控制块的相关信息,并将其初始化为0。提示:断开会话并不会删除UDP控制块,即不会释放UDP控制块的内存。绑定控制块的作用其实就是将。原创 2024-09-05 16:46:12 · 442 阅读 · 0 评论 -
ZYNQ LWIP TCP学习
lwIP(Lightweight IP)是一个开源的、精简的TCP/IP协议栈实现,用于嵌入式系统。lwIP的设计目标是提供一种占用空间小、运行效率高的TCP/IP协议栈实现,以适应资源有限的嵌入式系统。lwIP的特点包括:精简:lwIP只包含了TCP/IP协议栈中最基本的功能,因此其代码体积小,占用资源少。灵活性:lwIP可以根据不同的应用需求进行定制,只包含必要的协议和功能模块。高效性:lwIP的代码优化良好,运行效率高,可以满足实时性要求较高的应用场景。原创 2024-08-31 14:29:29 · 387 阅读 · 0 评论 -
VIVADO ERROR:[Synth 8-439] module ‘XXX‘ not found
问题原因:Vivado 2021.2中关于HLS的操作都不兼容2022年份这个系统时间。将window的系统时间给成2021年之前,复位工程reset_pro,再次编译就好了。原创 2024-08-07 15:07:36 · 312 阅读 · 0 评论 -
ZYNQ VDMA IP学习
AXI VDMA 是 Xilinx 提供的软核 IP,用于将 AXI Stream 格式的数据流转换为 Memory Map 格式或将 MemoryMap 格式的数据转换为 AXI Stream 数据流,从而实现与 DDR 进行通信。许多视频类应用都需要帧缓存来处理帧率变化或者进行图像的缩放、裁剪等尺寸变换操作。AXI VDMA 设计的初衷就是用于高效地实现 AXI4-Stream 视频流接口和 AXI4 接口之间的数据传输。原创 2024-08-07 13:52:32 · 311 阅读 · 0 评论 -
ZYNQ SDK/Vitis undefined reference to `sin‘ wave.c
在Settings 选项的Libraries 添加 m,点击OK。右键点开C/C++ Build Settings 选项。原创 2024-07-29 18:11:56 · 151 阅读 · 0 评论 -
ZYNQ 自定义IP端口映射
在做自定义IP时,对于总线接口,我们可以将其信号封装成接口,避免信号一个个地连接。在本实验中,需要封装axis slave接口,在Ports and Interfaces界面中,选择需要封装的信号,右键选择Add Bus Interface。4. 在Port Mapping 界面进行映射,左边为总线信号名称,右边为代码中的信号名称,选中点。3. 在Name中输入名称,Mode中选择模式,本实验中选择slave。击Map Ports 映射,并将剩余的信号一一映射,最后点击OK。原创 2024-07-29 17:14:59 · 238 阅读 · 0 评论 -
ZYNQ AMP双核实验
本章实验所实现的功能是两个核心各自运行独立的裸机应用程序,因此 XAPP1079 文档是非常值得一看的,里面详细的介绍了ZYNQ芯片中两个CPU的启动顺序和方式、裸机SDK环境中的配置等。同构多核处理器是指系统中的处理器在结构上是相同的;Xilinx 的 ZYNQ SOC融合了这两种架构,ZYNQ SOC芯片包含两个独立的Cortex-A9处理器,这两个处理器核在结构上是相同的,同时又包括了可编程的逻辑单元(PL),使得ZYNQ整体系统成为了一个异构多核系统,同时具有较高的通用性和性能。原创 2024-07-26 17:26:02 · 196 阅读 · 0 评论 -
ZYNQ Vitis--No such file or directory
问题:Description Resource Path Location Typefatal error: pl_bram_rd.h: No such file or directory main.c /pl_ps_bram/src line 5 C/C++ Problem。原创 2024-07-26 14:33:06 · 183 阅读 · 0 评论 -
【VIVADO SDK调试遇到DataAbortHandler】
解决:对application中src下的lscript.ld双击,对stack and heap sizes进行修改,改成较大尺寸。运行后不显示结果,debug模式下发现进入DataAbortHandler异常函数。原因:SDK默认的堆栈为1024bytes,需要将堆栈调大。SDK调试遇到DataAbortHandler问题。原创 2024-07-11 17:36:22 · 232 阅读 · 0 评论 -
【vivado SDK中如何计算一段程序执行时间?】
【代码】【vivado SDK中如何计算一段程序执行时间?原创 2024-07-11 17:24:33 · 245 阅读 · 0 评论 -
ZYNQ 学习定时器中断
定时器作为 PS 的重要组成部分,可以不受 CPU 的干预,自己独立运行,来完成计时、定时、中断以及计算来自 MIO 或 EMIO 引脚的信号脉冲宽度等。在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(Global Timer)。原创 2024-06-18 11:02:53 · 149 阅读 · 0 评论 -
ZYNQ EMIF进行PS与PL间的数据交互
AXI-EMC IP 是一个可以可以支持各种内存型号的控制器,利用这个IP可以非常方便地模拟各种类型的内存或者FLASH接口实现数据的交互和通信。以下是AXI-EMC IP的功能特性:1、支持AXI4 Slave Memory Map 接口,数据宽度为32位和64位2、支持写入/读取寄存器的可选AXI4-Lite Slave数据宽度为32位3、支持AXI4增量和包传输4、支持AXI4窄带和非对齐传输5、最多支持四个外部存储器组6、支持具有可配置字节奇偶校验和流水线级的同步SRAM。原创 2024-05-29 11:09:15 · 298 阅读 · 0 评论 -
ZYNQ AXI4 FDMA内存读写
如果用过ZYNQ的都知道,要直接操作PS的DDR 通常是DMA 或者VDMA,然而用过XILINX 的DMA IP和 VDMA IP,总有一种遗憾,那就是不够灵活,还需要对寄存器配置,真是麻烦。对于我们搞 FPGA的人来说,最喜欢直接了当,直接用FPGA代码搞定。现在XILINX 的总线接口是AXI4总线,那么熟练自定义AXI4 IP挂到总线上就非常方便了。基于这个目的,定义了一个基于AXI4 FULL MASTER的IP,暂且取名为FDMA。ZYNQ 配置测试代码:3下板测试原创 2024-05-28 11:30:46 · 271 阅读 · 0 评论 -
ZYNQ EMIO接口 SPI_OLED
SSD1306 是一块内置CMOS OLED/PLED 驱动控制器的IC芯片,芯片可以驱动共阴型OLED 面板。芯片内部包含晶振、显示RAM、对比度控制模块以及256级亮度控制模块,大大降低了外围元器件数量和功耗。MCU可以通过6800/8000并行接口,I2C接口或者SPI 接口实现对SSD1306的控制。板载OLED接口为4线串行(SPI)方式,工作在模式下,需要注意的地方有以下几点: - - - - 使用的信号有以下几个:CS,RES,DC,SCLK,SDIN,各信号作用请参照上一小节,此处不再重复。原创 2024-05-23 13:59:31 · 298 阅读 · 0 评论 -
ZYNQ PS裸机开发RS485
RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。原创 2024-05-22 10:17:56 · 149 阅读 · 0 评论 -
ZYNQ ARM IIC EMIO读写ADXL345三轴陀螺仪
ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。原创 2024-05-21 15:35:53 · 327 阅读 · 0 评论 -
ZYNQ I2C 通信例程--EEPROM
在微机的发展初期,BIOS都存放在ROM(Read Only Memory,只读存储器)中。E2PROM 背景知识:ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有舍弃不用,重新订做一份。ROM是在生产线上生产的,由于成本高,一般只用在大批量应用的场合。EEPROM 是一种用于计算机系统的非易失性存储器,也常在嵌入式领域中作为数据的存储设备,在物。原创 2024-05-21 09:56:13 · 208 阅读 · 0 评论 -
ZYNQ DMA环通测试
DMA(Direct Memory Access,直接内存存取),是指外部设备不通过CPU直接与系统内存交换数据的接口技术。要将外设数据读入内存或将内存传送到外设,一般都要通过CPU控制完成,如采用查询或中断方式。如前面讲到的BRAM实验。虽然中断方式可以提高CPU的利用率,但是也会有效率问题,对于批量传送数据的情况,采用DMA方式,可解决效率与速度问题,CPU只需要提供地址和长度给DMA,DMA即可接管总线,访问内存,等DMA完成工作后,告知CPU,交出总线控制权。原创 2024-04-24 11:18:01 · 774 阅读 · 0 评论 -
ZYNQ BRAM实现PS与PL数据交互
有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller 的寄存器,不通过它读写数据。原创 2024-04-23 11:41:08 · 1075 阅读 · 0 评论 -
ZYNQ--PL读写PS端DDR数据
PoE技术的工作原理是在供电设备和接收设备之间进行电力传输的协商,以确保安全可靠的供电。同时,PoE技术还具有一定的电力保护功能,可以在电力超载或短路时自动停止供电,保护设备的安全。PoE供电系统的主要供电特性参数包括电压(典型值为48V)、允许最大电流(550mA)、典型工作电流(10到350mA),以及为供电设备提供的功率等级(最大不超过13W)。PoE供电(Power over Ethernet)是一种技术,它允许通过现有的以太网电缆为设备提供电力,同时该电缆也用于数据的传输。原创 2024-04-23 10:30:10 · 2589 阅读 · 0 评论 -
ZYNQ PS端UART数据收发
以下是UART模块的结构图,TxFIFO和RxFIFO都为64字节。下图为UART的四种模式* @{* @{0x00U* @{0x01U* @{0x02U* @{0x03U* @{可以用remote loopback mode 测试物理电路是否正常,使用API函数XUartPs_SetOperMode012/*int Status;if(Status!原创 2024-03-25 10:59:50 · 598 阅读 · 0 评论 -
ZYNQ 自定义AXI接口 IP(PWM)
【代码】ZYNQ 自定义AXI接口 IP(PWM)原创 2024-03-22 14:29:47 · 410 阅读 · 0 评论 -
ZYNQ AXI GPIO
一个AXI GPIO 模块有两个GPIO,分别是GPIO和GPIO2,也就是channel1和channel2,为双向IO。AXI GPIO的寄存器也不多,主要是两个channel的数据寄存器GPIO_DATA和GPIO2_DATA,两个channel的方向控制GPIO_TRI和GPIO2_TRI,以及全局中断使能寄存器GIER,IP的中断使能IP IER和中断状态寄存器ISR,具体的功能可以看AXI GPIO 的文档 pg144。AXI_GPIO 直接操作寄存器输出。原创 2024-03-20 16:48:45 · 366 阅读 · 0 评论 -
ZYNQ学习(01) EMIO MIO
先来了解GPIO的BANK分布,在UG585文档GPIO一章中可以看到GPIO是有4个BANK,注意与MIO的BANK区分。BANK0 控制32个信号,BANK1控制22个信号,总共是MIO的54个引脚,也就是诸如SPI,I2C,USB,SD 等 PS 端外设接口;BANK2和BANK3共能控制64个PL端引脚,注意每一组都有三个信号,输入EMIOGPIOI,输出EMIOGPIOO,输出使能EMIOGPIOTN,类似于三态门,共192个信号。可以连接到PL端引脚,通过PS控制信号。原创 2024-03-19 16:18:11 · 521 阅读 · 0 评论 -
ZYNQ PL 中断请求
个快速中断(PPI),即 IRQF2P[19:16];16 个共享中断(SPI),即 IRQF2P[7:0]、IRQF2P[15:8]。查询下面表格,可以看到 PL 到 PS 部分一共有 20 个中断可以使用。可以看到部分 PL 到 PS 部分的中断,经过中断控制分配器(ICD),共享中断就是 PL 的中断可以发送给 PS 处理。上图中,黄色区域是 16 个 PL 的中断,它们可。ZYNQ 共有两个 CPU,每个 CPU 具备各自的 16 个软件中断。这 16 个中断可以任意定义。原创 2023-11-27 11:45:20 · 986 阅读 · 0 评论