- 博客(628)
- 资源 (73)
- 收藏
- 关注
原创 ZYNQ LWIP (RAW API) UDP函数学习
在使用UDP协议进行通信之前,必须创建一个UDP控制块,然后将控制块与对应的端口号进行绑定,才能发送报文,而在接收UDP报文的时候,这个端口号就是UDP报文唯一识别的标志,否则UDP报文将无法递交到应用层去处理,即无法通过UDP控制块的接收回调函数递交给应用层,新建控制块的函数很简单,就是在内存池中申请一个MEMP_UDP_PCB类型的内存块,用于存放UDP控制块的相关信息,并将其初始化为0。提示:断开会话并不会删除UDP控制块,即不会释放UDP控制块的内存。绑定控制块的作用其实就是将。
2024-09-05 16:46:12 346
原创 编码(曼彻斯特编码,4B/5B 编码,8b/10b编码)
它确保在编码后的数据流中,高电平和低电平的分布更加均匀,从而减少了在长距离传输过程中可能出现的信号衰减和直流偏移问题。在传输过程中,如果每4个数据位出现重复的组合,则通过插入特定的脉冲序列来避免连续的相同电平信号,从而减少信号在传输过程中可能出现的错误。其核心思想是将每4个二进制位(B代表位,或字节)的8种组合转换成由5位脉冲(也即,周期信号变化一次所需的时间)组成的编码。尽管如此,在特定的应用场景中,如网络布线、旧式电视和电话系统中,曼彻斯特编码仍然是一种常用的编码方式。
2024-09-04 16:08:31 643
原创 ZYNQ LWIP TCP学习
lwIP(Lightweight IP)是一个开源的、精简的TCP/IP协议栈实现,用于嵌入式系统。lwIP的设计目标是提供一种占用空间小、运行效率高的TCP/IP协议栈实现,以适应资源有限的嵌入式系统。lwIP的特点包括:精简:lwIP只包含了TCP/IP协议栈中最基本的功能,因此其代码体积小,占用资源少。灵活性:lwIP可以根据不同的应用需求进行定制,只包含必要的协议和功能模块。高效性:lwIP的代码优化良好,运行效率高,可以满足实时性要求较高的应用场景。
2024-08-31 14:29:29 344
原创 FPGA在医疗方面的应用
可编程逻辑支持以灵活、低风险的方式成功实施系统设计,同时提供了最佳的成本效率和增值的差异化功能,延长了医疗保健应用的生命周期,包括诊断成像、电子医疗、治疗和生命科学与医院设备。
2024-08-22 11:12:44 812
原创 8b10b编解码详解
8B/10B 编码是 1983 年由 IBM 公司的 Al Widmer 和 PeterFranaszek 所提出的数据传输编码标准,目前已经被广泛应用到高速串行总线,如 IEEE1394b、 SATA、 PCI-Express、 Infini-band、 FiberChannel、 XAUI、RapidIO、 USB 3.0 等协议。8B/10B 编码将待发送的 8 位数据转换成 10 位代码组,其目的是保证直流平衡,以及足够密集的电平转换。
2024-08-20 15:17:21 57
原创 Xilinx FPGA 7系列 GTX/GTH Transceivers
1概述Xilinx 7系列FPGA全系所支持的GT,GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,GT的意思是Gigabyte Transceiver,G比特收发器。不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,GTZ被用于少数V7系列,更...
2024-08-20 11:47:31 984
原创 c语言 图片.bmp读写示例
BMP(Bitmap)文件格式是一种简单的位图图像格式,其数据结构分为几个主要部分:文件头、信息头、调色板(可选)和像素数据。对于某些格式(如1位或4位色),可能会包含调色板。调色板由颜色索引组成,使用RGB格式(每个颜色占用4个字节,包含蓝、绿、红、保留字节)。BMP文件分为文件头、信息头和像素数据。根据 infoHeader.biWidth 和 infoHeader.biHeight 读取像素数据。BMP文件通常以蓝色、绿色、红色(BGR)顺序存储像素。确保检查文件类型以确认它是一个合法的BMP文件。
2024-08-13 17:07:40 425
原创 c语言音频.wav读写示例
如果和 MS 一 DOS 文件系统作比较,"RIFF"chunk 就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或 D:),而"L1ST"chunk 即为其下的子目录,其他的 chunk 则为一般的文件。RIFF 块包含两个子块,这两个子块的 ID 分别是"fmt"和"data",其中"fmt"子块由结构 PCMWAVEFORMAT 所组成,其子块的大小就是 sizeofof(PCMWAVEFORMAT),数据组成就是 PCMWAVEFORMAT 结构中的数据。读取和写入WAV文件示例。
2024-08-13 16:42:11 643
原创 STM32 SPI OLED显示
OLED(有机发光二极管)是一种新型显示技术,具有以下特点:自发光:每个像素都能独立发光,不需要背光源,使得显示器更薄、更轻。高对比度:由于能够实现真正的黑色(关闭像素),因此具备极高的对比度。广视角:从不同角度观察时,色彩和亮度变化较小。丰富的色彩表现:能够呈现更广的色域和更鲜艳的色彩。响应速度快:适合播放高速运动画面,如游戏和运动赛事。应用领域:OLED广泛应用于电视、智能手机、平板电脑、智能手表等电子设备,因其优越的显示效果而受到青睐。随着技术的发展,其成本也在逐渐下降,预计将有更广泛的
2024-08-12 15:50:55 31
原创 VIVADO ERROR:[Synth 8-439] module ‘XXX‘ not found
问题原因:Vivado 2021.2中关于HLS的操作都不兼容2022年份这个系统时间。将window的系统时间给成2021年之前,复位工程reset_pro,再次编译就好了。
2024-08-07 15:07:36 59
原创 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 250
原创 c语言学习
这段代码通常在嵌入式系统中使用,0x08100000 可能指向特定的内存区域,如 Flash 存储器或外设寄存器。这行 C 语言代码的作用是从指定的内存地址 0x08FFF814 读取一个 16 位无符号整数,并将其赋值给 ts_cal1 变量。通常 u8 是定义为 uint8_t 的别名,表示无符号的 8 位整数。通常,这种方式在嵌入式编程中很常见,用于访问硬件寄存器或其他特定的内存区域。volatile: 声明这个指针所指向的内存地址的值可能会在任何时候被外部因素改变,避免编译器进行优化。
2024-08-05 17:40:29 285
原创 QT下载问题:Download from your IP address is not allowed
Download from your IP address is not allowedhttps://download.csdn.net/download/baidu_34971492/89608794
2024-08-03 14:03:15 428
原创 QT安装 error: [QNetworkReply::NetworkError(
【代码】QT安装 error: [QNetworkReply::NetworkError(
2024-08-02 17:57:16 163
原创 FPGA MIPI DSI LCD彩条显示
MIPI(Mobile Industry Processor Interface)是一种针对移动设备和嵌入式系统的接口标准,由MIPI联盟制定。其主要目的是提高移动设备之间的通信效率,降低功耗,并支持高速数据传输。MIPI的主要标准包括:MIPI DSI (Display Serial Interface):用于连接显示模块,支持高清视频传输和高刷新率。MIPI CSI (Camera Serial Interface):用于连接摄像头模块,传输图像和视频数据。
2024-08-02 16:35:09 368
原创 c语言学习 volatile __attribute__ const goto
这很重要在涉及DMA(直接内存访问)操作时,一些系统需要数据的特定对齐以进行高效的访问或者满足特定的硬件需求。综上所述,这段代码定义了一个名为 DmaTxBuffer 的数组,该数组用于存储数据包的字节数据(假设是DMA传输相关的缓冲区),其大小由 MAX_PKT_LEN 定义,并且要求内存地址按照64字节对齐。在C语言中,volatile是一个类型修饰符,用于告诉编译器某个变量的值可能会被外部因素改变,从而避免编译器对该变量进行优化。适用于需要确保变量的最新状态被获取的场景,防止优化导致的数据不一致。
2024-07-30 09:53:28 412
原创 ZYNQ SDK/Vitis undefined reference to `sin‘ wave.c
在Settings 选项的Libraries 添加 m,点击OK。右键点开C/C++ Build Settings 选项。
2024-07-29 18:11:56 99
原创 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 179
原创 ZYNQ AMP双核实验
本章实验所实现的功能是两个核心各自运行独立的裸机应用程序,因此 XAPP1079 文档是非常值得一看的,里面详细的介绍了ZYNQ芯片中两个CPU的启动顺序和方式、裸机SDK环境中的配置等。同构多核处理器是指系统中的处理器在结构上是相同的;Xilinx 的 ZYNQ SOC融合了这两种架构,ZYNQ SOC芯片包含两个独立的Cortex-A9处理器,这两个处理器核在结构上是相同的,同时又包括了可编程的逻辑单元(PL),使得ZYNQ整体系统成为了一个异构多核系统,同时具有较高的通用性和性能。
2024-07-26 17:26:02 139
原创 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 90
原创 vivado SDK中如何计算一段程序执行时间?
说明#include "xtime_l.h" //引用的头文件XTime tend,tcur;u32 tused;XTime_GetTime(&tcur);XTime_GetTime(&tend);tused=((tend-tcur)*1000000)/(COUNTS_PER_SECOND);printf("Time is %d us\r\n",tused);COUNT...
2024-07-12 09:46:17 236
原创 【VIVADO SDK调试遇到DataAbortHandler】
解决:对application中src下的lscript.ld双击,对stack and heap sizes进行修改,改成较大尺寸。运行后不显示结果,debug模式下发现进入DataAbortHandler异常函数。原因:SDK默认的堆栈为1024bytes,需要将堆栈调大。SDK调试遇到DataAbortHandler问题。
2024-07-11 17:36:22 134
转载 FPGA DDR4读写实验(2)--MIG IP配置
在搜索栏中输入 MIG,此时出现 MIG IP 核,找到 DDR4 SDRAM(MIG)。上图所示的是 MIG IP 核的 Basic 配置界面,配置信息作出说明:Component Name:MIG IP 核的命名,可以保持默认,也可以自己取一个名字。Mode and Interface:控制器的模式和接口选项,可以选择 AXI4 接口或者普通模式,并生成对应的 PHY组件(详情请参考官方文档 ...
2024-07-09 11:30:19 155
原创 c语言动态分配内存
在 C 语言中,动态分配内存可以通过使用标准函数 malloc()、calloc()、realloc() 来实现。这些函数定义在 stdlib.h 头文件中。需要注意的是,在使用完动态分配的内存之后,需要使用 free() 函数来释放这部分内存,避免内存泄漏。
2024-07-04 17:31:27 234
原创 FPGA DDR4读写实验(1)
DDR4 SDRAM(Double-Data-Rate Fourth Generation Synchronous Dynamic Random Access Memory,简称为 DDR4 SDRAM),是一种高速动态随机存取存储器,它属于 SDRAM 家族的存储器产品,提供了相较于 DDR3 SDRAM 更高的运行性能与更低的电压,并被广泛的应用于计算机的运行缓存。1 DDR4 介绍DDR4 ...
2024-07-03 11:30:46 471
原创 linux查看二进制文件
这两个命令都会以十六进制的形式输出文件内容,并且hexdump还会显示ASCII字符的可视输出。-C选项表示canonical display,适合查看多种文件类型。在Linux中,查看二进制文件可以使用hexdump或xxd命令。
2024-06-25 18:16:50 380
原创 ZYNQ MPSOC浅说
APU 主要是由两个或者四个 ARM 处理器核组成的,Cortex-A53 核心是基于 Arm-v8A 架构的 32 位/64位应用程序处理器,拥有极佳的性能/功率比,每一个 Cortex-A53 核心拥有 32KB 指令和数据 L1 缓存,具有奇偶校验、ECC 保护、NEON SIMD 引擎、单精度和双精度浮点单元。MPSoC 系列的亮点在于它包含了完整的 ARM 处理器系统,且处理器系统中集成了内存控制器和大量的外设,使 Cortex-A53 处理器可以完全独立于可编程逻辑单元。
2024-06-25 16:39:39 1404
原创 makefile文件编写(C)
这个Makefile定义了如何编译和链接你的程序。CC变量指定了编译器(这里是gcc),CFLAGS变量包含了编译器的标志,比如警告选项和调试信息,LDFLAGS变量用于链接时的选项。运行Makefile:在命令行中运行make命令,Makefile会根据其规则自动编译和链接你的程序。
2024-06-24 17:49:24 291
原创 Huffman算法压缩解压缩(C)
Huffman压缩算法是一种基于字符出现频率的编码算法,通过构建Huffman树,将出现频率高的字符用短编码表示,出现频率低的字符用长编码表示,从而实现对数据的压缩。以下是Huffman压缩算法的详细流程:统计字符频率:遍历待压缩的数据,统计每个字符出现的频率。构建优先队列:将每个字符及其频率作为一个结点放入优先队列(或最小堆)中,根据字符频率构建一个按频率大小排序的优先队列。
2024-06-21 10:35:28 1231
原创 压缩算法简介
压缩算法是一种通过减少数据量来节省存储空间或传输数据的技术。压缩算法可以分为两种类型:有损压缩和无损压缩。有损压缩算法会牺牲一定的数据精度或质量,在压缩数据的同时丢失一些信息。这种算法适用于音频、视频等多媒体数据,例如JPEG和MP3等格式。无损压缩算法则能够完全还原原始数据,不会造成数据丢失。这种算法适用于需要准确还原数据的场景,如文档、代码等,例如ZIP和GZIP等格式。常见的压缩算法包括哈夫曼编码、Lempel-Ziv算法、Run-Length Encoding(RLE)等。
2024-06-21 10:02:14 926
转载 verilog求倒数-ROM实现方法
来源:网络素材采用线性逼近法结合32段线性查找表的方式来实现1/z的计算。首先将1/32-1/64的定点化数据存放到ROM中,ROM中存放的是扩大了2^20 次方的数字四舍五入后的整数部分。n值越大,精度越大,误差越小。这里取n=20;ROM中存储的数据是1/(32+i)*2^20的四舍五入的整数部分。32-64间的数据可以通过查表来实现,其他的数据则采用的是线性逼近的方法。线性逼近的步骤为:1....
2024-06-20 19:17:57 57
原创 ZYNQ 学习定时器中断
定时器作为 PS 的重要组成部分,可以不受 CPU 的干预,自己独立运行,来完成计时、定时、中断以及计算来自 MIO 或 EMIO 引脚的信号脉冲宽度等。在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(Global Timer)。
2024-06-18 11:02:53 79
原创 Huffman算法:原理、实现与应用
2 生成Huffman编码:Huffman树的每个节点都代表一个字符,从根节点到某个叶子节点的路径表示该字符的Huffman编码。Huffman算法是一种非常有效的数据压缩算法,它的核心思想是利用字符在源数据中的出现频率来构建一棵Huffman树,从而实现对字符的重新编码。编码过程中,频率越高的字符将获得越短的编码,而频率越低的字符将获得越长的编码。这样,通过替换原始数据中的字符为其新的编码,可以实现对数据的压缩。c. 取出堆中最轻的两个节点,将它们合并为一个新的节点,新节点的权重为这两个节点权重的和;
2024-06-17 16:34:51 488
原创 Vitis开发Linux应用
这里使用的“system_wrapper.xsa”文件,“Operating system”选择“linux”,然后取消勾选“Generate boot components”,。“Platform project name”栏输入平台工程名“Dev_xc7z020”,其他保持默认,然后单击。进入应用工程模板选择页面,选择“Linux Hello World”,然后点击“Finish”,如下图。编译完平台工程后,平台工程的搭建就完成了。底部的“Next >”,进入下一页面,如下图所示。
2024-06-14 11:46:00 520
原创 Petalinux由于网络原因产生的编译错误(4)--ERROR: device-tree-xilinx-v2020.2+gitAUTOINC+f725aaecff-r0 do_compile:
主要是设备树编写语法错误:检查设备树文件:修改后错误消失。
2024-06-13 15:02:42 453
原创 Petalinux由于网络原因产生的编译错误(4)--WARNING: The free space of /home/ht123/arty/ZYNQLED/build/tmp (/dev/sda1)
dev/sda1空间占满。
2024-06-13 14:40:02 213
原创 Petalinux由于网络原因产生的编译错误(3)-qemu-xilinx-system-native 失败
进入Petalinux 工程,编辑工程下的 project-spec/meta-user/conf/petalinuxbsp.conf 文件,在。文件中file:///mnt/hgfs/share18/downloads/downloads 要 pre-mirror url 的路径相。读者在添加时,需要将其替换成自己的包文件路径。重新编译就不会出现qemu相关的报错。
2024-06-13 11:43:29 303
QT 下载:Download from your IP address is not allowed
2024-08-02
ZYNQ PS裸机开发RS485
2024-07-26
ZYNQ EMIO接口 SPI-OLED
2024-07-26
ZYNQ 学习定时器中断
2024-07-26
ZYNQ EMIF进行PS与PL间的数据交互
2024-07-19
ZYNQ AXI4 FDMA内存读写
2024-07-19
ZYNQ FPGA实现电子相册
2024-06-01
ZYNQ PL PS中断 共享中断
2024-05-30
ZYNQ I2C 通信例程-EEPROM
2024-05-24
Zynq-7000 PL端HDMI的显示控制
2024-05-24
ZYNQ ARM IIC EMIO读写ADXL345三轴陀螺仪
2024-05-23
ZYNQ BRAM实现PS与PL数据交互
2024-04-23
ZYNQ-PL读写PS端DDR数据
2024-04-23
基于FPGA的打地鼠实验
2024-01-09
FPGA 篮球计分器设计
2023-12-30
基于FPGA 的cordic算法实现sin和cosine波形发生器
2023-07-03
基于FPGA的cordic算法实现DDS-sincos
2023-07-03
基于FPGA驱动液晶显示器12864单色图片显示设计验证
2023-06-02
基于FPGA的64位8级流水线加法器
2023-03-05
smic.18工艺的memory compiler
2022-12-15
基于FPGA的DS1302设计 quartus II
2022-12-01
基于FPGA实现坦克大战游戏 basy3
2022-07-04
基于FPGA的信号发生器
2022-06-27
FPGA 正弦波进行2ask,2fsk,2psk,2dpsk调制
2022-06-24
基于FPGA的数字秒表设计
2022-06-23
基于FPGA的fir数字滤波器。
2022-06-23
基于FPGA的实现一款简易电子密码锁
2022-06-22
基于FPGA的任意四位除法器
2022-06-22
基于FPGA的任意波形发生器
2022-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人