IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环

EDA 星球 2026-07-29 09:57
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图1

IC Coder 真实商用 FPGA 项目

AI全自主完成六片AD7699多速率采集与 RS422 帧发送工程闭环

真实客户 · 真实需求 · 全流程自主执行 · 可复核验证 · 更快项目交付

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图2


如希望使用或者采购该工具产品,

请扫码填写需求信息

案例导读|真实客户、真实商用项目、真实工程流程

这是一个来自真实客户的商用 FPGA 研发项目,任务包含需求理解、架构设计、11 个 RTL 模块、完整 TestBench、CRC 帧协议、UART/RS422 发送、约束文件、编译修复和 VCD 验证。IC Coder 推进的不是孤立代码片段,而是一套可审查、可运行、可验证的工程闭环。

在工程师完成任务提交、架构阶段确认和继续执行确认后,IC Coder 全自主推进主体工程,最终完成 20 帧系统级仿真、UART 捕获 7942 字节、buffer_overrun=0,并生成约 648 MB VCD 作为可复核证据。

11RTL 模块
2839行 Verilog
11TestBench
20帧系统级仿真
648MBVCD 波形
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图3

图 1:IC Coder 完成编译、仿真和结果归纳;CRC 标准向量与复位行为通过,系统生成可复核 VCD。

SECTION 01

先看结果:AI 全自主推进真实商用 FPGA 工程闭环
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图4

图 2:基于本次工程日志与交付物整理的结果信息图;原始日志、源码与 VCD 是验证依据。

这是一个来自真实客户的商用 FPGA 项目。客户需要在 Cyclone IV EP4CE6E22I7 上实现六片 AD7699 多速率采集,完成异步复位同步、采样调度、乒乓缓存、CRC-16/CCITT 帧协议以及 UART/RS422 发送。它同时包含器件接口、时序、协议、验证和工程交付约束,不是孤立模块或概念演示

最终交付包含 11 个 RTL 模块、11 份 TestBench、6 路 AD7699 行为模型、Quartus QSF、时序 SDC、引脚映射说明、架构与接口文档、编译检查报告和 VCD 波形。全部 RTL 通过 Icarus Verilog 编译检查,退出码为 0。

关键验证结果

系统连续完成 20 帧采集与发送,UART 端捕获 7942 字节,无缓存溢出。

CRC-16/CCITT 标准向量 123456789 → 0x29B1,复位与多时钟节拍行为通过。

20 帧中 18 帧完整通过 CRC;其余 2 帧定位为加速仿真下的 UART 捕获边界与测试缓冲区截断,不属于 DUT 功能错误。

对于 FPGA 工程师与研发服务团队,IC Coder 带来的价值不只是少写代码。工程师定义目标、关键架构和验收边界,IC Coder 自主承担需求理解、模块拆解、RTL/TestBench 生成、工具调用、日志与 VCD 分析、问题定位和迭代修复。缩短从需求到可验证交付的链路后,同等时间内可以完成更多项目交付、承接更多客户需求,为团队提升工程产能与收入创造空间。

SECTION 02

客户原始需求:这就是一个真实的商用 FPGA 项目

本案例来自真实客户的商用 FPGA 项目。客户需要在 Cyclone IV EP4CE6E22I7 上实现六片 AD7699 多速率采集,并完成异步复位与时钟、CRC、乒乓缓存、帧格式、UART/RS422 发送以及工程交付。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图5
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图6

图 3:本案例客户原始需求中的器件与接口、引脚分配、采样频率、UART 字符格式和帧协议片段;这些内容随后通过 IC Hub Skill 整理为正式提交给 IC Coder 的初始提示词。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图7

图 4:IC Coder 读取优化后的初始提示词,识别六片 AD7699 采集、缓存、协议封装与串行发送的完整系统。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图8

图 5:初始提示词明确目标与边界后,IC Coder 先完成需求摘要、模块划分、接口拓扑、时序约束与风险分析,再进入 RTL 阶段。

项目开始前,团队先把客户原始需求交给 AI,并调用 IC Hub「FPGA 设计提示词优化助手」Skill ,对器件、接口、时钟复位、数据格式、模块划分、TestBench、验证条件和交付要求进行补齐、消歧和结构化,最终形成一份更适合 IC Coder 长程执行的初始提示词

Skill 详情:https://ichub.ai/skills/fpga-design-prompt-writer

IC Coder 正是依据这份初始提示词,全自主推进并跑完整个项目。

提示词优化 + IC Coder 自主执行带来的三个直接收益

客户需求经 IC Hub Skill 补齐器件、接口、时钟复位、模块划分、验证条件和交付要求,形成清晰、可执行的初始提示词。

IC Coder 依据同一份初始提示词持续生成 RTL 与 TestBench,运行编译仿真,读取日志和 VCD,并根据结果自主定位、修复和复验。

工程师聚焦目标确认、架构判断和结果验收,缩短从需求到可验证交付的链路,为并行承接更多 FPGA 项目创造空间。

给 IC Coder 的初始提示词:从客户需求到全流程执行

下方保留本次真实商用项目实际提交给 IC Coder 的结构化初始提示词。它不是客户需求的简单复制,而是经 Skill 优化后形成的执行输入,用于明确背景、编码规约、目标和验证要求,帮助 IC Coder 在长程自主执行中始终围绕同一项目目标推进。

给 IC Coder 的完整初始提示词|在卡片内上下滑动查看
背景:

设计一个基于 Intel/Altera Cyclone IV E FPGA 的 Verilog 项目,项目名称为“AI 采编器六片 AD7699 多速率数据采集与 RS422 帧发送系统”。

目标器件为 EP4CE6E22I7,系统时钟为 25MHz。FPGA 控制 6 片 AD7699 完成多通道模拟信号采集,其中 ADC1~ADC4 共用 CNV、SCK、SDI 控制线,并分别通过独立 SDO 返回转换结果;ADC5、ADC6 各自使用独立的 CNV、SCK、SDI、SDO 接口。采集结果按 10ms 周期组织为数据帧,经 921600bps RS422 单向链路自动发送。

AD7699 为 16bit、8 通道 SAR ADC,器件配置、转换时序和数据读回行为以 Analog Devices 官方 AD7699 Rev.G 数据手册为准:

Analog Devices AD7699 Rev.G 数据手册(官方原始资料)

本案例重点展示 IC Coder 对多片 ADC 并行控制、共享 SPI 总线调度、不同采样速率协同、ADC 配置流水对齐、数据缓存、CRC16、协议转义、非整数分频串口发送、Quartus 工程约束和自检仿真的综合工程能力。

编码规约:

1、工程使用 Verilog HDL 编写,可综合 RTL 必须兼容 Quartus II 13.1,不使用 SystemVerilog 接口、结构体、动态数组、类等语法,不保留未完成标记、空模块或伪代码。

2、FPGA 型号固定为 EP4CE6E22I7,顶层模块命名为:

data_acquisition_encoder_top

3、顶层端口至少包含:

input  wire clk;

input  wire rst_n;

output wire cnv_shared;

output wire sck_shared;

output wire sdi_shared;

input  wire sdo1;

input  wire sdo2;

input  wire sdo3;

input  wire sdo4;

output wire cnv5;

output wire sck5;

output wire sdi5;

input  wire sdo5;

output wire cnv6;

output wire sck6;

output wire sdi6;

input  wire sdo6;

output wire tx;

4、外部 rst_n 为低有效异步复位输入,RTL 内部必须进行异步置位、同步释放。复位期间:

- tx 保持逻辑 1;

- 所有 CNV 保持非转换状态;

- SCK 保持 SPI Mode 3 的空闲电平;

- 帧计数器、通道计数器、CRC、缓存状态和错误状态清零;

- 复位释放后不得把 ADC 流水线中的无效数据写入首帧。

5、AD7699 接口采用 SPI Mode 3,即 CPOL=1、CPHA=1。SCK 空闲为高电平,SDI 按 MSB first 发送配置字,SDO 按 MSB first 接收 16bit 转换结果。

6、每片 AD7699 使用 14bit 配置寄存器。需要建立清晰的配置字段定义,支持选择输入通道、输入模式、参考源、滤波器、序列器和配置回读选项。默认配置为:

- 输入通道由 FPGA 通道调度器指定;

- 单端单极性采集;

- 使用内部参考源;

- FPGA 自行轮询通道,不依赖器件内部自动序列器;

- 不使用 Busy 输出;

- 不启用配置回读。

7、ADC 时序模块不得假定配置写入与当前输出数据属于同一次转换。必须处理 AD7699 的转换结果和配置字之间的流水关系,为每次转换保存对应的 ADC 组、通道号、帧号和有效标志,确保返回的 16bit 数据与正确通道一一对应。

8、每个 ADC 控制器至少包含以下状态:

IDLE

CNV_ASSERT

CONVERT_WAIT

SPI_SHIFT

RESULT_LATCH

DONE

CNV 脉宽、转换等待时间、SCK 分频值和 SPI 位数必须定义为参数,时序不得依赖不可综合延时语句。

9、ADC1~ADC4 共用 cnv_shared、sck_shared、sdi_shared,但 sdo1~sdo4 必须在同一个 SPI 时序中并行移入四个独立的 16bit 移位寄存器。

10、ADC1~ADC4 的共享接口采用事件排队调度:

- ADC1、ADC2 的采集事件频率为 100Hz;

- ADC3、ADC4 的采集事件频率为 500Hz;

- 当两类事件同时到达时,必须保存两个待处理事件并依次执行,不得丢失其中任何一个;

- ADC1、ADC2 事件只接收并保存 sdo1、sdo2;

- ADC3、ADC4 事件只接收并保存 sdo3、sdo4;

- 非目标 ADC 同时产生的转换结果可以丢弃,但不得破坏下一次转换的数据标签。

11、共享接口维护两套独立通道计数器:

- ADC1、ADC2 有效通道为 0~6,按 0、1、2、3、4、5、6 循环;

- ADC3、ADC4 有效通道为 0~5,按 0、1、2、3、4、5 循环;

- 不同采样组的通道计数器不得相互影响。

12、ADC5 使用独立 SPI 控制器,有效通道为 0~5,总采集事件频率为 5kHz,通道按 0~5 循环。

13、ADC6 使用独立 SPI 控制器,有效通道为 0~5,总采集事件频率为 2kHz,通道按 0~5 循环。

14、本项目默认将 100Hz、500Hz、5kHz、2kHz 定义为对应 ADC 器件或 ADC 组的总采集事件频率,不定义为每个模拟通道各自的采样频率。

15、在默认配置下,每个完整 10ms 采集周期必须得到:

ADC1:1 个样本

ADC2:1 个样本

ADC3:5 个样本

ADC4:5 个样本

ADC5:50 个样本

ADC6:20 个样本

合计:82 个有效样本

16、采样频率、有效通道数量和通道上限必须集中定义为 parameter 或 localparam,不能将分频值散落在多个模块中。

17、25MHz 时钟下,10ms 周期严格对应 250000 个系统时钟。100Hz、500Hz、5kHz、2kHz 调度可以使用整数计数器实现。

18、ADC5、ADC6 或共享 ADC 接口在帧边界附近仍有转换尚未完成时,必须按照转换启动时记录的帧标签归入正确帧。禁止把前一帧最后一个样本错误写入后一帧。

19、复位释放后,各 ADC 接口先执行必要的配置和流水预热转换。首个对外发送的数据帧必须包含完整有效数据,禁止把复位后的虚假返回值、未知值或上一配置对应的数据写入首帧。

20、每个采样结果使用一条 3 字节记录保存:

Byte0:样本标签

Byte1:ADC 数据低字节

Byte2:ADC 数据高字节

样本标签格式为:

bit[7:5]:ADC 编号,ADC1~ADC6 分别编码为 0~5

bit[4:2]:通道编号 0~7

bit[1:0]:保留,固定为 0

21、一个 10ms 周期的数据区按 ADC1、ADC2、ADC3、ADC4、ADC5、ADC6 的顺序排列。同一 ADC 内的样本按实际采集时间先后排列。

22、默认配置下,原始数据区长度为:

82 × 3 = 246 字节

23、使用双缓冲或乒乓缓存结构。采集逻辑写入当前缓存的同时,协议发送逻辑读取上一周期缓存。缓存优先推断为 Cyclone IV 的 M9K RAM,不使用外部存储器。

24、帧缓存切换必须使用明确的 buffer_ready、buffer_busy、write_bank、read_bank 握手。UART 尚未发送完上一帧时,禁止覆盖正在读取的缓存。

25、如果出现缓存来不及释放、ADC 事件积压、ADC 转换超时或帧数据数量异常,必须锁存相应错误标志和错误计数器,不得静默丢样。

26、RS422 仅发送不接收,tx 直接连接 ADM2682 的发送数据输入。串口格式为:

波特率:921600bps

空闲电平:1

起始位:1bit,逻辑0

数据位:8bit

发送顺序:LSB first

校验位:1bit,奇校验

停止位:1bit,逻辑1

每字节共11bit

27、25MHz 无法对 921600bps 进行整数分频,UART 波特率发生器必须采用相位累加器、Bresenham 分频或等效的小数分频方式。长期平均波特率必须准确,相邻 bit 周期允许相差一个系统时钟。

28、串口发送端必须提供 byte_valid、byte_ready 或等效握手。协议打包器只有在 UART 接收当前字节后才能推进状态,不得因波特率等待造成字节重复或丢失。

29、数据帧格式固定为:

帧头:        2字节,0x5A、0x54

数据区长度:  2字节,低字节在前

数据区:      N字节

CRC16:       2字节,低字节在前

帧尾:        2字节,0x5A、0xFE

30、协议转义规则固定如下:

- 0x5A 为转义字符;

- 数据区中每出现一个 0x5A,发送时替换为 0x5A 0x5A;

- CRC 两个字节发送时也执行同样的转义;

- 帧头、长度字段和帧尾不执行转义;

- 数据区长度表示转义后实际发送的数据区字节数;

- CRC 字节不计入数据区长度。

31、CRC 使用 CRC-16/CCITT-FALSE:

多项式:0x1021

初始值:0xFFFF

输入不反射

输出不反射

最终异或值:0x0000

CRC 计算范围为转义后的数据区字节,不包含帧头、长度字段、CRC 字段和帧尾。

32、CRC 模块必须通过标准字符串 123456789 的检查,其期望结果为 16'h29B1。

33、数据区长度必须在发送前确定。可以在采集写入时同步统计原始长度和 0x5A 出现次数,从而得到转义后长度,禁止在发送过程中回头修改已经发出的长度字段。

34、系统上电并完成复位、ADC 预热后自动连续采集和发送,不需要外部启动命令。

35、必须进行串口带宽预算。默认 82 条三字节记录时,正常数据区为 246 字节;即使数据区和 CRC 出现最坏情况转义,也必须保证一帧能够在下一个 10ms 周期到来前发送完毕。

36、建议按以下层次划分 RTL:

rtl/reset_sync.v

rtl/rate_tick_gen.v

rtl/ad7699_spi_engine.v

rtl/ad7699_shared4_ctrl.v

rtl/ad7699_single_ctrl.v

rtl/sample_scheduler.v

rtl/frame_buffer.v

rtl/crc16_ccitt.v

rtl/frame_packetizer.v

rtl/uart_tx_8o1.v

rtl/data_acquisition_encoder_top.v

37、所有跨模块的数据传递必须包含明确的 valid/ready、request/acknowledge 或 busy/done 关系,不允许依赖单周期脉冲恰好同时到达。

38、RTL 中禁止使用隐式网络;所有计数器、地址、长度和运算结果必须明确声明位宽,避免无符号扩展、截断和比较位宽不一致。

39、生成 Quartus QSF 引脚约束,至少包含:

clk         -> PIN_32

rst_n       -> PIN_24

cnv_shared  -> PIN_51

sck_shared  -> PIN_55

sdi_shared  -> PIN_53

sdo1        -> PIN_42

sdo2        -> PIN_44

sdo3        -> PIN_46

sdo4        -> PIN_69

cnv5        -> PIN_126

sck5        -> PIN_124

sdi5        -> PIN_125

sdo5        -> PIN_127

cnv6        -> PIN_144

sck6        -> PIN_142

sdi6        -> PIN_143

sdo6        -> PIN_141

tx          -> PIN_68

全部普通数字引脚使用 3.3-V LVCMOS I/O 标准。

40、生成 SDC 时序约束,创建 25MHz 主时钟,并对外部异步复位同步器路径进行合理约束。

41、尽量减少逻辑和存储资源。帧缓存优先使用 M9K,SPI、CRC、调度和 UART 使用普通逻辑实现,不调用 Nios II、UART IP、ADC IP 或第三方协议 IP。

目标:

1、生成完整的 Verilog RTL、TestBench、ADC 行为模型、仿真脚本、QSF、SDC 和工程说明文档。

2、在编码前生成以下文档:

doc/requirements_assumptions.md

doc/architecture.md

doc/ad7699_timing.md

doc/frame_protocol.md

doc/bandwidth_budget.md

doc/verification_plan.md

3、requirements_assumptions.md 中必须明确记录“采样频率按每片 ADC 或 ADC 组的总采集事件频率解释”。同时计算如果将频率解释为每通道采样频率时的串口带宽,并指出其是否满足 921600bps、11bit/byte、10ms 一帧的约束。

4、TestBench 建立 6 个独立 AD7699 行为模型,模型必须:

- 识别 CNV;

- 接收 14bit 配置字;

- 检查 SPI Mode 3;

- 根据 ADC 编号、通道编号和样本序号生成确定性 16bit 数据;

- 模拟配置和转换结果之间的流水延迟;

- 支持四片 ADC 共用控制信号、独立输出 SDO;

- 能主动生成包含 0x5A 的样本,验证转义功能。

5、TestBench 建立完整 UART 接收和帧解析器,从 tx 引脚逐位恢复字节,检查起始位、数据位、奇校验、停止位、字节顺序、帧头、长度、转义、CRC 和帧尾。

6、至少连续运行 20 个 10ms 数据帧,检查帧间连续性、样本数量、ADC 编号、通道顺序、首帧正确性和缓存切换。

7、仿真结束必须打印清晰汇总,例如:

ADC SPI CHECK PASSED

SAMPLE COUNT CHECK PASSED

FRAME BUFFER CHECK PASSED

UART FORMAT CHECK PASSED

ESCAPE CHECK PASSED

CRC CHECK PASSED

20 FRAMES VERIFIED

TEST PASSED

任意断言失败、数据不一致、未知值、缓存覆盖、CRC 错误、奇校验错误或超时均打印 TEST FAILED,并使仿真以失败状态结束。

8、生成 VCD 波形文件,运行编译和仿真,持续修复直到编译无错误且全部自动检查通过。

验证要求:

1、验证复位期间所有输出和内部状态确定,不出现 X 或 Z。

2、验证复位释放后的 ADC 预热流程,首个发送帧不得包含无效转换结果。

3、验证 SCK 空闲电平、SDI 改变边沿、SDO 采样边沿和 14bit 配置字顺序符合 SPI Mode 3。

4、验证 ADC1~ADC4 共享 CNV、SCK、SDI,并能在同一 SPI 事务中正确接收四路独立 SDO。

5、验证 100Hz 与 500Hz 事件同时出现时均被执行,事件队列不覆盖、不丢失。

6、验证 ADC1~ADC6 每个 10ms 周期分别产生 1、1、5、5、50、20 个有效样本。

7、验证各 ADC 通道编号在配置范围内连续轮询,并且结果数据与对应通道标签正确对齐。

8、验证 AD7699 配置流水延迟不会造成通道号错一拍。

9、验证当前帧最后一次 ADC 转换不会错误写入下一帧缓存。

10、验证乒乓缓存读写银行不会同时冲突,发送中的缓存不会被采集端覆盖。

11、验证样本记录字节顺序为“标签、数据低字节、数据高字节”。

12、验证默认数据区包含 82 条记录、246 个原始字节。

13、验证数据中不存在 0x5A 时的数据区长度,及存在多个 0x5A 时转义后的数据区长度。

14、验证 CRC 标准向量结果和完整帧 CRC 均正确。

15、验证 UART 每字节为 1 个起始位、8 个数据位、1 个奇校验位和 1 个停止位。

16、验证 UART 数据位低位先发,多字节字段低字节先发。

17、验证小数分频产生的每个 bit 周期只允许在相邻两个整数时钟周期之间变化,长期平均波特率满足 921600bps。

18、验证最坏转义情况下,一帧仍能在 10ms 内发送完成。

19、验证至少连续 20 帧无样本丢失、重复、跨帧、缓存溢出或帧顺序错误。

20、检查 QSF 文件中的器件型号、顶层实体、引脚位置和 3.3-V LVCMOS 标准。

波形观察点:

clk

rst_n

rst_sync_n

frame_tick

frame_index

frame_cycle_count

tick_adc12

tick_adc34

tick_adc5

tick_adc6

shared_event_pending_adc12

shared_event_pending_adc34

shared_event_type

shared_spi_state

shared_cfg_word

shared_channel_id

shared_sdo_shift1

shared_sdo_shift2

shared_sdo_shift3

shared_sdo_shift4

cnv_shared

sck_shared

sdi_shared

sdo1

sdo2

sdo3

sdo4

cnv5

sck5

sdi5

sdo5

adc5_spi_state

adc5_channel_id

adc5_shift_reg

cnv6

sck6

sdi6

sdo6

adc6_spi_state

adc6_channel_id

adc6_shift_reg

sample_valid

sample_adc_id

sample_channel_id

sample_data

sample_frame_id

write_bank

read_bank

frame_buffer_wr_en

frame_buffer_wr_addr

frame_buffer_wr_data

frame_buffer_rd_addr

frame_buffer_rd_data

buffer_ready

buffer_busy

buffer_overrun

packet_state

payload_raw_length

payload_escape_count

payload_wire_length

escape_active

crc_value

uart_byte_valid

uart_byte_ready

uart_byte_data

baud_accumulator

uart_state

uart_bit_index

uart_parity

tx

adc_timeout_count

event_overflow_count

frame_error_count

verified_frame_count

test_pass

SECTION 03

IC Coder:专用基模与智能体工作流支撑商用工程自主推进
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图9

图 6:IC Coder 由 FPGA 专用基模与 Agent Harness 协同驱动,形成需求理解、工程执行、验证闭环与恢复交付能力。

IC Coder 由自研 FPGA 专用基模与 Agent Harness 智能体工作流组成。专用基模负责领域语义理解、工程推理、专业生成和诊断分析;Agent Harness 负责上下文组织、任务执行、工具调用、验证闭环、失败恢复与交付整理。两者协同形成持续增强的 FPGA AI 工程系统。

两层能力如何分工

IC Coder FPGA 专用基模:理解领域语义与工程约束,完成架构推理、RTL/TestBench 生成、日志与波形诊断。

IC Coder Agent Harness:装配需求、代码、规范和历史状态,执行编译仿真,记录失败样本,恢复任务并整理交付证据。

双协同价值:专用基模决定 FPGA 专业上限,Agent Harness 决定工程落地;二者共同形成持续增强的 FPGA AI 工程系统。

本案例的商业价值不在于一次性生成 11 个文件,而在于 IC Coder 能以同一执行体持续读取需求与代码、运行真实工具、观察失败、修复工程并再次验证。它把原本分散在需求、编码、工具链和验证环节的工作串成闭环,证明 AI 已经可以自主推进复杂、商用级 FPGA 项目的工程主体

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图10


如希望使用或者采购该工具产品,

请扫码填写需求信息

SECTION 04

架构先行:AI 自主推进不是直接堆代码

IC Coder 没有直接从顶层代码开写,而是先生成接口契约、时钟与复位策略、模块分区、连接矩阵、带宽预算、风险清单和交接文档。架构先行确保每个子模块都有明确输入、输出、时序假设与验证入口。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图11

图 7:六片 AD7699 多速率采集与 RS422 帧发送系统架构信息图;模块关系以本次工程源码和架构文档为准。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图12

图 8:架构阶段产出接口契约、CDC 策略、模块分区、连接矩阵、带宽预算、风险清单与交接包。

系统被拆分为 11 个可独立验证的 RTL 模块
reset_sync: 异步复位同步释放,隔离外部异步复位与内部时序逻辑。
rate_tick_gen: 生成 100 Hz、500 Hz、5 kHz、2 kHz 等采样节拍并保持 frame_index 回绕一致。
crc16_ccitt: 实现 CRC-16/CCITT-FALSE,标准向量可独立回归。
ad7699_spi_engine: 实现 AD7699 SPI Mode 3 位级时序、转换启动与 SDO 捕获。
ad7699_shared4_ctrl: 组织 ADC1~ADC4 的共享控制与结果返回。
ad7699_single_ctrl: 分别控制 ADC5、ADC6,处理独立片选与转换周期。
uart_tx_8o1: 实现 921600 bps、8O1 串行发送。
frame_buffer: 采用双缓冲组织跨帧写入、读取与银行切换。
sample_scheduler: 在多速率采样事件之间仲裁,维护样本、通道与帧标识。
frame_packetizer: 组装帧头、长度、数据、CRC 与帧尾并驱动 UART。
data_acquisition_encoder_top: 完成顶层互联、状态归集与工程接口封装。
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图13

图 9:11 个 RTL 模块生成完成,随后进入统一编译检查与 TestBench 构建。

SECTION 05

AI 全自主执行:从 11 个 RTL 模块到统一工程闭环

除任务提交、架构阶段确认和继续执行确认外,本案例的工程主体由 IC Coder 自主推进。IC Coder 按依赖顺序生成基础设施模块、接口控制器、缓存、调度器、帧打包器和顶层,再为各模块建立 TestBench。

生成过程中出现过工具路径失败、文件检索失败和局部写入失败。Agent Harness 没有因此终止任务,而是切换读取方式、恢复上下文并继续执行。长程执行的关键不是“永不失败”,而是失败后能够保留目标、定位状态并继续交付。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图14

图 10:11 个 RTL 模块通过编译检查后,IC Coder 继续读取现有工程并逐项生成 TestBench。

本次执行形成的完整链路

需求归一化 → 接口契约 → 架构分层 → RTL 生成 → 语法编译 → TestBench → 系统仿真。

读取 compile.log / sim.log → 定位模块与时序 → 修改 RTL 或 TestBench → 重新运行。

回归通过 → 整理模块、约束、文档、日志与 VCD → 形成可复核交付物。

SECTION 06

AI 全自主调试:自主发现、自主解决,持续迭代到商用交付

复杂 FPGA 工程的主要工作量通常不在首次编码,而在联调阶段:SPI 采样边沿、UART 波特率、缓存银行归属、   跨周期脉冲、非阻塞赋值语义和帧协议边界都可能造成系统级错误。IC Coder 在本案例中 不仅能自主发现问题,还能自主解决问题、自主回归验证,并根据新结果继续下一轮迭代。   

它通过持续修改 RTL、TestBench、参数和握手机制,让系统的吞吐能力、时序稳定性与协议可靠性逐轮提升,直到系统满足客户约定的商用交付要求。 

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图15

图 11:IC Coder 不止定位问题,还会自主修改 RTL/TestBench、重新仿真并持续迭代;真实证据见后文原始截图、日志与波形。

问题一:UART 波特率参数相差 1000 倍

系统仿真中 UART 无法在帧周期内发送完整数据。IC Coder 回读发送器后发现 BAUD_ACCUM_INCR 使用了 39,而当前时钟与 921600 bps 对应的累加值应为 38655。修复参数后,UART 能在加速仿真节拍下完成连续帧发送。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图16

图 12:IC Coder 从 TestBench 竞争现象继续下钻到 UART 波特率累加器,定位并修复数量级错误。

问题二:SPI Mode 3 的 SDO 驱动与采样发生竞争

AD7699 行为模型与控制器在同一仿真边沿更新和采样 SDO,导致读数错位。IC Coder 比较内部 sck_int / sck_div_count 与 TestBench 驱动时序,确认 setup 时间不足,并调整外部 SDO 驱动相位。随后又发现 16 位计数器使用 4 位 bit_count 无法表示 16,以及 shift_reg 在状态切换时被提前清零。上述问题逐项修复后,SPI Mode 3 的 23 个测试项全部通过。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图17

图 13:IC Coder 对照 DUT 与 TestBench 的边沿关系,定位 SPI SDO 的竞争与采样相位问题。

问题三:单周期采样事件在状态切换中丢失

sample_scheduler 原先只在 CHECK 状态读取 any_valid。当采样事件仅持续一个周期时,状态机到达 CHECK 前脉冲已经消失。IC Coder 增加 sample_pending 保持事件,并同步整理 next_state 逻辑,使多速率事件不会因状态转换而丢失。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图18

图 14:IC Coder 识别单周期脉冲跨状态丢失,增加 sample_pending 进行事件保持。

问题四:帧打包器跨多个状态连续发送时丢失 0x54

系统级接收端发现帧头首字节 0x5A 正确、第二字节 0x54 丢失。IC Coder 追踪 uart_byte_valid / uart_byte_ready,确认 packetizer 在 ready 持续有效时一个周期跨越多个状态,非阻塞赋值的最后结果覆盖了前一字节。修复为明确的 valid/acknowledge 握手后,每个字节仅在 UART 真正接受后推进。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图19

图 15:IC Coder 从帧头字节丢失反推到 packetizer 状态推进与 UART 握手边界。

IC Coder 的自主调试闭环,不止“发现问题”

自主发现:主动运行编译与仿真,读取日志和 VCD,定位 UART、SPI、调度与握手等系统级问题。

自主解决:直接修改参数、RTL 或 TestBench,而不是只给出排查建议。

自主迭代:修复后重新运行工具链,根据新结果继续定位和优化,让系统性能与稳定性逐轮提升。

面向商用交付:持续迭代,直到本案例的功能、性能和验证结果满足客户约定的商用交付要求。

SECTION 07

验证闭环:日志、数值和 VCD 波形可以相互复核

IC Coder 不只生成 TestBench,还在仿真阶段读取编译日志、系统日志和 VCD 信号。关键观察对象包括多路采样节拍、SPI 时钟与数据、缓存银行切换、帧索引、UART 字节流、CRC 更新、buffer_overrun 以及复位恢复。

本次系统级仿真连续运行 20 帧,在加速节拍下完成采集、银行自动切换、帧打包、协议转义、CRC 计算与 UART 发送。结果侧捕获 7942 字节,buffer_overrun 保持为 0。仿真同时生成约 648 MB 的 VCD 文件,用于复核内部时序。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图20

图 16:左侧为 IC Coder 的最终交付总结,右侧为系统级 VCD 波形;日志、数值与波形共同形成验证证据。

为什么是 18/20,而不是包装成 20/20

第 14 帧:加速仿真下 UART 发送被捕获边界切断,造成接收侧 CRC 不完整。

第 20 帧:4096 字节捕获缓冲区写满,末帧被截断。

结论:两项均属于测试环境与捕获窗口边界,不是 DUT 内部 CRC、缓存或帧协议逻辑失败。文章保留真实结果,是为了清楚展示 IC Coder 能够区分 DUT 缺陷与验证环境问题。

SECTION 08

真实项目交付:代码、验证、约束与详细文档同步到位
IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图21

图 17:IC Coder 汇总完整工程交付状态,覆盖 RTL、TestBench、行为模型、约束文件、约 2400 行详细文档与系统级验证结果。

01RTL 与验证

11 个 RTL 模块,约 2839 行 Verilog,全部通过编译检查,0 error;11 份 TestBench,约 5595 行验证代码,含 6 路 AD7699 确定性行为模型。

模块级验证覆盖 reset_sync、rate_tick_gen、CRC、SPI、UART、乒乓缓存与多速率调度;系统级验证覆盖连续 20 帧采集、缓存切换、帧封装、CRC 与 UART/RS422 发送。

02工程约束与器件文件

top.qsf 面向 EP4CE6E22I7,包含引脚与综合选项;timing.sdc 约束 25 MHz 主时钟、SPI I/O 延迟和复位假路径。

pin_summary.md 记录 18 个端口映射,便于后续综合、约束检查和板级联调。

03详细文档与可追溯证据

约 2400 行工程文档,覆盖需求梳理、接口契约、CDC 策略、模块分区、连接矩阵、带宽预算、风险清单、行为规格、编译检查报告和交接说明。

compile.log / check_report.md 记录编译命令、错误修复与最终退出码;系统 sim.log 记录 20 帧运行、CRC 结果、UART 捕获字节数与缓存状态。

sim/tb_top.vcd:约 648 MB,可复核采样、缓存、协议、发送和复位时序。

自动生成详细交付文档,直接减少人工写文档时间

IC Coder 不仅完成 RTL 与验证,还能把需求、架构、接口、约束、日志、问题修复过程和验证结论同步沉淀为可审查、可交接的详细工程文档,显著减少工程师手工汇总材料、核对结果和撰写交付报告的时间,让项目收尾与客户交接更高效。

SECTION 09

提效、交付与增收:让 FPGA 开发者因 AI 而更强大

六片 AD7699、多采样速率、SPI Mode 3、异步复位、多时钟节拍、CRC 帧协议、双缓冲和 UART/RS422 发送共同构成了一个典型的中等偏难 FPGA 子系统。这些模块彼此耦合,任何位宽、边沿、握手或状态保持错误都会在系统联调阶段暴露。

本案例表明,IC Coder 的价值已经超出“辅助写代码”:它能够围绕真实商用目标完成需求理解、架构设计、模块实现、验证环境搭建、编译仿真、问题定位、迭代修复、详细交付文档生成与工程整理。对个人开发者和项目型团队,这意味着更快形成可验证交付物,减少重复劳动、文档编写和联调占用,让工程师把时间投入架构决策、客户沟通与结果验收。在不降低工程质量和验收责任的前提下,同一团队有机会缩短项目周期、提高并行承接能力,并为更多项目收入创造空间。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图22


如希望使用或者采购该工具产品,

请扫码填写需求信息

IC Coder 帮助 FPGA 工程师提效与增收的直接价值

更快交付:IC Coder 承担长程执行、代码生成、工具调用、问题定位、迭代修复和证据整理,缩短从需求到可验证结果的链路。

文档同步完成:IC Coder 在工程推进中持续沉淀需求、架构、接口、约束、日志和验证结论,形成约 2400 行详细交付文档,显著减少人工整理与撰写时间

承接更多项目:工程师把精力集中在架构判断、客户沟通和结果验收,同等时间内有机会推进更多 FPGA 任务。

为增收创造空间:更快交付与更高工程产能,让个人开发者和项目型团队具备扩大项目承接规模与收入机会的基础。

SECTION 10

IC Coder 个人订阅版已开放

IC Coder 个人订阅版现已开放使用。希望将 IC Coder 应用于 RTL 开发、验证、工程分析和复杂项目迭代的 FPGA 开发者,可扫描下方二维码填写信息,会有工作人员跟您联系。

开始使用 IC Coder

适用方向:通信、雷达、航空航天、工业控制、图像视频、数据采集、数字信号处理及各类 FPGA/RTL 工程。

开通方式:扫描下方二维码填写信息,会有工作人员跟您联系。

产品目标:让 FPGA 开发者因 AI 而更强大,让 AI 从辅助问答进入 FPGA 工程流程,持续把复杂任务推进到可审查、可运行、可验证的状态。

IC Coder 真实商用案例:AI 全自主完成六片 AD7699 采集与 RS422 发送工程闭环图23


如希望使用或者采购该工具产品,

请扫码填写需求信息


关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
AI IC
more
沟槽栅+4.5V阈值,瑞能半导体750V SiC MOSFET领跑AI服务器电源
Karpathy从Anthropic离职了?个人简介修改引发全网猜测
Anthropic正式发布Claude Opus 5:实测接近Fable 5能力
OpenAI和Anthropic罕见联手:AI,该踩刹车了
决战8月!Anthropic甩出Fable 5.1,奥特曼携GPT-6连夜汇报
硅芯科技以AI Agent 赋能 3D IC EDA,打造全局寻优“超级大脑”
AMD重构AI服务器芯片路线Venice与Helios推动平台化竞争
卡帕西删除Anthropic简介,入职68天疑似已离职
老黄人生第二条推文!只有Anthropic还在死扛
13年碳化硅量产经验,泰科天润IDM领军高压SiC器件矩阵
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号