- 博客(44)
- 收藏
- 关注
原创 MATLAB应用笔记(1、LCR电路仿真)
本文通过MATLAB仿真分析了LCR电路的动态特性。首先建立了电路的微分方程并推导出传递函数H(s)=s/(5s²+6s+0.142857)。通过系统分析工具研究了电路特性:阶跃响应显示系统无超调但调节时间较长(165.2秒);波特图和根轨迹图揭示了系统在低频段的响应特性;极点分析表明系统稳定。最后仿真了0.027Hz正弦激励下的响应,验证了电压电流相位基本一致,幅值增益为0.1667。该分析完整展示了LCR电路的时频域特性。
2026-05-09 09:55:55
402
原创 嵌入式Linux Lua使用ZeroBrane远程调试
本文介绍了在嵌入式Linux平台上实现ZeroBrane远程调试功能的技术方案。通过集成LuaSocket和MobDebug库,构建了支持远程调试的Lua脚本环境。关键步骤包括:1) 移植LuaSocket库提供TCP通信能力;2) 嵌入MobDebug调试协议实现;3) 创建调试模块封装C/Lua接口;4) 修改主程序支持调试参数。该方案实现了断点调试、单步执行等核心功能,解决了嵌入式环境下Lua脚本调试的难题,适用于基于Linux的仪器控制系统开发。
2026-03-30 09:35:17
492
原创 MATLAB基础学习笔记(6、MATLAB评价预测效果好坏)
本文介绍了MATLAB中常用的7种预测效果评价指标:SSE(误差平方和)、MSE(均方误差)、RMSE(均方根误差)、MAE(平均绝对误差)、MAPE(平均绝对百分比误差)、SMAPE(对称平均绝对百分比误差)和R²(决定系数)。通过实例数据演示了各指标的计算方法,并指出RMSE和R²是最常用的评价指标。其中RMSE与原始数据同量纲,R²越接近1表示预测效果越好。这些指标从不同角度量化了预测值与真实值的偏差程度,为模型评估提供了客观依据。
2026-03-05 15:31:39
379
原创 MATLAB基础学习笔记(5、MATLAB中矩阵计算)
前面学的abs、sin、round、log都可以用于矩阵运算,用于矩阵运算时,对矩阵中的每个元素分别运用这些数学运算函数,返回的结果也是一个矩阵。常用函数。
2026-03-05 10:42:16
277
原创 MATLAB基础学习笔记(3、MATLAB中的向量)
最常用,利用命令A:step:B来创建一个行向量,其中A是起始值,step是步长,B是终止值。linspace(a,b)创建一个行向量,向量第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔向量。空格和逗号创建的是行向量,分号和回车创建的是列向量。将idx设置成一个向量,idx中为需要提取元素的索引,使用a(idx)命令即可。利用命令a(idx),小括号中的idx就是需要引用元素的索引。logspace(a,b)创建一个行向量,第一个元素为。利用等号赋值的方法对元素进行修改和删除,令向量。
2026-03-04 17:31:41
291
原创 MATLAB基础学习笔记(1、矩阵基础知识)
本文介绍了矩阵的基础知识,包括矩阵定义(m×n数表)、特殊矩阵(方阵、同型矩阵、转置矩阵、单位矩阵)以及向量(矩阵特例)的概念。详细讲解了矩阵运算:加减法(要求同型)、数乘、矩阵乘法(左列等于右行)以及逆矩阵(AB=BA=E)。最后阐述了特征值与特征向量的定义(Av=λv)。这些概念构成了线性代数的基础框架。
2026-03-04 17:28:45
493
原创 MAX10 FPGA在线升级调试笔记
本文介绍了基于10M08SAE144C8G FPGA的双镜像在线升级方案。系统采用双压缩镜像模式,通过SPI协议实现MCU与FPGA通信,使用Xshell和Ymodem协议传输rpd文件进行升级。详细说明了闪存配置模式、onchip flash IP核的接口时序和寄存器配置,包括avmm_csr和avmm_data两个接口的操作流程。同时提供了verilog驱动代码,实现了通过localbus协议对FPGA寄存器的读写控制。该系统设计具有安全可靠的升级机制,通过config_sel引脚选择启动镜像,有效防止
2026-02-26 09:01:24
634
原创 Lua 学习笔记
本文记录了Lua脚本语言的学习笔记,重点介绍了其核心语法特性。Lua作为轻量级嵌入式脚本语言,具有变量自动类型推导、灵活的table数据结构(兼具数组和字典功能)、多返回值函数等特色。文章详细讲解了变量声明、数值/字符串操作、流程控制、全局表_G等基础语法,并提供了实用示例代码。特别强调了Lua的独特设计:数组下标从1开始、table的混合使用模式、逻辑运算符模拟三元运算等。最后总结了使用注意事项,如局部变量声明、类型转换陷阱和table长度限制等,为仪器软件开发中的脚本接口实现提供了实用参考。
2026-01-24 22:37:57
953
原创 windows驱动开发笔记(1、环境搭建&开发套路)
本文记录了从Linux驱动转向Windows驱动开发的经验总结。主要区别包括:1) Windows驱动资料较少,需依赖官方文档;2) 使用INF文件替代设备树;3) 开发模式相似但API不同。作者详细介绍了开发环境搭建(270元二手主机)、工具配置和开发流程,重点说明了驱动匹配、设备符号创建和IOCTL实现方法。文中指出Windows驱动调试更方便,建议借鉴Linux UIO思想实现关键功能。整体认为两种系统驱动开发思路相似,主要差异在于具体接口实现。
2025-10-24 10:50:45
556
原创 放大器学习笔记(一、放大器的分类和运放关键指标)
本文系统介绍了运算放大器的分类和关键性能指标。放大器主要分为晶体管型、运算放大器和功能放大器三大类。重点阐述了运放的12项核心参数:失调电压/电流、噪声特性、输入/输出电压范围、共模抑制比、开环增益、压摆率、带宽指标(单位增益带宽、增益带宽积、-3dB带宽、满功率带宽)、建立时间、相位裕度、电源抑制比、总谐波失真以及热阻参数。文章详细解释了各项指标的定义、优劣范围及实际应用中的注意事项,为运放选型和电路设计提供了全面的技术参考。
2025-08-22 16:47:29
887
原创 分享一个FPGA寄存器接口自动化工具
本文介绍了CERN开发的寄存器接口生成工具cheby及其GUI版本reksio的使用方法。通过图形界面描述寄存器属性后,cheby可自动生成Verilog代码、C语言头文件及接口文档,解决了FPGA开发中模块接口规范性问题。工具支持从YAML文件一键生成SV格式接口包装、C头文件及HTML接口文档,大幅提升开发效率。文章详细展示了各功能生成效果,并提供了工具的开源代码仓库地址。这套工具特别适用于需要保证寄存器接口一致性的FPGA开发场景。
2025-07-30 17:11:37
658
原创 LVDS TX RX IP调试笔记
本文介绍了基于Xilinx ZYNQ平台的LVDS IP调试过程。使用xc7z020开发板进行验证,通过200MHz LVDS差分信号实现板间通信。文章详细阐述了硬件设计(包括供电、引脚分配和连接方式)和软件架构(包含发送/接收模块、时钟管理和调试逻辑)。重点分析了IDELAYCTRL参考时钟优化、数据延时校准和滑位同步机制。测试结果表明,该系统在降低频率的杜邦线连接下仍能稳定工作,实现了发送数据的正确回环接收。最后提供了时序分析和资源占用情况,并指出了REFCLK频率限制问题的解决方案。
2025-07-10 11:21:55
1121
原创 基于ZYNQ7000的AD9226采集卡实现(3、PS LINUX DMA驱动实现)
本文介绍了PS侧DMA驱动的实现,主要包括DMA初始化和应用接口设计。在DMA初始化阶段,通过probe函数完成缓冲区的分配和配置寄存器设置。驱动为应用程序提供了三种接口方式:1)通过read接口获取DMA缓冲区写指针位置;2)使用mmap将DMA缓存映射到用户空间实现高效访问;3)通过sysfs导出DMA控制属性。此外还设计了debugfs接口用于调试信息查看,包括帧长、帧数量等关键参数。这些接口共同实现了用户空间对DMA的高效访问和控制。
2025-07-08 11:16:12
322
原创 基于ZYNQ7000的AD9226采集卡实现(2、PL DMA搬运采集数据)
本文实现了PL侧DMA将AXIS数据搬运至PS DDR的功能,支持地址、帧长度和数量配置。系统通过AXI总线连接PL和PS,使用DataMover IP实现DMA传输。设计采用AXIS FIFO缓冲数据,并定义了命令格式和控制寄存器。实验验证了内存分块循环写入功能,成功捕获了两帧报文的头部数据。该方案有效实现了PL到PS的高速数据传输,避免了数据丢失。
2025-07-02 11:17:39
621
原创 基于ZYNQ7000的AD9226采集卡实现(1、采集数据到PL)
本文介绍了基于ZYNQ7010平台的AD9226数据采集系统设计。系统采用12位65MHz采样率的ADC,通过PL端采集数据并通过AXI总线传输至PS端DDR。硬件部分包括主控板和采集模块,AD9226采用简单时序,只需在时钟上升沿读取12位数据。FPGA代码实现了AD9226驱动模块,将采集数据打包为AXIS接口格式,支持配置采样次数和帧长度。仿真验证了数据采集的正确性。该系统实现了高效的数据采集和传输,为后续处理提供了可靠的数据源。
2025-06-30 15:15:43
1641
原创 STM32F405RGT6单片机原理图、PCB免费分享
做机创比赛时画的板子,比到一半因为疫情回家,无后续,,,已打板验证过,使用stm32f405rgt6做主控。
2024-11-06 08:50:14
1289
原创 FPGA时序分析和约束学习笔记(4、IO传输模型)
用于搜索时过滤,各类型的含义如下:cellsLUT、IOBUF、CLKCTRL、D触发器(寄存器)keepers写代码的过程中定义的各种信号名称pinsCell的输入和输出端口ports整个设计顶层的输入输出和双向端口registersD触发器(寄存器)
2024-11-06 08:40:22
683
原创 FPGA时序分析和约束学习笔记(2、FPGA时序传输模型)
Tsu建立时间:目的寄存器自身的特性决定,在时钟上升沿到达其时钟接口时,其数据输入端(D)的数据必须提前Nns稳定下来,否则就无法确保数据正确存储。Skew时钟偏斜:时钟从源端口出发,到达目的寄存器和源寄存器的时间差值(Tclk2-Tclk1)Slack:数据需求时间和数据到达时间的差值,为正值时数据能被目标寄存器正确接收。Tco输出延时时间:数据输出到Q端口的时间-时钟上升沿到达CLK端口时间。Tclk1:时钟信号从时钟源端口出发,到达源寄存器端口的时间。Tclk1+Tco+Tdata:数据到达时间。
2024-10-05 09:41:12
780
原创 基于XDMA的简易FPGA网卡实现(二)
上一期笔者实现了百兆网卡,但使用iperf测tcp速度时,tcp发送速度只有33Mb。本期记录此问题解决过程。
2024-04-05 16:42:30
1353
1
原创 基于XDMA的简易FPGA网卡实现(一)
XDMA虽然是sgdma,但驱动一次只能发送一个包(可能有多个分片),等完成中断才能唤醒下一次发送,所以发送速度不理想。skb_put修改sk_buff的tail和len,dma_unmap_single sk_buff的物理地址,执行netif_rx提交到协议栈。ip:提供axis数据位宽转换功能,将xdma 128bit axi-stream转为8bit供fifo使用,使用了两个此模块实现双向转换。在网卡驱动的probe函数中进行第一次接收,在接收完成中断或tasklet中配置后续接收。
2024-03-27 21:10:32
3593
6
原创 nginx 80端口转发到8086端口
这是因为nginx使用了/etc/nginx/sites-enabled/defaule这个默认配置,直接删除这个文件,然后查看实际配置。访问80端口时始终显示“Welcome to nginx!在/etc/nginx/conf.d目录下增加配置文件。查看端口占用,确保80端口不被占用。重启nginx,80端口恢复正常。
2024-02-27 13:08:42
715
原创 vscode使用clangd报error: invalid AST错误
vscode使用clangd报error: invalid AST错误
2024-01-10 16:08:30
3529
3
原创 串口控制器及驱动实现
增加一个程序版本寄存器,方便核对程序版本uart控制器寄存器依次为:0x00 串口使能寄存器0x04 串口读写控制寄存器0x08 串口数据寄存器0x0c 串口发送波特率寄存器0x10 串口发送fifo数据个数寄存器0x14 串口发送fifo状态寄存器0x18 串口接收波特率寄存器0x1c 串口接收fifo数据个数寄存器0x20 串口接收fifo状态寄存器0x24 串口中断控制寄存器/* OFFSET:0x00 版本信息 *///程序版本。
2024-01-04 17:17:39
1899
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅