CDC阅读笔记:多位数据握手要等完整一轮

保持数据、同步请求与确认,明确何时可以更新下一字。

2026年10月3日 · 1 分钟 · Starry Shine

CDC阅读笔记:复位、电平和脉冲应分开选择

把复位、电平和事件按语义分类,再核对同步器的版本与接口。

2026年10月3日 · 1 分钟 · Starry Shine

CDC阅读笔记:快到慢的窄脉冲为什么会丢

从采样窗口、事件间隔和完整握手理解快到慢脉冲传输。

2026年10月3日 · 1 分钟 · Starry Shine

CDC阅读笔记:慢到快先区分电平、事件和数据

慢到快不是安全条件;先说明信号语义、稳定窗口与接收方式。

2026年10月3日 · 1 分钟 · Starry Shine

CDC阅读笔记:异步FIFO先读懂指针和空满

分开数据存储与指针同步,核对Gray码、空满标志和复位契约。

2026年10月3日 · 1 分钟 · Starry Shine

FPGA 阅读笔记:ISERDESE2 解串与字边界对齐

归档文章是 UG471 部分章节的学习解读。它把端口、级联和 BITSLIP 放在一起介绍,适合建立接收链路的概念图。本文重新按“能采到位”和“能识别字”两个问题整理,尚未验证具体摄像头或板卡接口。 解串后的字仍可能错位 ISERDESE2 把串行数据转换为并行输出,但并行字的起点不一定与发送端的协议边界一致。官方将 BITSLIP 描述为重排并行数据顺序的功能,可用于带训练序列的源同步接口;操作同步于 CLKDIV,DDR与SDR行为有区别。参见 AMD UG953:ISERDESE2。 这张图是概念流程。训练比较逻辑产生反馈控制,BITSLIP在ISERDESE2内部改变并行字边界;它不是位于比较器之后的另一条串行数据路径。 采样相位与字边界分别检查 如果采样位置靠近数据跳变边缘,移动字边界不能解决位值不稳定。如果每一位都可靠,但并行字循环错位,训练和位序判断才有意义。因此调试记录需要同时保留误码现象和字模式,避免把所有错误都归结为 BITSLIP。 归档示例给出了某种位宽与模式下的Q输出顺序、移位规律和等待周期。这些不能直接套到另一种配置。我会先明确 DATA_RATE、DATA_WIDTH、INTERFACE_TYPE、D/DDLY路径以及级联方式,再查对应的 UG471 时序要求。使用BITSLIP还应确认选择了支持该功能的NETWORKING接口模式。 训练逻辑如何避免误判 选择训练字时,应先检查它的循环移位是否存在歧义。判定过程中,应在规定等待时间后比较新的输出,并要求连续匹配一定数量的字才宣布对齐。这个数量和失锁策略属于设计参数,需要按实际链路验证。 复位、训练、对齐成功和重新训练最好分别记录状态。跨时钟域传递的有效标志也需要明确处理,不能因为数据已解串就认为全部用户逻辑处在同一个域。 待验证清单 对训练序列施加不同初始位偏移,检查能否找到相同的协议边界。 检查 BITSLIP 脉冲、脉冲间隔和输出等待时间是否符合选定模式。 注入错误位和复位,确认不会立即误报锁定,并能进入重新训练。 用非对称数据确认 Q端口到业务字的映射,记录首位约定。 目前这些都是测试设计问题,尚无仿真成功率、时序裕量或硬件结果。 阅读来源 原始阅读材料:子墨祭:《UG471学习解读:ISERDESE2原语介绍》。 整理日期为2026-10-03;原文发表日期待核实。配图为本笔记原创概念示意,未复制原文截图。 适用范围:本文讨论AMD/Xilinx 7系列器件;不直接套用于UltraScale或Versal。

2026年10月3日 · 1 分钟 · Starry Shine

FPGA 阅读笔记:OSERDESE2 的位序、时钟与复位

归档教程用10位 DDR 并串转换说明 OSERDESE2 的例化和仿真。阅读这类波形时,我会先把一个并行字如何进入串行序列写清楚,再看时钟和复位;单独观察连续的0、1很难定位位序错误。本文尚未运行 RTL 仿真或板级测试。 先区分两个数据边界 CLKDIV 对应并行侧,CLK 对应串行侧。官方说明要求它们具有相应的分频关系;D1 对应先出现在 OQ 的数据。具体端口和合法属性组合见 AMD UG953:OSERDESE2。 图只表示数据流,不表示实际延迟或时钟布线。在连续传输、每个CLKDIV周期装载一个N位字的配置中,DDR的速率关系为 f_CLK = (N/2) × f_CLKDIV;这只是吞吐率关系,仍需核对具体模式、时钟相位和级联配置。 10位示例不能当成通用接线模板 超过单块支持范围的配置会涉及 MASTER/SLAVE 级联。检查示例时应把应用数据位、D端口和级联通道逐项对应,按官方模板核对连线。不要从变量名 data[0] 推断线上的首位:首位由实际端口映射决定。 归档文章把三态序列化能力描述为最高14:1,而官方条目将数据扩展位宽与三态路径分开,三态输入为 T1—T4,三态序列化最高4:1。本笔记据此将两条路径分开阅读,不沿用原文那一位宽结论。数据使能、三态控制和输出缓冲器也应分别核查。 延迟应由条件和测量共同说明 原文讨论了10位 DDR 仿真中观察到的4/5个串行周期差异。我不会把其中某个数写成固定接口保证;应记录输入采样沿、首位输出沿、CLK与CLKDIV相位以及使用的仿真模型,再对照 UG471:SelectIO Resources 的对应配置。 待做的最小验证 使用非对称固定字、行走1和递增字,明确每个字的首位与边界。 在确定的并行采样边界检查数据,避免激励与采样同沿产生仿真竞争。 按官方 RST 时序检查复位释放,并观察第一个有效字;多通道还需核对同步性。 改变允许范围内的相位条件,记录延迟;检查综合、布局和时序报告。 阅读完成后的产物应是端口映射表和可重复的仿真条件,而不只是与教程相似的一张波形。 阅读来源 原始阅读材料:孤独的单刀:《OSERDESE2的使用和仿真》。 整理日期为2026-10-03;原文发表日期待核实。配图为本笔记原创概念示意,未复制原文截图。 适用范围:本文讨论AMD/Xilinx 7系列器件;不直接套用于UltraScale或Versal。

2026年10月3日 · 1 分钟 · Starry Shine

FPGA 阅读笔记:配置 GTP Wizard 前先写链路规格

归档教程按向导页面解释 GTP/GTX 的线路速率、时钟、编码和可选端口。内容较多,也混合了不同收发器族的选项。我的整理方式是先写一页链路规格,再把每个配置项对应到规格中的需求。本文没有生成或验证某块板卡的 IP。 向导输入从硬件与协议开始 至少记录目标器件、收发器类型、通道位置、实际参考时钟、线路速率、用户数据位宽和对端约定。参考时钟的引脚与通道关系要从板卡原理图确认,截图中的频率和通道位置只属于原文示例。 AMD PG168:About the Wizard 说明向导生成配置后的 HDL wrapper、示例设计和 testbench。由此整理出的检查重点是:逐项核对生成结果,再以示例测试建立基线;模板选择不能代替完整业务协议的实现。 为每个开关写出理由 配置问题 需要回答的规格问题 编码与控制字符 对端如何定义数据、控制字符和字边界? 字节对齐 用什么模式识别边界,何时允许重新对齐? 缓冲与时钟校正 收发时钟关系如何,协议允许哪些校正序列? 通道绑定 是否多通道,允许的偏斜和对齐方法是什么? 终端与均衡 实际电气连接、通道损耗和目标收发器有什么要求? 没有对应需求的功能暂不凭截图启用。尤其要区分 GTP 与 GTX/GTH:原文汇总表中的参数不一定都适用于所选器件,应分别查 UG482 或对应收发器手册。 配置记录应比截图多一步 保存 Vivado/IP版本、器件型号、关键参数和生成配置。记录共享逻辑放置位置以及示例设计中的复位和用户时钟模块,避免把它们复制到业务工程时重复例化或遗漏。原文基于较早的向导界面,菜单位置应以当前工具为准。 待做验证 先检查生成示例的仿真,再按明确的环回路径验证,再连接实际对端。每阶段记录参考时钟与复位状态、对齐现象和错误计数。PRBS可以帮助检查链路,但业务帧格式、控制字符和复位后的恢复还需要各自的测试。 任何“链路可用”的结论都应附带速率、测试持续时间和错误统计。本笔记当前仅完成配置问题清单,未提供硬件误码结果。 阅读来源 原始阅读材料:沧小海:《GTP/GTX学习:第七章 IP核配置》。 整理日期为2026-10-03;原文发表日期待核实。配图为本笔记原创概念示意,未复制原文截图。 适用范围:本文讨论AMD/Xilinx 7系列器件;不直接套用于UltraScale或Versal。

2026年10月3日 · 1 分钟 · Starry Shine

FPGA 阅读笔记:沿着 GTP 时钟追踪数据路径

归档文章从一个 GTP 示例工程追踪参考时钟、COMMON、CHANNEL 和用户时钟模块。它的价值在于示范如何阅读生成层次,而不是给所有板卡提供一套相同频率。本文整理追踪方法,尚未测量 PLL 锁定、时钟频率或复位时序。 给每个时钟写三项说明 先记录时钟来自哪里、被谁使用、什么时候可以认为有效。参考时钟用于高速收发器的时钟基础;初始化或管理逻辑的时钟用于相应控制过程;用户时钟连接并行数据接口。核对时以生成 wrapper 和器件手册为准,名字相近不代表它们可以互换。 图把TX、RX用户时钟画成独立分支,并示意各自回接CHANNEL的用户时钟端口。数据通路未绘出;这不是完整接线图,所有频率关系与缓冲器仍须核对生成设计。它不表示可以把器件内部PLL输出直接当作任意逻辑时钟。 从实例连接追踪,而不是从名字猜测 检查原理图的参考时钟入口,再检查输入缓冲与 COMMON 的连接,接着分别追踪TXOUTCLK、RXOUTCLK、生成的用户时钟模块以及TXUSRCLK/TXUSRCLK2、RXUSRCLK/RXUSRCLK2回接端口。用户逻辑采用哪个时钟以实际接口配置为准。TX和RX分别画一张连接表,记录频率推导与实际配置之间的对应关系。 对于 7系列 GTP,阅读入口是 AMD UG482。原文同时对比了 GTX;后续设计应使用所选器件的资料,不能沿用另一族的PLL名称和参考路由。 先确认控制时钟,再审查复位过程 原文对特定示例列出了上电延迟计数,也提到尝试过不一致的系统时钟配置。这样的观察不能作为新工程中任意修改控制时钟的依据。若复位计数依赖声明的频率,应检查实际频率、参数和计时假设是否一致,并按当前IP文档与生成设计核查。 PLL锁定、用户时钟稳定、TX/RX复位完成和协议准备就绪是不同检查点。调试日志应分开记录这些状态,以便判断问题发生在哪个阶段。 待验证清单 建立每个时钟端口的来源、频率、用途和有效条件表。 检查时钟约束、生成时钟和工具报告,再审查业务逻辑的跨域路径。 如果TX与RX用户接口频率或相位关系不确定,明确业务数据如何跨域传递。 按器件允许的流程测试参考时钟变化、复位与恢复,记录状态和数据有效边界。 下一步需要实际板卡原理图和生成工程,才能把这份追踪清单落实成频率表;本文未填入推测的实测数值。 阅读来源 原始阅读材料:沧小海:《GTP学习:第三章 时钟结构》。 整理日期为2026-10-03;原文发表日期待核实。配图为本笔记原创概念示意,未复制原文截图。 适用范围:本文讨论AMD/Xilinx 7系列器件;不直接套用于UltraScale或Versal。

2026年10月3日 · 1 分钟 · Starry Shine

图像阅读笔记:畸变校正先弄清坐标与采样方向

保存的教程把畸变校正拆成坐标转换、畸变模型和插值三个环节。阅读时最有帮助的问题是:输出图像的一个像素,应该从输入图像的什么位置取值?本文整理这个思路,没有使用示例参数做相机标定,也没有实拍验证。 先固定坐标含义 像素坐标用 (u, v) 表示,数组索引用 [row, col] 表示。常见实现中 u 对应列、v 对应行;还要核对程序采用从0还是从1开始的索引。把坐标命名写清楚,可以少一次转置或主点偏移错误。 畸变系数作用在归一化相机坐标上。阅读公式时,应区分理想坐标、畸变坐标以及两者各自对应的像素位置。径向与切向畸变的常用模型可对照 OpenCV 相机标定教程。本文不涉及鱼眼模型。 从输出位置寻找输入采样位置 对每个待输出的理想像素,先用输出相机矩阵 K_out 换算到归一化坐标,再通过畸变模型得到畸变坐标,最后用输入相机矩阵 K_in 换算为输入采样位置。这里假定不额外改变相机朝向;加入校正旋转时还需相应坐标变换。输出矩阵可以不同于输入矩阵,不能总把同一组内参用于两端。这种反向采样思路让每个输出像素都有明确的计算入口;非整数采样位置需要插值,越界位置需要约定填充值或有效区域。 图中的箭头表示坐标计算顺序,最后一步读取输入图像,不是把输入像素逐个向输出散射。 示例代码值得复查的地方 归档示例先更新 x,随后计算 y 的表达式仍引用 x。若采用同时以原始归一化坐标定义的模型,顺序赋值会改变第二个表达式的输入。整理实现时应保留 x0、y0,分别计算 xd、yd,并把公式逐项核对;这里只指出检查点,尚未运行修订代码。 示例声明了 k3,展示的径向项却只写到 k2。这也提醒我:使用五参数模型时应核对系数与公式是否匹配,不能把不同模型的参数直接拼在一起。 待验证清单 用零畸变系数检查映射是否回到原位置,边界是否符合预期。 核对横纵坐标、主点和图像尺寸;缩放或裁剪图像后重新检查内参。 与同一模型的参考实现比较采样坐标,再比较插值结果;不要只看图像是否“变直”。 使用实际标定数据评估重投影误差和有效图像区域。 本文只保留阅读方法与实现疑问。原文的相机参数、代码和效果图未作为本项目测量结果。 阅读来源 原始阅读材料:祥知道:《畸变校正详解》。 整理日期为2026-10-03;原文发表日期待核实。配图为本笔记原创概念示意,未复制原文截图。 适用范围:本文讨论常用针孔相机畸变模型。

2026年10月3日 · 1 分钟 · Starry Shine