- 博客(724)
- 资源 (73)
- 收藏
- 关注
原创 一文搞懂工业通讯:RS232/485/422、RJ45与Modbus协议全解析
选型要点:反向工作电压VRWM ≥ 1.1 × 系统最大电压,钳位电压VC < 收发器最大耐受电压(通常<15V),结电容Cj < 30pF,避免信号畸变;本文将为你剥丝抽茧,将硬核的通讯接口参数和协议原理转化为结构清晰的技术科普,带你彻底搞懂 RS232、RS485、RS422、RJ45 以及 Modbus 协议。Modbus 是一种应用层协议,采用主从架构(Master-Slave),是工业领域的事实标准。基于TCP/IP协议,传输速率10/100/1000Mbps,通信距离。
2026-05-13 11:32:48
321
原创 希尔伯特变换:给信号做个“全身体检”的数学黑科技
从宏大的基站天线到微小的芯片,从轰鸣的工业厂房到静谧的医院诊室,希尔伯特变换以一种“润物细无声”的方式,支撑起了现代信息社会的半壁江山。通过希尔伯特变换构造解析信号,我们可以轻松提取出音频信号的瞬时幅度包络,这个包络信息反映了声音能量的起伏变化,被广泛用于自动增益控制和动态范围压缩,让轻柔的音符更清晰,爆炸声也不会过于刺耳,优化整体听感。从HIFI耳机的音质优化,到手机语音助手的语音增强,再到现场演出的啸叫抑制,希尔伯特变换以其数学之美,让我们听到的声音更加清晰动听。
2026-04-13 09:03:58
533
原创 一文读懂:控制界的万能公式——PID算法到底是什么?
当你能够在一遍遍的调试与观察中,让示波器上的波形从剧烈振荡变为一条平滑完美的直线时,你便真正掌握了这门控制艺术的精髓。:PID算法的数学公式极为简洁,占用单片机或PLC的计算资源极小。则是:你一直盯着水位计(传感器获取实际值),在脑海中计算当前水位与1米目标的差距(计算误差),然后根据这个差距不断调整水龙头的开关大小(输出控制量),直到水位精准停在1米。:经过近百年的工业实践验证,PID算法在面对外界干扰和系统内部参数漂移时,展现出了极强的抗干扰能力(鲁棒性),在多数场景下都能实现安全、可靠的控制。
2026-03-31 11:22:16
99
原创 希尔伯特变换
对于信号 x(t),它的希尔伯特变换记作:x^(t)=H{x(t)}=π1∫−∞∞t−τx(τ)dτ。希尔伯特变换最大的作用是:把实信号变成 “复解析信号”,从而轻松提取瞬时幅度、瞬时相位、瞬时频率。这是专业变声软件(如变声器、Audition)里高质量变声的核心算法。解析信号求导就能得到瞬时频率:f(t)=2π1dtdϕ(t)。z(t):只含正频率,能直接求瞬时频率/相位,用来做自然变声。简单说:希尔伯特变换 = 信号与 1/(πt) 做卷积。h[n]={πn20n 为奇数n 为偶数。
2026-03-24 15:00:38
124
原创 硬核干货 | Xilinx FPGA 时钟之心:MMCME2_ADV 全面详解
在 FPGA 的浩瀚宇宙中,时钟系统不仅是驱动逻辑运转的“心脏”,更是决定系统稳定性与性能上限的“指挥棒”。MMCME2_ADV(Mixed-Mode Clock Manager Advanced)是 Xilinx 7 系列 FPGA(Artix-7, Kintex-7, Virtex-7)中最高级的硬核时钟资源。(DADDR, DCLK, DEN, DWE, DI, DO, DRDY) 通过类似总线读写的方式,在线修改倍频/分频系数,实现“变频”功能。简而言之,它是 FPGA 时钟树设计的核心模块。
2026-03-16 11:30:59
470
原创 STM32驱动LCD1602A
本文介绍了LCD1602A液晶显示模块的硬件接口定义和STM32驱动程序实现。内容包含:1)引脚功能定义,详细说明了RS、RW、E及各数据线D0-D7对应的GPIO端口和引脚配置;2)时序图展示,提供了读写操作的关键时序要求;3)信号真值表,明确了不同控制信号组合对应的操作模式;4)完整的STM32驱动源码,通过宏定义实现了对LCD1602A各控制线的操作函数,包括初始化GPIO时钟和设置高低电平的函数封装。该驱动代码为基于HAL库的LCD1602A模块控制提供了完整实现方案。
2026-03-10 17:31:27
119
原创 Xilinx FPGA 输入延迟原语:IDELAYE2 与 IDELAYE3 详解
本文将深度剖析 Xilinx 7 系列(IDELAYE2)与 UltraScale 系列(IDELAYE3)的底层原理,带你彻底攻克输入延迟校准难题。它采用“抽头(Tap)”式结构,共有 32 个 Tap,每个 Tap 平均延时约 78ps(受参考时钟影响),总延时范围 0 ~ 2.5ns。IDELAY 的作用,就是位于 FPGA IO Pad(焊盘)与内部逻辑之间,通过精确控制延时链(Delay Line),在亚纳秒级别“微调”输入信号的到达时间。在 DDR 等应用中,必须与 ISERDES 级联使用。
2026-03-02 10:05:45
519
原创 DAC的axi4-dma接口设计(AD9767)
在 AN9767 模块设计中, AD9767 芯片是工作在双端口模式,双通道的 DA 数字输入接口是独立分开的。AD9767 芯片的数字接口可以通过芯片的模式管脚(MODE)来配置成双端口模式(Dual)或。 输出接口: 2 路 BNC 模拟输出接口(用 BNC 线可以直接连接到示波器); 工作温度: -40°~85°模块使用芯片均满足工业级温度范围。 模块 PCB 层数: 4 层,独立的电源层和 GND 层; DA 转换芯片: AD9767; 输出电压范围: -5V~+5V;
2026-02-27 09:55:04
181
原创 低速ADC的axi4-dma接口设计(AD7606)
AD7606是一款集成式8 通道同步采样数据采集系统,片内集成输入放大器、过压保护电路、二阶模拟抗混叠滤波器、模拟多路复用器、 16 位 200 kSPS SAR ADC 和一个数字滤波器, 2.5 V 基准电压源、基准电压缓冲以及高速串行和并行接口。AD7606 采用+5V 单电源供电, 可以处理±10V 和±5V 真双极性输入信号, 同时所有通道均以高达 200KSPS 的吞吐速率采样。它采用单电源工作方式,具有片内滤波和高输入阻抗, 因此无需驱动运算放大器和外部双极性电源。
2026-02-27 09:47:19
327
原创 低速ADC的axi4-dma接口设计(AD9280)
AD9280 是亚德诺(ADI)推出的一款8 位、32 MSPS、单电源、低功耗流水线型模数转换器(ADC),集成采样保持与基准源,适合高速数据采集、通信与成像系统。电源:单电源 +2.7 V~+5.5 V,3 V 供电时功耗约 95 mW。最高采样率:32 MSPS(另有 80/100 MSPS 版本)输入:单端 / 差分可选;架构:多级差分流水线(Pipeline),保证全温无失码。温度范围:工业级 -40°C~+85°C。基准:片内可编程基准,也可外接基准。休眠模式:功耗降至 <5 mW。
2026-02-26 14:32:08
188
原创 低速DAC的axi4-dma接口设计(AD9708)
AD9708 是 8 位, 125MSPS 的 DA 转换芯片,内置 1.2V 参考电压,差分电流输出。芯片内部结构图如下图所示。
2026-02-11 11:19:37
237
原创 详细解释xilinx源语的使用:MMCME2_ADV
属性类型允许值默认值描述BANDWIDTH字符串指定MMCM编程算法,影响MMCM的抖动、相位裕量和其他特性。3位有效数字浮点数2.000 到 64.0005.000若需要不同频率,指定对全部CLKOUT时钟输出的乘法因子。该数值结合相关的CLKOUT#_DIVIDE值和DIVCLK_DIVIDE值确定输出频率。3位有效数字浮点数-360.000 到 360.0000.000指定时钟反馈输出的相位偏移(度)。偏移反馈时钟会导致MMCM所有输出时钟产生负相位偏移。
2026-02-11 10:35:58
1021
原创 HDMI dvi_decoder详细解析
像素时钟 (pixelclk):视频像素速率时钟(如74.25MHz、148.5MHz等)Bitslip后需要3个clk_div_in周期稳定(kBitslipDelay=3)串行时钟 (serialclk):像素时钟的5倍频(用于串并转换)总延迟范围:0-30 × 78.125ps ≈ 0-2.34ns。参考学习:详细解释xilinx源语的使用:IDELAYCTRL。串并转换:将1位高速串行数据转换为10位并行数据。每个IDELAYE2:31个tap(0-30)需要保持至少1个clk_div_in周期。
2026-02-09 10:08:41
848
原创 fpga lvds接口显示屏驱动
该Verilog模块实现LCD到LVDS的数据格式转换。模块接收350MHz和50MHz时钟信号,将输入的24位RGB数据(lcd_red/green/blue)和使能信号(lcd_de)转换为4对LVDS差分信号输出。通过lvds_tx模块将重组后的28位数据(包含RGB数据和使能信号)串行化,再通过OBUFDS缓冲器转换为差分信号输出。转换过程将RGB数据按特定位序分配到4个LVDS通道,最高位通过lvds_ind3传输。该设计支持低速(50MHz)和高速(350MHz)时钟域,实现了LCD显示数据到L
2026-02-06 10:52:43
69
原创 xilinx源语OSERDESE2 的应用HDMI接口rgb2dvi
DVI 数字视频接口发送器(Transmitter) 的 FPGA 实现代码架构。
2026-02-05 14:36:46
162
原创 详细解释xilinx源语的使用:IDELAYE2和IDELAYE3
/ 完整的数据位对齐模块input wire dqs, // 数据选通input wire [7:0] dq_in, // 8位数据输入output wire [63:0] data_out // 并行数据输出// 延迟控制信号// 每个数据位都需要独立的IDELAYgenvar i;i < 8;// IDELAYE2实例.IDELAY_VALUE (10), // 初始值。
2026-02-02 14:31:27
287
原创 详细解释xilinx源语的使用:IDELAYCTRL
IDELAYCTRL 是 Xilinx FPGA(特别是支持高速 I/O 的系列,如 Virtex-5/6/7、Kintex-7、Artix-7、Spartan-6/7 等)中用于管理和校准输入延迟模块(IDELAYE2/IDELAYE3)的必须存在的参考时钟控制模块。
2026-01-31 14:39:21
155
原创 zynq 是不是有了设备树,再linux中不需要编写驱动也能控制
dts// 设备树配置// 需要对应的驱动❌ 这种情况:必须编写驱动实现 mycompany,mydevice 的匹配和处理。哪些设备可以"无驱动"使用?内核已有通用驱动的设备:设备类型 兼容字符串 用户空间接口GPIO 按键 "gpio-keys" /dev/input/eventXRTC时钟 "ds1307" /dev/rtc0看门狗 "wdog" /dev/watchdog温度传感器 "lm75" /sys/class/hwmon/用户空间直接访问的设备:bash。
2026-01-27 13:52:48
682
原创 ZYNQ linux驱动 (1)
本文介绍了Linux驱动程序的分类与实现原理。主要内容包括:1) Linux驱动程序分为字符设备、块设备和网络设备三类,分别具有不同的访问特点和典型设备;2) 详细阐述了每类设备的特点、典型实例及对应的内核API接口结构;3) 通过一个字符设备驱动示例代码,展示了驱动程序的注册、操作函数实现和模块加载/卸载过程。该示例实现了基本的打开、读写和关闭操作,演示了内核与用户空间数据交换的典型方法。文章为理解Linux设备驱动开发提供了基础框架和实践参考。
2026-01-26 11:13:10
61
原创 ZYNQ MPSOC SD卡启动盘制作
本文介绍了嵌入式Linux系统移植tslib和Qt库的完整流程。首先将boot文件拷贝到SD卡FAT32分区,解压rootfs到EXT4分区。随后移植tslib库,配置环境变量指定输入设备和显示参数。接着移植Qt库到系统目录,设置Qt运行环境变量。最后测试验证了tslib的触摸功能和Qt示例程序的运行效果。整个过程详细展示了嵌入式系统触摸屏和图形界面的配置方法,为嵌入式GUI开发提供了实用参考。
2026-01-22 09:51:09
73
原创 zynq mpsoc 以太网联网脚本
摘要 本文提供了两种Linux网络配置脚本:静态IP和动态IP设置。静态IP脚本使用ifconfig配置固定IP地址、子网掩码和广播地址,并包含root权限检查。动态IP脚本通过ip命令管理网口状态,使用udhcpc工具通过DHCP自动获取IP地址。两个脚本均包含状态反馈功能,执行后会显示当前网络配置信息。文末附有相关配置示意图。
2026-01-17 10:19:35
72
原创 zynqmpsoc linux如何启动自动执行.sh
本文介绍了如何通过修改profile文件实现脚本自启动。方法是在/etc/profile.d/目录下创建脚本文件myscript.sh,添加执行路径并赋予可执行权限。具体步骤包括:1)使用sudo nano命令创建脚本;2)在脚本中添加要执行的程序路径;3)保存后即可实现开机自动运行。文中配有操作截图辅助说明修改过程。该方法适用于Linux系统下配置开机自启动脚本的需求。
2026-01-17 09:25:18
101
转载 基于 FPGA LMS 算法的自适应滤波器设计
完成整个系统的搭建,最后下板测试,下板测试结果如图3-5所示,使用Vivado的ila工具,抓取数据源和滤波结果,从抓取到的波形可以看出,滤波后的信号效果比较理想,完成了自适应滤波的功能。MATLAB仿真如图3-1和图3-2所示,首先生成一个原始信号,和高斯噪声信号,并将噪声信号假如到原始信号中,再分别将原始信号和加噪后的信号作为参考信号dn和系统输入信号xn,最终通过自适应滤波算法,得到如图3-2所示的滤波结果,从图3-2分析可得,信号的滤波效果很好,误差很小,收敛于0.02。
2026-01-14 10:30:50
83
转载 <span class=“js_title_inner“>ZYNQ MPSOC VCU介绍</span>
由上图可知, 视频解码器单元的运行架构与编码器单元类似, VCU 解码器包括两个相互连接的HEVC/AVC 解码器(HEVC/H.264 Decoder core0~1),它还包含全局的寄存器(Global Registers)、中断控制器(Interrupt controller)和定时器(Timer)。由上图可知, VCU 拥有独立的视频编码单元(Encoder)和解码单元(Decoder),每个单元受微控制器单元(MCU)控制, MCU 控制来自 AXI 接口的待编码或解码的数据流。
2026-01-07 11:31:14
58
原创 ZYNQ MPSOC linux hello world
程序最终是需要运行在板卡上的,我们需要选择 arm 的编译器,为板卡编译程序。这里,我们选择 Petalinux 安装时,附带的编译器。1,运行下面命令,将 arm 编译器加入环境变量,环境变量仅在当前终端有效,后面命令要在当前终端完成。3,将程序导入到板卡运行。
2025-12-02 09:44:32
257
原创 <span class=“js_title_inner“>fpga实现音频预加重(pre-emphasis)滤波器</span>
平衡频谱:语音信号在产生过程中受到声门脉冲和口唇辐射的影响,天然具有大约-6dB/倍频程的高频衰减。提升高频特征:清辅音(如/s/、/f/、/th/)包含重要的高频信息但能量较弱,预加重能增强这些关键特征,提高识别准确率。1 .提升高频分量,平衡语音频谱,使得高频特征更加明显,便于后续的特征提取(如MFCC)。在CELP、ACELP等线性预测编码中,预加重使信号频谱平坦化,提高线性预测的准确性。录制时预加重:提升高频信号,克服磁带本底噪声(主要是高频噪声)。作用:这是预加重最经典和最重要的应用。
2025-11-25 11:28:53
309
原创 fpga实现音频预加重(pre-emphasis)滤波器
本文介绍了预加重滤波器在语音信号处理中的关键作用与应用。预加重通过一阶高通滤波器提升高频分量,平衡语音频谱,增强高频特征(如清辅音),改善信噪比。主要应用场景包括语音识别前端处理、语音编码、语音增强及FM广播等。文章详细阐述了预加重原理与传递函数,并提供了Matlab实现代码与时频域分析示例。最后给出了FPGA硬件实现方案,采用三级流水线结构处理16位定点数运算,其中预加重系数α=0.97(Q1.15格式)。实验结果表明预加重能有效提升语音高频分量,为后续特征提取奠定基础。
2025-10-25 10:34:30
234
原创 ZYNQ MPSOC VCU介绍
VCU(视频编解码单元)是Zynq UltraScale+ MPSoC EV型器件中集成的专用硬件IP核,用于高效完成视频编解码任务。它支持H.264/AVC和H.265/HEVC标准,最高支持4Kp60实时编解码,具有高性能、低延迟和低功耗特点。VCU包含独立的编码器和解码器单元,由MCU控制,通过AXI接口与系统交互。相比H.264,H.265采用更灵活的编码树单元,压缩效率提升约50%。VCU广泛应用于视频监控、视频会议等领域,可通过Xilinx官方文档和参考设计进一步学习。
2025-10-23 14:25:57
257
转载 基于FPGA的USB接口控制器设计(附代码)
方法是首先选择菜单File—>Open Device打开USB设备(如图64所示),如果打开设备成功,选择File—>Play Cube,在出现的密码输入框内输入密码,如果密码正确,立方体就会开始转动,并且cube程序在不时地和USB设备之间进行密码校验(可以看到PDIUSBD12的GOODLINK灯会不停的闪,这表示有数据传输)。可见,当一个总线上同时有两个驱动的时候,很有可能产生不定态 X,但是如果其中一个信号为高阻态 Z 的话,则是一个确定的状态(即另一个信号的状态)。
2025-10-22 11:30:34
143
原创 DAC1282 Programming
寄存器写入操作包含两字节操作码及后续一个或多个寄存器数据字节。命令首字节为写入操作码与寄存器地址的组合值,次字节指定单次连续写入的寄存器数量(实际值为n-1)。后续字节为待写入的寄存器数据。需注意,进行多寄存器写入操作时,若地址超过末位寄存器,地址指针不会自动回绕。寄存器读取操作包含两字节操作码输入,随后输出一个或多个寄存器数据字节。命令首字节为操作码与寄存器地址的组合值,次字节指定待读取的寄存器数量(实际值为n-1)。寄存器读取与寄存器写入命令均为两字节命令参数加若干数据字节,而复位命令为单字节命令。
2025-10-17 10:37:10
402
原创 FPGA的灰度质心法求取质心
灰度质心法(Gray-scale Centroid Method)是一种基于图像灰度分布的加权平均位置计算方法。它将图像的灰度值作为质量权重,计算图像的"质量中心"。3 FPGA 实现灰度质心法求取质心。2 matlab 实现灰度质心法。1. 离散图像的计算公式。2. 连续情况下的推广。是图像的灰度分布函数。类比物理学中的质心概念。
2025-10-14 11:30:57
508
原创 DAC1282寄存器介绍以及模式操作介绍
DAC1282A 与 DAC1282 的区别:主要体现在 GANMOD 寄存器的 GAIN[2:0] 位,DAC1282A 仅支持其中三个增益设置(1/1, 1/4, 1/16)。地址 (Address) 寄存器名称 (Register) 上电默认值 (Default) 位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0。DCG2: 最高有效字节 (MSB), Bits [7:0] = DCG[23:16]DCG0: 最低有效字节 (LSB), Bits [7:0] = DCG[7:0]
2025-10-11 16:36:23
1072
原创 fpga实现灰度质心法求取质心
本文介绍了灰度质心法的原理及其在MATLAB和FPGA上的实现方法。灰度质心法通过计算图像灰度分布的加权平均位置来确定图像的质量中心,其数学原理基于离散和连续图像灰度值的加权坐标计算。文章提供了MATLAB实现代码,包括图像读取、灰度转换、坐标网格创建和质心计算等步骤。同时,还给出了FPGA实现方案,采用Verilog HDL语言设计了状态机模块,能够实时处理视频流数据并输出质心坐标。两种实现方法均通过可视化方式展示了计算结果,验证了灰度质心法的有效性。
2025-10-08 14:41:27
239
原创 <span class=“js_title_inner“>ZYNQ/嵌入式ui设计用什么好?</span>
SEGGER官方页面: https://www.segger.com/products/user-interface/emwin/在国内有较多应用和支持。文档:https://github.com/zlgopen/awtk/blob/master/docs/README.md。微软官方页面:https://azure.microsoft.com/en-us/products/rtos/guix/文档: https://learn.microsoft.com/en-us/azure/rtos/guix/
2025-09-28 11:30:36
967
原创 嵌入式开发,裸机开发和OS开发区别以及各自优势?
极致的性能和效率:无OS开销,代码执行路径清晰,中断响应速度达到硬件极限。极低的成本:对MCU的ROM和RAM要求最低,可以选择更便宜、资源更少的芯片。完全的控制权:开发者对硬件和软件流程有绝对控制,便于进行极致的优化。确定性:程序流程简单,理论上更容易推导出最坏执行时间(WCET)。
2025-08-28 15:35:41
345
原创 ZYNQ/嵌入式ui设计用什么好?
本文介绍了嵌入式开发中常用的UI解决方案,分为三类: 轻量级字符/文本型UI:适用于无图形显示屏,如段码屏、字符LCD或串口命令行界面,包括自定义驱动和终端CLI(如linenoise)。 轻量级图形库:适用于低分辨率彩色屏,如LVGL(功能强大、开源)、emWin/STemWin(商用级稳定)、TouchGFX(STM32动画优化)、Qt for MCUs(跨平台需付费)等。 基于Linux的GUI框架:如Qt for Embedded Linux(功能完整)、Android(生态丰富)、GTK+(传统移
2025-08-26 14:20:49
177
原创 ZYNQ uGUI的设计与实现(1)
μGUI是一个轻量级开源GUI库,支持窗口、按钮、文本框和图片四种基本元素,允许自定义样式和交互功能。其核心特点包括:1)必须基于窗口构建界面;2)需周期性调用UG_Update()实现界面刷新;3)通过UG_TouchUpdate()支持触摸屏等坐标输入设备,结合窗口回调函数实现人机交互。该库仅包含ugui.c/h两个文件,适用于嵌入式系统开发,用户可自定义元素属性和交互逻辑。更多资源可通过官网或GitHub获取,包含使用手册和示例项目。
2025-08-25 14:55:21
244
FPGA 实现DS18B20的温度采集显示
2025-05-20
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
要求设计一种可以自动或手动控制的智能加湿器,实现对环境温湿度的监控加湿的效果 需要学生应用QuartusII软件,完成仿真编程和原理图的绘制 该系统需要完成以下几项功能: 1.利用按键调整时间,切换
2026-01-09
FPGA DDR4读写测试实验
2025-06-24
FPGA LM75温度采集
2025-06-24
FPGA实现RTC实时时钟的数码管显示
2025-05-20
FPGA实现eeprom的读写
2025-05-20
FPGA实现DHT11数字温湿度采集显示
2025-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅