- 博客(48)
- 收藏
- 关注

原创 微软CrowdStrike驱动蓝屏以及内核签名
sys格式的文件实际上是window 的内核驱动文件,做软件开发的工程师多少都会有些了解。内核驱动直接访问了操作系统的底层资源,如果这个文件有bug,系统很容易蓝屏,且无法恢复,因为重启的时候它又会自动加载。先来看看.sys在widnows操作系统所处的层级,非常的low level。
2024-07-23 10:02:30
1738

原创 Hello-FPGA CoaXPress 2.0 FPGA HOST IP Core PCIe Demo User Manual
CoaXPress FPGA IP Core with PCIe
2023-10-25 09:46:23
564
3
原创 8路CXP相机采集系统介绍
连接控制8路CXP 单lane 相机,支持POE,相机工作在外触发模式;可以通过网络接口监控CXP相机图像(只监控最新图像),传输控制指令,修改相机参数;支持3路SSI接口;根据上述需求,本系统通过双CXP FMC子卡接入8台CoaXPress(CXP)工业相机,利用Xilinx ZYNQ SoC芯片实现高速图像采集、传输及上位机实时显示。系统采用软硬件协同设计,支持实时数据流处理与灵活的上位机控制,可广泛应用于机器视觉、工业检测等高带宽场景。
2025-03-24 18:04:49
1369
原创 串口通信接口标准 RS232/422/485
RS232虽然在短距离内表现良好,但其单端信号传输方式限制了它的有效传输距离,并使其容易受到电磁干扰的影响。RS422标准是在这样的背景下发展起来的,旨在通过使用差分信号传输来提高数据传输的可靠性和距离,同时其传输速度最高可达高达10Mbps的传输速率。差分信号能够更好地抵抗共模噪声,这使得RS422非常适合于工业环境等噪声较大的场合。RS-232、RS-422和RS-485电气参数对比如下表所示:表 1 RS-232、RS-422和RS-485电气参数对比表RS232RS422R485工作方式。
2025-03-24 17:49:24
909
原创 (* IOB = “FORCE“ *) 的使用分享
在Xilinx FPGA设计中,IOB=FORCE是一个与输入输出块(IOB)相关的属性设置。这个设置主要用于控制逻辑是否被推入到IOB(Input/Output Block)中,即FPGA芯片边缘的I/O引脚附近的专用硬件资源。使用IOB属性可以帮助优化信号路径,减少延迟,特别是在对时序要求严格的场合。
2025-03-20 15:14:13
493
原创 阿里FPGA XCKU3P开箱
淘了一个好玩的阿里FPGA加速卡,PCIe Gen3x8, SFP *2 最大25G,官方用来加速网络应用的,我拿到主要想用SFP 功能,来做一下CXP OVER FIVER 10G/25G的验证工作。实际在X4下做一下DMA速度测试,双向同时各1.5GB,gen3x4 理论带宽4GB,没有跑满,受限于单次dma 数据块大小,这里板上没有DDR4。连接JTAG,板子丝印有JTAG 线序名称,根据线序 连接即可,正常连接后就能看到FPGA XCKU3P,这是卡里面原有固件。参考 board file 来自。
2025-03-12 15:20:23
716
原创 有符号数据转无符号数据时的符号位污染问题
/ 对 signed int 进行 31 位左移当 1 被识别为有符号整型时,左移 31 位会导致符号位被置 1,产生负数(在 32 位系统中值为 -2147483648)。C/C++ 标准规定,对有符号整数进行导致符号位变化的移位操作是未定义行为。
2025-03-05 15:14:23
397
原创 CoaXPress Over Fiber Bridge Host IP Core 仿真
用于传输CXP的low_speed_uplink 数据。
2024-12-08 19:54:13
1384
原创 CoaXPress over Fiber HOST Bridge FPGA IP
尽管 CoaXPress-over-Fiber 使用的是为以太网设计的标准电子器件、连接器和电缆,但它所使用的协议是 CoaXPress,而不是以太网,也不是 GigE Vision。简单来说,CoaXPress-over-Fiber 允许利用现有的以太网基础设施,特别是光纤网络,来传输 CoaXPress 协议的数据,而无需对协议本身进行任何更改。CoaXPress-over-Fiber (CoF) 是现有 CoaXPress 规范的一个重要扩展,旨在支持通过光纤进行传输。
2024-12-08 19:13:10
549
原创 visual studio 调试技巧
在使用visual studio 进行调试的时候,有几个调试方法很好用,这里做一些记录。GTEST 单元测试 参考VS2022创建C C++ GTEST工程 - Hello-FPGA - 博客园 (cnblogs.com)内存查看命令行测试动态库附加到进程调试动态库。
2024-09-24 13:01:32
676
原创 组合逻辑环(Combinational Logic Loop)错误学习
组合逻辑电路是数字电路设计的基础,广泛应用于各种电子设备中。它们简单、可靠,能够高效地完成特定的逻辑运算任务。时序逻辑电路是现代数字系统的核心组件之一,广泛应用于微处理器、存储器、通信系统等各种电子设备中。它们通过存储状态信息,使电路能够在不同的时间点上执行复杂的逻辑操作,从而实现更高级的功能。组合逻辑环是一种电路设计错误,通常需要避免。在数字电路设计中,正确的做法是使用时序逻辑(如触发器、寄存器等)来处理需要存储状态的情况,而不是让组合逻辑元件形成环路。
2024-08-26 11:35:27
1272
原创 system generator学习记录
其中输入数据认为是0-1之间的数据,16bit,输出数据也截断到0-1之间。图 1‑1 system generator 版本要对应才能打开。图 1‑13 双击system generator 生成IP。图 1‑9 打开波形查看器 右键添加所需查看的数据。图 1‑5 双击设置 选择实际要用的器件。图 1‑10 添加待观测信号到波形查看器。图 1‑2 创建simulink文件。图 1‑11 指定波形长度运行仿真。图 1‑3 创建文件 打开库模型。图 1‑8 仿真波形输入。图 1‑12 仿真波形。
2024-08-14 16:49:09
343
原创 verilog signed to unsigned offset binary
比如对8bit 数据来说,有符号数据的范围是-128 - 127,无符号数据的表示范围为0-255,实际上就是多了128的偏移,因此可以将有符号数整体偏移后 参与后续处理,其数据范围并没有改变。但是在HDL语言中处理有符号数据比较麻烦,HDL更习惯于无符号数据,无符号数据的补码就是其原码,不需要任何转换。因此在需要做有符号数计算的时候,通常会把有符号数转换到无符号数,计算完成之后再转换到有符号数据。有符号数据的最高bit 是 符号位,通常有符号数据都用补码来表示。为了避免减法的出现,我们可以做如下操作。
2024-08-06 09:32:45
421
原创 windows 暂停更新
使用windows 系统的伙伴都深受其扰,动不动就要强制更新,并且无法长时间关闭更新。这里推荐一个工具来禁止更新。越来越多的工程师可能会逐渐放弃windows ,真的太冗杂了,linux 的桌面和命令行越来越好用。
2024-07-30 08:00:17
219
原创 常用Git 管理工具
vscode or visual studio 越来越有一统天下的趋势。sourcetree 图形界面非常好用。这几个结合起来,哪个方便用哪个。
2024-07-29 15:36:20
598
原创 VS2022创建C C++ GTEST工程
创建一个常规的控制台可执行程序。然后使用NUGET安装包 安装GTEST 头文件和动态库,同时安装GTEST ADAPTER。安装可能提示找不到包源,此时需要根据提示配置一下,注意通配符很关键,不要问为甚吗,就是有bug。需要对带代码进行单元测试,选择在Visual studio 中使用GTEST 框架。编译完成就可以在测试管理器看到对应的测试,可以右键单独运行、调试指定的测试用例。
2024-07-28 22:41:43
554
原创 SUB-LVDS 与LVDS 互联
今天有同学问SUB-LVDS输出是否能接到LVDS输入上,以前没用过SUB-LVDS,一起学习一下。下表是SUB-LVDS的电压规格,其共模电压是0.8-1.0V;差分电压是100-200mV;
2024-07-23 14:02:45
879
原创 I2C设备地址 TargetAddress 24LC04
这是一个原理图示例,手册规定 24LCXX系列器件的设备地址格式为1010 XXX,其中XXX对应硬件原理图的A2 A1 A0值,那么当前原理图对应的I2C地址实际为1010 000,对应0X50。但是请注意,24LC04对应EEPROM存储容量是4Kb, 512字节,访问所有地址需要使用至少9bit 地址空间,因此使用了器件的最低1个地址BIT对应了BLOCK选择,用于扩展地址位宽。I2C协议规定,除了 0000 XXX和 1111 XXX之外,其他地址均可使用。典型时序 写word 操作。
2024-07-21 18:50:24
674
原创 FPGA DNA 获取 DNA_PORT
DNA 是 FPGA 芯片的唯一标识, FPGA 都有一个独特的 ID ,也就是 Device DNA ,这个 ID 相当于我们的身份证,在 FPGA 芯片生产的时候就已经固定在芯片的 eFuse 寄存器中,具有不可修改的属性。意思是说JTAG可以拿到57bit的DNA_PORT和64 bit的FUZE_DNA,DNA_PORT值最多会有32个器件有相同的值,FUZE_DNA就是唯一的。而如果要通过FPGA资源区读取,只能用DNA_PORT,也就是说你写逻辑的话得用57bit的DNA_PORT。
2024-07-19 19:15:11
839
原创 KU FPGA FLASH boot失败debug
新板子回来后,测试flash 烧录正常,但是无法BOOT,此时SPI设置为X4模式,使用内部时钟,速度90M。烧录过程不报错,校验也正常。FLASH理论支持最大速度108M,90M应该还好。另外板卡预留了EMCCLK外部时钟模式,速率100M 也不可行。
2024-07-19 16:40:47
490
原创 FPGA CFGBVS 管脚接法
原理图 CFGBVS 接地肯定是不对的,必须拉高到3.3V,还好留了1个0欧姆电阻在这里 还可以飞线补救一下。
2024-07-16 11:17:57
493
3
原创 GigE Vision GVCP/GVSP
1. 定义与背景GIGE协议是Gigabit Ethernet Vision协议的简称,它是一种开放标准协议,允许用户通过基于通用以太网的技术实现图像采集和处理。该协议的设计主要参考了以太网和其他图像传输协议,旨在提供高带宽、低延迟和稳定可靠的图像数据传输。2. 应用领域GIGE协议广泛应用于各种需要高速图像采集和处理的领域,如工业视觉、医学成像、安全监控、自动驾驶数据采集等。
2024-07-10 18:18:52
2459
3
原创 size_t 数据类型的好处
size_t类型在不同的平台上对应不同的底层整数类型,具体取决于平台的指针大小。size_t主要用于表示大小和长度,如数组的元素数量、缓冲区的大小等,它的设计目的是为了匹配指针的大小,以避免类型不匹配引起的错误。size_tUINT32size_tUINT64这意味着在 x86 架构的 Windows 或 Linux 上,size_t很可能是32位的无符号整数,而在 x64 架构的 Windows 或 Linux 上,size_t将是64位的无符号整数。
2024-07-10 17:48:11
793
原创 100G GigE(Gigabit Ethernet,千兆以太网)与CXP
100G GigE(Gigabit Ethernet,千兆以太网)与CXP(CoaXPress)接口在机器视觉和高速数据传输领域各有其独特之处。
2024-07-09 16:05:12
1014
原创 FPGA bit 文件直接烧录flash
FPGA比特流(bitstream)是一种用于配置可编程逻辑器件的数据格式,特别是现场可编程门阵列(FPGA)。比特流包含了硬件逻辑电路、路由信息以及芯片上寄存器和存储器(如查找表LUT)的初始值。通常认为比特流具有厂商特定的格式,因此很难反向工程或理解其内部细节。然而,这种观点并不完全正确。比特流文件不仅仅是一串配置FPGA的位数据,它还包含了一些人类可读的信息字段,用来描述这些位数据。实际上,比特流有一种类似汇编语言的指令集,用以描述FPGA的配置过程。从高层次上看,比特流文件类似于一个可执行程序。
2024-07-09 15:57:14
2418
原创 aravis开源视觉平台coaxpress 开发支持
Aravis 为使用GenICam标准摄像头的开发者提供了一个强大而灵活的解决方案,无论是在工业自动化、机器视觉还是其他需要高质量视频采集的领域中,都能发挥重要作用。
2024-07-05 14:50:38
462
原创 Aravis C# Wrapper项目简介
欢迎开发者参与项目设计,我们会提供赞助Aravis是一个开源库,专为工业相机控制设计,提供了一系列强大的功能和API,让开发者能够轻松地与各种工业相机交互。然而,由于Aravis最初是用C语言编写的,对于那些更倾向于使用C#进行开发的程序员来说,直接使用Aravis可能会有些许不便。为了解决这一问题,我们计划开发一个C#封装层,即Aravis C# Wrapper,旨在简化Aravis在C#环境中的使用。
2024-07-05 14:41:26
519
原创 XILINX FPGA IDCODE
Xilinx FPGA Device ID Register ,用于标识芯片具体型号。Xilinx 7系列,KU, KU+都是一样的格式。比如7系列和KU系列IDCODE表格如下,可以在UG470, UG570中找到: 其中X表示芯片自身的版本号. 这些信息还可以在找到。
2024-07-05 09:45:42
627
原创 ZYNQ7000 PS 复位PL FCLK_RESET0_N
PS 可以输出4个独立的复位信号给PL,用于控制PL逻辑的复位。通过devmem 访问寄存器绝对地址即可,示例如下。
2024-06-29 22:25:58
992
原创 PCI Class Code 解释
在PCI配置空间中,Class Code是一个16位的字段,分为三部分:Base Class、Subclass、Programming Interface,各占8位、8位和8位,共同定义了设备的类别和子类别,以及特定的编程接口或功能。PCI Express (PCIe) Class Code 是用来标识设备类型的编号系统,下面列举了一些常见的PCIe Base Class, Subclass, 以及 Programming Interface 的代码示例。这部分可以非常具体,指明设备遵循的特定标准或协议。
2024-06-24 16:10:55
1771
原创 XILINX set_property BITSTREAM.CONFIG.CONFIGRATE
这里 set_property BITSTREAM.CONFIG.CONFIGRATE 66 [current_design] ,66实际是不支持的,实际观察会导致设备无法启动,bit 加载不正常。不同的芯片对应可以支持的CONFIGRATE 都不一样,需要查阅手册UG908获取,设置正确的启动速度。
2024-06-24 11:07:46
774
原创 ZynqMP PL固件通过U-BOOT从指定位置加载FPGA BIT
PL固件可能经常修改,而BOOT.BIN和文件系统、内核实际上基本不会变,在一个平台上可以用同一份。如果每次修改都要重新打包PL 固件到BOOT.BIN,操作起来非常麻烦。如果你的PL 固件使用了PS的复位信号作为系统复位,这种方式可能会导致复位不完全导致逻辑故障。其中主要增加 mmc_loadbit_fat 指令,指定u-boot 从指定位置加载指定的bit 文件。这里bit文件实际上是bin 格式,这是因为bin 文件包含了头文件信息,这样ZYNQ才能完成PL编程。
2024-06-15 22:29:57
923
4
原创 ZYNQ LINUX如何开机自动执行指定脚本
本意是想要开机后自动加载某内核驱动,并且执行指定应用程序。在 /etc/init.d/rc 末尾增加指定脚本执行即可。脚本内容 insmod /usr/u-dma-buf.ko。还可以添加其他脚本,用于执行指定程序或者动作。
2024-06-14 09:48:05
327
原创 Hello-FPGA Camera link Full Receiver FMC Card User Manual
Camera Link是一种为工业相机接口应用而设计的串行通信协议标准。它的设计目的是为了标准化科学和工业视频产品的互联,包括摄像机、电缆和帧捕获器。Camera Link的接口有三种配置Base、Medium、Full,主要是解决数据传输量的问题。Camera Link已经是一个成熟的接口标准,采用LVDS源同步时序传输视频数据,采用串口传输控制数据,采用4对普通LVDS IO传输其他控制信号,主要是触发信号。图 1‑1 channel link。
2024-05-21 07:32:10
850
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人