尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

USB转FIFO桥接芯片评估板实战:从选型到带宽优化全解析

USB转FIFO桥接芯片评估板实战:从选型到带宽优化全解析 一块SuperSpeed USB转FIFO桥接芯片的评估板看着是个不起眼的小板子但搞懂它怎么用、怎么测、怎么排查问题能帮你在做 FPGA 高速数据采集、ADC/DAC 数据搬移、软件无线电这类项目时少走一大半弯路。我这些年接触过的评估板加起来快二十种USB 转 FIFO 这种类型是最典型的“低门槛、深水区”产品——上手容易真正跑满带宽、跑稳定却不容易。这篇文章就把我在评估板选型、硬件细节、实测流程和踩坑记录里的经验完整捋一遍给正在评估这类芯片或准备基于它做板级设计的工程师一个参考。1. USB 转 FIFO 桥接芯片与评估板的核心逻辑1.1 为什么需要把 USB 协议转换成 FIFO 接口先聊明白一个根本问题USB 转 FIFO 桥接芯片到底解决了什么麻烦。USB 协议本身是分层的物理层有差分信号、端点调度、令牌包握手协议层有枚举、配置、批量传输的 CBW/CSW 机制。如果你的设计直接把 FPGA 的并行数据总线接到一个 USB 收发器上FPGA 里得自己实现完整的 USB 协议栈——这工作量相当庞大光是把 USB 3.0 的 5Gbps 物理层和链路层逻辑在 FPGA 里跑稳定就是一场灾难。桥接芯片的诞生就是把这堆麻烦全部封装掉。芯片内部集成了 USB 收发器、协议引擎、端点缓冲区、DMA 控制器和 FIFO 控制器对外面暴露一个标准的并行 FIFO 接口。你这边的 FPGA 只需要关注读信号、写信号、数据总线、空/满标志这些基础时序不需要关心 USB 这边任何协议细节。打个比方USB 就是一个快递公司的干线运输网络你只需要把包裹送到收发站FIFO 接口干线怎么调度、怎么派送是快递公司的事情。典型应用场景我列几个自己接触过的高速数据采集系统ADC 连续采样产生数据流通过 FIFO 接口灌进桥接芯片上位机用 USB 把数据拉走。相比传统 USB 转串口方案带宽从几 Mbps 直接拉高到几百 MBps。FPGA 配置与通信用 USB 转 FIFO 实现 FPGA 与 PC 之间的命令通道和数据通道分离一根 USB 线同时搞定控制指令下发和高速数据上传。便携式仪器逻辑分析仪、频谱仪前端把采样数据通过 USB 传给 PC 做处理桥接芯片免去了单独做 USB 接口 FPGA 逻辑的开发量。数据回放系统上位机产生波形数据经 USB 写入桥接芯片的 FIFO再输出给 DAC 或射频前端用于信号发生、软件无线电发射链路。这类芯片的典型速率先摆一下USB 3.0SuperSpeed理论链路速率 5Gbps加上 8b/10b 编码开销后物理层有效带宽约 4Gbps。对于 FTDI FT600/FT601 这类 SuperSpeed 转 FIFO 芯片FIFO 接口如果是 32 位宽、100MHz 时钟理论带宽能做到 400MB/s实际批量传输稳定吞吐量通常能跑到 320~380MB/s。对比传统 USB 2.0 高速方案FT2232H 这类芯片 FIFO 接口一般在 10~80MB/s 级别——差了一个数量级所以现在要做高速数据链路的都直接上 SuperSpeed 方案了。1.2 评估板在项目开发流程中的真实角色评估板不仅仅是“芯片的测试座子”它的价值分三个层次。第一层是功能验证确认芯片能不能跑、驱动能不能装、上位机能不能收发数据这一层在芯片选型阶段就很有用相当于花几百块钱先把风险排掉。第二层是参考设计评估板的原理图、PCB 布局、电源滤波、时钟处理都是原厂或者资深工程师调过的东西直接拿过来改远比自己从零画靠谱尤其是 USB 差分对、供电去耦这些容易出问题的环节参考设计就是避免踩坑的指南针。第三层是真机性能摸底在评估板上做带宽测试、长时间稳定性测试、兼容性测试测出来的数据直接决定你的产品指标能不能达标也决定要不要换用更高规格的芯片。我见过不少工程师拿到评估板就只是装个驱动、跑个例程、看到数据通了就算完事这其实浪费了评估板 70% 的价值。真正的评估工作应该在选型阶段就结合系统需求列出关键指标比如峰值带宽、持续吞吐量、延迟、CPU 占用率、驱动兼容性然后设计一套能测出这些指标的实验方案。我后面第三章写的就是完整的评估流程照着跑一遍这颗芯片能不能用在你的项目里心里基本就有底了。2. 评估板硬件架构与核心芯片细节2.1 桥接芯片的分类与选型对照市面上做 USB 转 FIFO 桥接芯片的厂商不少但真正在 SuperSpeed 级别被广泛采用的并不多。我把接触过的几类芯片整理成一张表方便你对照选型芯片系列USB 规格FIFO 数据总线FIFO 时钟速率实际吞吐量参考典型特点FTDI FT601USB 3.0 SuperSpeed32 位最高 100MHz300~380MB/s单芯片集成 USB3.0 转 FIFO同步/异步模式均支持FTDI FT600USB 3.0 SuperSpeed16 位最高 100MHz150~190MB/sFT601 的 16 位版本适合硬件接口资源有限的 FPGAFTDI FT2232HUSB 2.0 High-Speed8 位最高 60MHz同步10~80MB/s多协议引擎可配成 FIFO/UART/SPI低成本方案FTDI FT232HUSB 2.0 High-Speed8 位最高 60MHz10~40MB/s单通道比 FT2232H 少一路通道但价格更低Cypress FX3USB 3.0 SuperSpeed16/32 位可配置 GPIF最高 100MHz300MB/s可编程 GPIF 接口灵活度最高但开发复杂度也高FT601 是我用得最多的器件拿它来展开讲一下。这个芯片集成度很高内部有 USB 3.0 物理层、协议引擎、DMA 控制器和两个 FIFO 数据通路一个发送通路、一个接收通路或者说写通路和读通路。对外 FIFO 接口信号包括DATA[31:0]32 位并行数据总线。TXE_N发送 FIFO 空标志低电平有效表示当前可以写入数据。RXF_N接收 FIFO 满标志低电平有效表示当前有数据可以读出。RD_N读使能低电平有效。WR_N写使能低电平有效。OE_N输出使能低电平有效用于把数据总线从高阻态释放出来。CLK同步模式下的 FIFO 时钟由外部提供或由芯片输出。BE[3:0]字节使能信号用于掩码写入/读取的字节通道。SIWU_NShort Instruction Wake-Up用于流控唤醒一般在低功耗场景用。FT601 支持同步 FIFO 和异步 FIFO 两种模式。同步模式下读写操作以 CLK 为基准数据在时钟沿被采样带宽高但对时序约束要求也高。异步模式读写两端各用各的握手信号时序要求宽松但单次访问效率低通常拿来做低速控制和状态读取。我实际项目里大块数据搬移走同步模式少量状态寄存器访问走异步模式这样把两种模式的优势都用上了。FT601 还支持多通道配置可以把 FIFO 分成多个逻辑通道每个通道对应 USB 的一个端点实现控制和数据流分离。这个特性在需要同时传输命令和高速数据的应用里特别有用省掉了协议层分包拆包的麻烦。2.2 评估板上的电源、时钟与配置电路拿到一块评估板别急着上电先把板上的电源树看明白。一块典型的 SuperSpeed USB 转 FIFO 评估板供电流程一般是USB VBUS5V进来经过板载 LDO 或者 DC-DC 降压到 3.3V 给芯片 IO 供电再经一级 LDO 降到 1.8V 给芯片核心电压供电。有些板子还会加一个 1.05V 或者 1.2V 的核电压取决于具体芯片。供电设计里最容易踩坑的是去耦电容的布置。FT601 这类芯片内部同时有数字逻辑、PLL 和模拟收发器对电源纹波非常敏感尤其是 PLL 那一路供电。评估板上的 LDO 输出端通常会有 10uF 的体电容加多个 100nF、1nF 的高频去耦电容组合而且靠近芯片的电源引脚布置。这些布局细节在你自己画板子的时候一定要抄别觉得“多个电容而已”PLL 电源纹波大最直接的表现就是 USB 链路训练失败或者链路抖动导致持续的带宽波动。时钟方面FT601 内部有一个 PLL外部只需要一颗 25MHz 的无源晶振。有些评估板还会预留外部时钟输入接口方便测试时用信号源注入特定频率做抖动敏感性分析。注意晶振的负载电容要按晶振规格书匹配焊在不合适负载电容的焊盘上会导致频率偏差严重时芯片无法完成 USB 3.0 的链路训练。我自己遇到过一块板子晶振频率偏了 40ppmUSB 2.0 模式下能枚举但 USB 3.0 一直 link training 失败排查半天发现是晶振匹配电容被改动了换回规格书推荐值立马解决。配置电路的核心是 SPI EEPROM。FT601 上电后首先尝试从 SPI 接口加载配置EEPROM 里存储了 USB Vendor ID、Product ID、FIFO 模式、通道数量、端点类型等参数。没有 EEPROM 或者 EEPROM 为空时芯片使用默认配置默认 VID/PID 为 FTDI 的 0x0403/0x6011FIFO 模式默认为同步 32 位。评估板上的 EEPROM 是可写的原厂通常提供配套工具比如 FTDI 的 FT600/FT601 Configuration Programmer可以直接通过 USB 接口重写配置参数。这块后面实操部分会细讲。2.3 FIFO 接口信号完整性与时序规划FIFO 接口虽然看起来只是一堆并行信号但在 100MHz 跑 32 位总线时信号完整性就是头等大事。评估板的 FIFO 接口排针上如果插了杜邦线去连 FPGA那基本告别稳定传输了——线缆的寄生电容和串扰会直接毁掉信号边沿。我实测过用 20cm 的杜邦线连接 FT601 评估板和 FPGA 开发板100MHz 同步 FIFO 模式下读出数据的误码率高得没法用降到 50MHz 才勉强稳定。后来换成 1.27mm 间距的扁平排线配合 FPGA 侧的终端匹配电阻100MHz 才能跑通。评估板上 FIFO 接口的输出强度通常是可编程的。FT601 的 I/O 驱动强度寄存器可以配置为不同的 mA 等级驱动能力越强对于长走线的驱动余量越好但过冲和振铃也会越严重。这个参数的调整需要在具体板子上做覆盖测试用示波器观察信号边沿找到过冲和边沿速率的最佳折中。很多工程师忽略这个寄存器直接用默认值在长走线场景下会埋下隐患。时序规划上最核心的是建立时间和保持时间余量。同步 FIFO 模式里FT601 输出数据时会在时钟边沿前后给出一定的时序窗口你的 FPGA 内部逻辑必须在这个窗口内采样到稳定的数据。FPGA 的约束文件里要对 FEF 接口总线加上输入延迟和输出延迟约束否则综合工具无法保证时序收敛。我建议在项目起步阶段就用评估板做一次“时序预演”把 FPGA 侧的读写时序逻辑和约束写好用 Vivado 或 Quartus 做静态时序分析确保 setup/hold slack 都为正再开始设计正式产品的板卡这一步能省去后面很多调试时间。3. 从开箱到跑通带宽完整实操过程3.1 上电前的模式设置与跳线检查评估板开箱后第一件事不是插 USB 线而是把板上的跳线、拨码开关全检查一遍。FT601 评估板通常有跳线用来选择串行 EEPROM 写入使能、FIFO 总线驱动的输出使能、以及芯片复位方式。不同厂家的板子丝印含义不一样但原理相通参考板子的用户手册逐个确认即可。我习惯按这个顺序检查电源跳线确认选择的是 USB 供电还是外部供电别同时接两组电源。EEPROM 写保护有些板子有跳线控制 EEPROM 的写保护如果跳线处在写保护状态后面用配置工具改写配置会失败。FIFO 总线电平确认 FIFO IO 电平是 3.3V 还是 1.8V这个必须在连接 FPGA 前确认电平不一致会直接烧芯片或者 FPGA IO。时钟配置确认板载晶振已焊好或外部时钟输入跳线处于正确位置。这些确认做完再上电。上电后先看电源指示灯是否正常然后用 USB 3.0 线把评估板连到电脑。注意这里有个细节最好直接插在主板后置的 USB 3.0 口上不要经过 USB Hub尤其是不要经过 USB 2.0 的 Hub否则链路会降级成 USB 2.0带宽测出来会非常难看。设备接入后在 Windows 设备管理器里查看——如果 EEPROM 为空或使用默认配置系统会识别出带问号的未知设备或带感叹号的“FT601 SuperSpeed USB Bridge”设备这时候需要手动安装驱动。3.2 驱动安装与固件配置工具使用FT60x 系列的驱动体系跟传统的 FTDI VCP 驱动不太一样。FT2232H、FT232H 这类 USB 2.0 桥接芯片使用 VCP虚拟串口驱动或者 D2XX 驱动FT600/FT601 主要走 D3XX 驱动这是一套专门为 SuperSpeed 传输设计的 DLL 驱动提供了同步/异步读写接口支持重叠 I/O可以在用户态直接拿到非常高的传输带宽。安装驱动的步骤不复杂从 FTDI 官网下载 D3XX 驱动包动态库和 INF 文件。由于 FT60x 芯片枚举后没有自带 Windows 内置驱动设备管理器里会呈现为未知设备或者带感叹号的 USB 设备。右键设备选择“更新驱动”手动指向驱动包目录系统会自动安装。安装完成后设备管理器里会生成一个名为“FT601 SuperSpeed USB Bridge”之类的设备节点后面的 vender ID 就是 0x0403product ID 默认是 0x6011。驱动装好之后再装一个 FT600/FT601 Configuration Programmer。这个工具通过 USB 接口直接读写芯片内部寄存器和外部 EEPROM可以修改USB Vendor ID / Product ID / 厂商字符串 / 序列号字符串FIFO 接口模式同步/异步、单通道/双通道、16 位/32 位端点类型批量还是同步批量通道配置信息电源参数远程唤醒、自供电/总线供电调试阶段建议先不急着改 EEPROM保持默认配置跑一遍基本功能。等基本链路确认没问题之后再把最终需要的配置写进 EEPROM。因为 EEPROM 写错了可能会导致芯片按照错误的模式枚举排障会多花时间。3.3 环路测试与 FPGA 侧 FIFO 读写逻辑基础驱动搞定后下一步是跑通数据链路。最有效的验证手段是环路测试上位机发数据写进 FT601 的发送 FIFOFPGA 端把它读出来再写回接收 FIFO上位机再读回来把发送和接收数据对比看有没有误码。FPGA 侧的逻辑以同步 FIFO 模式为例写时序大概是这样的核心状态机等待TXE_N为低说明发送 FIFO 未满。置低WR_N在CLK上升沿把数据总线上的数据写入 FIFO。持续按 burst 方式打出数据直到 FIFO 满或数据写完。WR_N拉高回到等待状态。对应例子的 Verilog 片段写一下// 同步 FIFO 写状态机32位数据总线 always (posedge clk or negedge rst_n) begin if (!rst_n) begin wr_n 1b1; data_out 32h0; state IDLE; end else begin case (state) IDLE: begin wr_n 1b1; if (!txe_n fifo_valid) begin // fifo_valid 是上位机有数据要发的标志 data_out tx_data; state WRITE; end end WRITE: begin if (!txe_n) begin wr_n 1b0; // 保持写使能有效 data_out tx_data; end else begin wr_n 1b1; state IDLE; end end endcase end end读时序的逻辑类似只是判断标志换成RXF_N读信号换成RD_N// 同步 FIFO 读状态机 always (posedge clk or negedge rst_n) begin if (!rst_n) begin rd_n 1b1; oe_n 1b1; state IDLE; end else begin case (state) IDLE: begin rd_n 1b1; oe_n 1b1; if (!rxf_n rx_ready) begin rd_n 1b0; oe_n 1b0; state READ_FIRST; end end READ_FIRST: begin rd_n 1b0; oe_n 1b0; state READ_DATA; end READ_DATA: begin rx_data data_bus; // 在时钟沿采样数据 rd_n 1b1; oe_n 1b1; state IDLE; end endcase end end从这段代码能看出两个关键点第一读数据时RD_N拉低后要过一个时钟周期数据总线才稳定所以不能在拉低RD_N的同一个时钟沿直接采样总线必须等一拍这个时序取决于芯片数据手册上RD_N低电平到数据有效之间的延迟参数。第二OE_N的作用是控制数据总线方向不拉低的话数据总线始终处于高阻态读了也白读。环路测试上位机这边建议直接用 FTDI 提供的 C#/C 例程改一版设置一个大块缓冲区比如 16MB发起异步写然后再发起异步读比对两端数据一致性。第一次跑通的时候大概率会发现数据错位或者丢包别慌下一章详细说排查思路。3.4 带宽实测与寄存器级参数调整环路测试通过后就可以做正式的带宽测试了。我通常测三组数据峰值写入带宽PC 到 FPGA 方向、峰值读取带宽FPGA 到 PC 方向、双向同时传输带宽。测试用的上位机程序核心代码用 D3XX 的异步批量读写接口每次请求的数据块大小很关键。我做过一个对照实验请求块大小从 512B 到 8MB 变化时带宽差异非常明显。测试结果大致是这么个规律请求块大小写入带宽MB/s读取带宽MB/s备注512 B4538大量小请求协议开销占主导64 KB260240中等块大小效率明显提升1 MB340310接近峰值带宽16 MB350320实际测试上限进一步增大无明显收益之所以小请求块带宽惨不忍睹主要是因为 USB 协议本身的开销。USB 3.0 批量传输虽然不限制单个请求的数据量但每个 USB 请求包都有头包、令牌、握手等协议套件请求太小的话有效数据占比低总线利用率就上不去。这就是为什么上位机设计时一定要用大块、异步、多请求排队的方式来发数据。FPGA 端 FIFO 逻辑也要配合长 burst 写读减少 FIFO 接口上握手信号翻转的频率。FT601 内部有 FIFO 大小可配置选项不同的配置会影响 burst 效率。评估板默认配置通常是每个通道 16KB 的端点 FIFO在需要大吞吐的场景可以把它调大最大值看具体芯片手册这样单次 burst 能传输的数据更多节点切换逻辑的频率就会降低带宽能再提几个百分点。不过要注意FIFO 增大也会增加整个链路的延迟对延迟敏感的应用要权衡。还有一个容易被忽略的寄存器USB 3.0 U1/U2 低功耗状态。如果芯片在空闲时进入 U1/U2 低功耗状态恢复时需要一定的唤醒时间在非连续传输的场景下会产生额外的延迟和带宽损失。实测中把 U1/U2 禁用掉后连续小块传输的吞吐量提升了大约 8%。代价是功耗略有上升对于 USB 供电的设备来说评估阶段可以禁产品化阶段看功耗和性能的平衡点再决定。4. 评估与调试中的常见问题排查4.1 USB 枚举异常与链路训练失败这是 SuperSpeed 设备最常见的问题症状表现为设备插上后没有任何反应或者设备管理器里永远只枚举成 USB 2.0 设备。排查顺序我固定是线缆和接口 → 电源 → 晶振 → EEPROM 配置。第一换线。USB 3.0 线材质量参差不齐有些线内部只有 USB 2.0 的两对数据线插上就只能跑 High-Speed。手上备一根带 SuperSpeed 认证标识的短线作为排查基准。插口方面前面说过直接怼主板后置 USB 3.0 口别经 Hub。第二检查供电。用万用表量评估板上 3.3V、1.8V 是否正常特别是刚上电那几秒有没有欠压启动。第三用示波器测 25MHz 晶振波形如果起振不稳定或者频率偏差过大直接换晶振。第四如果 EEPROM 里被写入了不当配置芯片可能按错误的模式枚举这时候把 EEPROM 清空恢复默认配置再测。USB 3.0 链路训练失败还有一个隐藏的可能原因信号质量。如果 USB 3.0 差分对眼图闭合严重训练必然失败但评估板本身的 PCB 通常不会有布线问题真正要怀疑的是线缆。我排查过一块客户板子现象是每次插拔后 50% 概率枚举失败最后发现是客户用了劣质 USB 线插入角度稍偏就会让接收端信号质量下降。4.2 驱动安装失败与设备节点异常Windows 下驱动安装失败常见有两种一是设备管理器里是“未知设备”INF 文件手动指定也报错二是设备能识别但显示“该设备无法启动代码 10”。第一种情况先确认设备 VID/PID 是多少。右键设备属性→详细信息→硬件 ID如果是USB\VID_0403PID_6011之类的说明芯片在用默认 IDD3XX 驱动应该能对上如果显示 VID_0000 或者奇怪的 VID说明 EEPROM 内容已经被改过了先清空恢复默认。另一种可能是 Windows 的驱动签名策略阻止了驱动安装这个需要你的驱动包是否经过微软签名评估阶段可以在系统启动项里选择禁用驱动签名强制或者直接把驱动包安装路径加入信任。第二种“代码 10”情况Z 常见的原因是芯片固件和驱动版本不匹配。FT60x 有一版内部固件ROM 代码D3XX 驱动也有版本要求老驱动配新芯片或者反过来都可能导致设备启动失败。解决方法是把 D3XX 驱动更新到最新版本或者试装历史稳定版本。Linux 环境下D3XX 驱动是 modules 形式需要按内核版本编译安装如果出现insmod报错或者设备节点不出现优先检查内核头文件版本和 DKMS 是否启用。4.3 数据丢失与 FIFO 时序违例环路测试中最常见的异常是数据对不上要么丢了几个字要么多出来几个字。概率性出现的小批量丢失要怀疑 FIFO 接口时序大量丢失或者规律性丢失优先怀疑上位机读写逻辑。时序问题的排查工具必须是逻辑分析仪靠示波器多看几个信号真不行——你能看到单个信号边沿但是看不到跨时钟域握手是否满足建立保持时间。用逻辑分析仪把CLK、WR_N、RD_N、TXE_N、RXF_N、DATA[31:0]全部拉出来抓一段连续传输数据重点检查几处写数据时DATA在CLK上升沿建立时间和保持时间是否满足芯片数据手册要求。TXE_N拉高FIFO 满的时序和WR_N拉低写数据的时序是否在同一个时钟周期撞上。如果TXE_N拉高的同一拍还在写入数据这一拍的数据可能已经丢失。burst 结束和开始的握手间隙看WR_N拉高到下一次拉低之间是否有足够时间让硬件把 FIFO 状态更新到位。FPGA 侧修复思路有三类。第一是调整逻辑在采样前插入寄存器延迟用双寄存器链去采样标志信号消除亚稳态。第二是改约束给 FIFO 接口的输入路径加上set_input_delay输出路径加set_output_delay让综合工具知道外部时序约束把布局布线优化到位。第三是降频把 FIFO 接口时钟从 100MHz 降到 80MHz 或者 50MHz牺牲一部分理论带宽换取稳定性——在评估阶段如果是用来验证功能先降频到稳定后面正式产品再去死磕时序优化。4.4 上位机读写效率与操作系统层面的坑带宽不达标这件事很多时候芯片和 FPGA 端都没问题瓶颈出在上位机。我遇到过几个典型场景用了同步读、同步写的方式每次读写都等上一次完成这样 USB 链路上一半时间在空转。改成异步接口、多请求同时排队之后带宽翻倍。缓冲区太碎。每次从缓冲区取 4KB 发一次不如提前把数据拼成 1MB 的连续块再发减少操作系统的调度开销和 D3XX 驱动的请求处理开销。上位机 CPU 占用过高导致 D3XX 驱动的内部缓冲被拖死。解决方法是提高线程优先级或者换成多线程流水线架构数据采集线程、USB 发送线程、数据接收线程分离开。操作系统层面Windows 的 USB 控制器驱动对分块大小有内部记忆某些老主板加扩展卡会出现异常换一个 USB 控制器通道往往就好了。这几条我基本每次做高带宽 USB 项目都会踩一遍特别是“同步读写导致带宽减半”这个坑新手最容易掉进去。拿 FT601 评估板做实验你会发现同一块板子、同一台电脑上位机从同步读改成异步读带宽可以从 150MB/s 直接跳到 320MB/s这不带一点悬念的。5. 评估板使用中的几点经验补充5.1 用评估板做产品化前的风险排查除了功能验证评估板更大的价值在于做产品化前的风险排查最重要的两个维度是长时间稳定性和兼容性。建议把环路测试程序改成连续运行 24 小时甚至 72 小时的版本数据校验一帧都不能错。我跑过一次评估板持续 48 小时后出现了一次性丢数据排查下来是上位机的缓冲管理有内存泄漏长时间跑导致重试逻辑失效——这种问题只有跑耐力测试才能暴露跑几分钟是测不出来的。兼容性方面多换几台电脑测。重点测不同厂商的 USB 主控制器芯片Intel、AMD、以及扩展卡上的主控对协议细节的容忍度是有差异的。用评估板做一轮兼容性矩阵测试能提前知道你的驱动和上位机在部分主控上会不会有兼容性问题。5.2 把评估板变成系统级验证平台评估板不要用完就丢进抽屉。如果你要开发的系统是 FPGA USB 桥接芯片的架构完全可以把评估板当作早期系统验证平台FPGA 开发板加评估板把要跑通的数据链路逻辑先在评估板上验证完了再移植到正式产品板上。我在做 16 通道 ADC 采集系统的时候就是这样先在评估板上把数据流时序、上位机协议、DMA 调度全部调试完毕等正式板卡回来第一次上电就通了减少了直接在正式板上排障的压力。5.3 谨记评估板的“非理想性”评估板毕竟是参考级设计不等于产品级设计。它的排针引线、测试点、跳线会造成额外的寄生参数FIFO 接口实测时序会比产品板更差一些。所以你在评估板上测出来的带宽如果刚好压线达标正式产品设计时就要警惕产品板如果布局布线略有瑕疵可能就过不了。反过来评估板上测出的时序余量如果非常充裕产品板做起来才比较安心。我的经验是评估板实测带宽至少要比产品目标带宽高 20% 以上这个项目指标才算稳。最后再补充一句SuperSpeed USB 转 FIFO 桥接芯片的评估板表面上看是个低风险的小工具但牵扯到的知识面横跨 USB 协议、并行总线时序、驱动开发、上位机性能优化和信号完整性。把这套评估流程完整走通一遍你收获的不只是一颗芯片能不能用的结论更是一套可复用的高速数据传输系统开发方法论。遇到新项目、新芯片这套方法论能让你更快地逼近问题本质。
返回列表