基于JFM7VX690T80的8通道光纤数据采集平台设计与实现
1. 项目缘起与整体方案设计1.1 为什么选JFM7VX690T80做光纤数据平台做高速光纤数据采集这行十几年从早期的Virtex-5到后来的Kintex-7再到近几年国产化替代浪潮下接触复旦微的JFM7VX690T80我最大的感受是选型这件事从来不是单纯比参数而是看生态、供货和你的团队能不能在有限时间内把板子跑通。JFM7VX690T80这颗芯片逻辑单元规模在690K级别内置大量DSP Slice和高速收发器定位上对标的是中高端FPGA市场适合做多通道高速接口汇聚、实时预处理这类活儿。8通道光纤数据处理平台核心需求其实就三条第一8路光纤同时接收每路速率不能太低至少得跑到2.5Gbps以上才能满足大多数工业相机、雷达前端或者高速传感器的数据吞吐第二数据进来之后要在FPGA内部做实时处理比如解帧、校验、缓存、打包不能全靠上位机第三板卡上要有FMC接口方便后续扩展AD/DA子卡或者换不同的前端模块。这三条需求叠加起来对FPGA的收发器数量、内部BRAM容量、DSP资源以及IO Bank的灵活性都有硬性要求。JFM7VX690T80在这几个维度上的表现我实测下来是够用的。它内部有几十个高速收发器通道支持线速率覆盖到10Gbps以上做8通道2.5G到6.25G的光纤接收完全不在话下。BRAM资源也足够开8路独立的乒乓缓存每路深度做到64KB以上没有压力。更重要的是复旦微这两年在工具链和IP支持上进步明显虽然和国外大厂比还有差距但常规的SelectIO、GT收发器、FIFO、DDR控制器这些IP已经比较成熟踩坑成本比前几年低了不少。1.2 平台整体架构拆解整个平台我把它分成四个功能域来设计这样划分的好处是每个域的职责清晰调试的时候可以分模块隔离问题不会一上来就全局抓瞎。第一域是光前端域。8路光纤模块通过SFP或SFP光笼子接入每路光模块的差分信号直接进FPGA的GT Bank。这里要注意光模块的参考时钟最好从外部晶振单独给不要图省事从FPGA的普通时钟管脚分频过去因为GT收发器对参考时钟的抖动非常敏感普通IO分出来的时钟抖动指标根本达不到要求。我一般会在板子上放一颗专用的低抖动时钟芯片比如Si5341这类给每个GT Quad提供独立的参考时钟。第二域是FPGA内部处理域。数据从GT收发器出来之后先过物理编码子层做8b/10b解码或者64b/66b解码然后进到自定义的帧解析模块。帧解析这块我习惯用状态机加FIFO的方式做状态机负责找帧头、判长度、验CRCFIFO负责跨时钟域缓冲。8路数据如果每路都独立处理资源消耗会比较大所以我会在中间加一级通道复用把8路数据按时间片轮转汇聚到一条高速总线上再统一送进DDR缓存或者直接打包上传。第三域是FMC扩展域。FMC接口我选的是HPC标准因为HPC的管脚定义更丰富支持更多的差分对和时钟资源。FMC子卡通过连接器接入FPGA的普通IO Bank和部分GT Bank这样既能接低速的AD/DA子卡也能接高速的ADC子卡做数据回传。FMC的LA和HA差分对在PCB布线时要严格等长差分阻抗控制在100欧姆否则高速信号眼图会很难看。第四域是控制与上传域。FPGA处理完的数据通过PCIe或者千兆以太网传到上位机。如果板卡是插在工控机里的PCIe是最优选择带宽大、延迟低如果是独立设备那就走以太网方便远程部署。控制通路我一般用UART或者SPI做低速配置用来下发参数、切换工作模式、读取状态寄存器。1.3 方案选型背后的取舍逻辑有人可能会问为什么不用Zynq或者带ARM硬核的方案非要纯FPGA加软核这个问题我当初也纠结过。Zynq的好处是软硬协同方便PS端跑Linux做协议栈和上层应用很舒服。但在这个项目里8通道光纤数据的实时性要求很高数据流不能有太大的抖动PS和PL之间的AXI总线在重负载下会有不确定的延迟。纯FPGA方案虽然开发量大一些但数据通路完全在PL内部闭环时序可控确定性好。另一个取舍是FMC接口的版本。FMC标准有LPC和HPC之分LPC只有160个管脚HPC有400个。我选HPC是因为后续可能要接高速ADC子卡需要更多的GT对和时钟资源。虽然HPC连接器贵一些PCB层数也要增加但从扩展性角度看这笔投入值得。实测下来HPC连接器在6.25Gbps速率下的信号完整性明显好于LPC串扰控制也更容易。还有一个细节是电源方案。JFM7VX690T80的内核电压一般是0.9V或1.0V具体看速度等级。GT收发器的供电是1.0V和1.2V辅助电压有1.8V、2.5V、3.3V等多档。我建议用一颗多路输出的PMIC配合LDO来做PMIC负责大电流的内核和GT供电LDO负责对噪声敏感的辅助电压。上电时序一定要严格按照数据手册来内核先上然后辅助最后IO顺序错了芯片可能起不来。2. 核心细节解析与实操要点2.1 GT收发器配置的关键参数GT收发器是整个光纤接收链路的第一道关口配置不对后面全白搭。JFM7VX690T80的GT收发器IP在工具链里叫GT Wizard或者类似的名称配置界面和Xilinx的Transceiver Wizard逻辑类似但参数命名和默认值有差异不能照搬。线速率设置。假设光模块是2.5Gbps的那GT的线速率就设2.5Gbps。但要注意如果协议里用了8b/10b编码实际有效数据速率是2.5Gbps乘以0.8也就是2Gbps。这个换算关系在配置IP的时候要心里有数不然算出来的FIFO深度和总线带宽会对不上。参考时钟频率。光模块的参考时钟一般是125MHz或者156.25MHz具体看模块规格。GT IP里要填正确的参考时钟频率工具会自动计算PLL的分频倍频参数。如果填错了GT要么锁不住要么线速率偏得离谱。我遇到过有人把125MHz填成100MHz结果GT死活不锁定查了半天才发现是参考时钟频率填错了。编码方式。8b/10b编码兼容性好很多工业协议还在用但开销大。64b/66b编码开销小适合更高速率但对齐和同步的逻辑要复杂一些。8通道光纤平台如果每路速率不高用8b/10b就够了如果速率跑到6Gbps以上建议上64b/66b。均衡器设置。GT接收端有CTLE和DFE均衡器用来补偿信道损耗。光纤链路的损耗一般比较小CTLE开低档就够了。但如果光模块到FPGA之间的PCB走线比较长或者连接器质量一般可能需要适当提高CTLE的增益。这个参数没有万能值最好用眼图扫描功能实测调整。下面是一个GT收发器IP的关键配置参数表供参考参数项推荐值说明线速率2.5Gbps / 6.25Gbps根据光模块规格确定参考时钟125MHz / 156.25MHz必须与板卡实际晶振一致编码方式8b/10b 或 64b/66b低速用8b/10b高速用64b/66bCTLE增益低档起步光纤链路损耗小不需要高增益DFE视情况开启PCB走线长时开启发送预加重低档光纤链路一般不需要强预加重环回模式近端PCS环回调试时先用环回验证链路2.2 8通道数据汇聚的架构设计8路光纤数据同时进来如果每路都独立开一个DDR缓存通道资源肯定不够。我的做法是在FPGA内部做两级汇聚。第一级是通道级缓冲。每路GT出来的数据先过一个异步FIFO写时钟是GT恢复出来的用户时钟读时钟是FPGA内部的系统时钟。这个FIFO的深度不用太大512深就够了主要作用是跨时钟域和吸收突发。FIFO的almost_full和almost_empty信号要引出来做流控防止溢出。第二级是轮询汇聚。8个通道的FIFO非空信号接到一个轮询仲裁器上仲裁器按固定顺序或者带优先级的顺序从各个FIFO读数据拼成一条32位或64位宽的总线。轮询的好处是公平每个通道都能分到带宽如果某个通道数据量特别大可以改成带权重的轮询给那个通道多分配时隙。汇聚之后的数据流有两种去向一种是直接进DDR做缓存等一帧完整的数据收齐后再打包上传另一种是边收边传通过PCIe或以太网实时上传。前者适合大数据块、对完整性要求高的场景后者适合流式数据、对延迟敏感的场景。我一般两种都做通过寄存器切换工作模式。这里有个坑要注意跨时钟域FIFO的复位。GT恢复时钟在链路未锁定的时候是不稳定的这时候如果FIFO的写时钟在跳而复位信号是异步给的很容易出现亚稳态。我的做法是等GT的rx_locked信号拉高之后再用恢复时钟同步一个复位释放信号确保FIFO在时钟稳定后才开始工作。2.3 FMC接口的管脚分配与约束FMC接口的管脚分配是个细致活分配不好后面改板子都来不及。HPC连接器有400个管脚其中LA00到LA33是34对差分HA00到HA23是24对差分还有HB和其他的。我一般把低速控制信号放在LA上高速数据放在HA上因为HA的走线通常更短、损耗更小。管脚分配的时候要对照FMC标准文档和FPGA的Bank分布来。JFM7VX690T80的IO Bank有几十个每个Bank的电压标准可以独立设置。FMC子卡如果是1.8V的LVDS那对应的Bank电压就要设成1.8V如果是2.5V的LVCMOS那就设2.5V。同一个Bank里不能混用不兼容的电压标准这个在分配管脚的时候就要规划好。约束文件里要写清楚每个FMC管脚的IO标准、驱动能力、上下拉和时序约束。差分对要加set_property DIFF_TERM TRUE来启用内部差分终端如果外部已经有终端电阻了内部终端就要关掉否则阻抗不匹配。时序约束方面FMC接口如果跑高速要加set_input_delay和set_output_delay具体值根据子卡的时序手册来。我踩过的一个坑是FMC连接器的金属外壳接地问题。如果外壳接地不好高速信号的回流路径不完整眼图会明显变差。后来我在PCB上把连接器外壳通过多个过孔接到地平面问题就解决了。这个细节在原理图评审的时候很容易被忽略但实测影响很大。2.4 时钟树与复位策略时钟和复位是FPGA设计的两条命脉尤其是多通道高速系统时钟树设计不好时序根本收敛不了。时钟方案。板卡上我一般放一颗主时钟芯片输出多路同源时钟一路给FPGA的系统时钟一路给GT的参考时钟一路给DDR的参考时钟还有一路给FMC子卡。所有时钟同源的好处是相位关系确定跨时钟域处理简单。如果不同源那就得用异步FIFO或者握手同步逻辑复杂度上升。FPGA内部用MMCM或者PLL生成各个模块需要的时钟。系统时钟一般跑200MHz到300MHzGT用户时钟根据线速率和位宽来定。比如2.5Gbps线速率、8b/10b编码、16位内部位宽那用户时钟就是2.5G除以10再除以16等于15.625MHz。这个时钟频率不高但如果是64b/66b编码、64位位宽用户时钟就会高很多。复位策略。我习惯用同步复位异步复位同步释放。具体做法是外部复位信号先经过一个复位同步器用系统时钟采样两拍然后释放。这样既避免了亚稳态又保证了复位释放的时序。每个时钟域都要有自己的复位同步器不能一个复位信号到处跑。GT收发器的复位有专门的时序要求一般要等参考时钟稳定、PLL锁定之后才能释放GT复位。工具链生成的GT IP通常会提供一个复位控制器按它的时序来就行不要自己瞎改。3. 实操过程与核心环节实现3.1 工程创建与IP核配置第一步是建工程。复旦微的工具链和Xilinx的Vivado在操作逻辑上类似但界面和菜单有差异。新建工程的时候要选对芯片型号JFM7VX690T80有几个速度等级和温度等级选错了后面编译会报错。工程建好之后先配置GT收发器IP。在IP Catalog里找到GT相关的IP双击打开配置界面。第一页选线速率和参考时钟第二页选编码方式和位宽第三页选均衡器和预加重。配置完之后生成IP工具会自动生成一个示例工程和约束文件模板。接下来配置FMC接口的IO。FMC的管脚约束我一般单独写一个XDC文件里面按Bank分组每个Bank的电压标准写在文件开头。差分对的约束用set_property PACKAGE_PIN和set_property IOSTANDARD来指定注意差分对的P端和N端要成对出现。DDR控制器IP也要配置。JFM7VX690T80支持DDR3和DDR4具体看板卡上焊的是什么颗粒。配置的时候要填颗粒的容量、位宽、时序参数这些参数从颗粒的数据手册里抄。时序参数填错了DDR要么不工作要么工作不稳定跑一段时间就出错。3.2 数据接收链路的代码实现数据接收链路的核心是一个状态机加FIFO的结构。下面是一个简化的Verilog代码框架展示8通道数据接收的基本逻辑// 单通道接收状态机 module ch_rx_fsm ( input wire clk, input wire rst_n, input wire [31:0] rx_data, input wire rx_valid, output reg [31:0] fifo_wdata, output reg fifo_wren ); localparam S_IDLE 3d0; localparam S_HEAD 3d1; localparam S_DATA 3d2; localparam S_CRC 3d3; reg [2:0] state; reg [15:0] pkt_len; reg [15:0] cnt; always (posedge clk or negedge rst_n) begin if (!rst_n) begin state S_IDLE; fifo_wren 1b0; cnt 16d0; end else begin case (state) S_IDLE: begin fifo_wren 1b0; if (rx_valid rx_data[31:16] 16hAA55) state S_HEAD; end S_HEAD: begin pkt_len rx_data[15:0]; cnt 16d0; state S_DATA; end S_DATA: begin fifo_wdata rx_data; fifo_wren 1b1; cnt cnt 1b1; if (cnt pkt_len - 1) state S_CRC; end S_CRC: begin fifo_wren 1b0; state S_IDLE; end default: state S_IDLE; endcase end end endmodule这个状态机做的事情很简单找帧头0xAA55读长度搬数据最后等CRC。实际项目中CRC校验要单独做一个模块状态机在S_CRC状态等CRC模块的校验结果校验通过才把数据标记为有效。8个通道各有一个这样的状态机输出接到各自的FIFO。FIFO的读侧接轮询仲裁器仲裁器把8路数据汇聚成一路。仲裁器的代码也不复杂就是一个计数器循环选通// 8通道轮询仲裁器 module rr_arbiter ( input wire clk, input wire rst_n, input wire [7:0] fifo_empty, output reg [2:0] ch_sel, output reg rd_en ); always (posedge clk or negedge rst_n) begin if (!rst_n) begin ch_sel 3d0; rd_en 1b0; end else begin if (!fifo_empty[ch_sel]) begin rd_en 1b1; ch_sel ch_sel 1b1; end else begin rd_en 1b0; ch_sel ch_sel 1b1; end end end endmodule这个仲裁器每个时钟周期换一个通道如果当前通道的FIFO非空就读一个数据出来。实际项目中要考虑FIFO的读延迟rd_en拉高之后数据要下一个周期才出来所以ch_sel要延迟一拍再切换。3.3 DDR缓存与数据打包汇聚后的数据流进DDR缓存。DDR控制器的用户接口一般是一个AXI或者Native接口我习惯用Native接口逻辑简单直接。写DDR的时候要注意地址对齐32位数据按4字节对齐64位按8字节对齐。如果数据长度不是对齐的末尾要补零。DDR的带宽要算够。8通道每路2Gbps有效数据总共16GbpsDDR3如果跑800MHz、64位位宽理论带宽是800M乘以2乘以8等于12.8GB/s换算成比特是102.4Gbps远远够用。但实际带宽受刷新、切换Bank等因素影响能到理论值的60%到70%就不错了。所以16Gbps的输入DDR带宽至少要留一倍余量。数据打包上传的时候我一般加一个包头包含通道号、帧长度、时间戳和校验和。上位机收到之后按包头解析把8个通道的数据分开。时间戳用FPGA内部的自由计数器生成精度到微秒级就够了。3.4 上板调试与眼图测试代码写完、综合实现通过之后先别急着接光纤用GT的近端环回模式自测一遍。近端环回是把GT的发送端直接接到接收端不经过光模块和光纤。如果环回能收到数据说明GT配置和内部逻辑没问题如果环回都不通那肯定是GT配置或者时钟有问题。环回通过之后接上光模块和光纤用误码仪或者眼图仪测眼图。眼图测试的时候要让光模块持续发送PRBS码型FPGA这边用GT的内部误码检测功能统计误码率。眼图张开度好的话误码率应该低于1E-12。如果眼图闭合先检查参考时钟的抖动再检查PCB走线的阻抗和损耗。我实测下来JFM7VX690T80的GT在2.5Gbps下的眼图裕量还是比较大的6.25Gbps下就需要仔细调均衡器了。CTLE和DFE的参数组合有好几种建议做一个参数扫描找到误码率最低的组合。4. 常见问题与排查技巧实录4.1 GT链路不锁定的排查思路GT链路不锁定是最常见的问题表现是rx_locked信号一直不拉高或者拉高之后又掉下来。排查的时候按以下顺序来第一步查参考时钟。用示波器或者频谱仪测GT参考时钟管脚看频率对不对、幅度够不够、抖动大不大。参考时钟的幅度一般在800mV到1.2V之间如果幅度太小GT的PLL锁不住。第二步查光模块。光模块的供电、使能信号、I2C通信都要正常。有些光模块需要先通过I2C配置才能正常工作如果I2C没通光模块不出光GT自然锁不住。第三步查GT配置。线速率、参考时钟频率、编码方式这三个参数必须和实际一致。我遇到过有人把参考时钟频率填成100MHz实际晶振是125MHzGT死活不锁定改过来就好了。第四步查PCB。GT的差分走线如果阻抗不连续、损耗太大信号到接收端已经烂了GT也锁不住。这种情况只能改板子或者降低线速率试试。4.2 DDR读写不稳定的解决方法DDR读写不稳定表现为写进去的数据读出来不对或者跑一段时间之后出错。原因一般有三个时序参数不对、PCB走线不等长、电源噪声大。时序参数要从颗粒的数据手册里抄不能凭经验填。不同厂家的颗粒时序参数差异很大同一厂家不同批次的颗粒也可能有差异。如果时序参数拿不准可以用DDR控制器IP自带的校准功能让工具自动扫描找到最佳采样点。PCB走线方面DDR的数据线、地址线、控制线要严格等长差分时钟对要匹配。如果走线不等长建立保持时间裕量不够高速下就会出错。电源噪声方面DDR的供电要干净去耦电容要靠近颗粒放置电源平面的阻抗要低。4.3 FMC子卡识别异常的排查FMC子卡插上去之后FPGA读不到子卡的信息或者读到的信息不对。先查FMC连接器有没有插紧连接器的锁扣有没有扣好。然后查I2C总线FMC标准里子卡的EEPROM是通过I2C访问的如果I2C不通就读不到子卡信息。I2C不通的原因一般是上拉电阻没焊、地址冲突、或者总线被拉死。用示波器测I2C的SCL和SDA看有没有波形。如果没有波形查FPGA的I2C控制器有没有使能如果波形异常查上拉电阻和总线电容。还有一个坑是FMC的电源使能信号。有些子卡需要FPGA给一个电源使能信号才上电如果这个信号没给子卡不上电自然识别不到。这个信号一般在FMC标准里有定义查一下子卡的原理图就能找到。4.4 常见问题速查表问题现象可能原因排查方法解决措施GT不锁定参考时钟频率错误示波器测参考时钟修正IP配置GT不锁定光模块未使能查I2C通信配置光模块GT不锁定PCB损耗过大眼图测试降低线速率或改板DDR读写错误时序参数不对用校准功能扫描修正时序参数DDR读写错误电源噪声大测电源纹波增加去耦电容FMC识别不到I2C不通测SCL/SDA波形查上拉电阻FMC识别不到电源使能未给查子卡原理图补上使能信号数据丢包FIFO溢出查almost_full信号加大FIFO深度数据丢包仲裁器带宽不够算总线带宽提高系统时钟时序不收敛时钟树设计差看时序报告优化时钟约束4.5 几个容易被忽略的实操细节第一个是GT的复位时序。GT IP生成的复位控制器有固定的时序要求比如参考时钟稳定后要等多少个周期才能释放PLL复位PLL锁定后要等多少个周期才能释放PCS复位。这些周期数在IP文档里有说明不要自己缩短缩短了GT可能工作不稳定。第二个是FIFO的复位。跨时钟域FIFO的复位信号要同步到写时钟域和读时钟域各一份不能一个复位信号同时给两边。异步复位同步释放的电路要做两份分别用写时钟和读时钟同步。第三个是DDR的刷新。DDR颗粒需要定期刷新刷新期间不能读写。如果刷新周期设置得太长数据会丢失太短又影响带宽。一般按颗粒手册的推荐值来不要随意改。第四个是电源的上电时序。JFM7VX690T80对上电时序有要求内核先上然后辅助最后IO。如果顺序错了芯片可能起不来或者内部逻辑混乱。用PMIC的时候要配置好各路的使能顺序和延时。第五个是散热。JFM7VX690T80满负荷跑的时候功耗不小尤其是GT全开、DSP全用的情况下。板子上要加散热片必要时加风扇。我实测过不加散热片的话芯片表面温度能到七八十度长时间跑会降频甚至出错。5. 性能优化与扩展思路5.1 时序收敛的优化技巧8通道光纤平台逻辑资源用得比较多时序收敛是个挑战。我的经验是先保证时钟树干净再优化关键路径最后做物理约束。时钟树方面尽量用全局时钟资源少用区域时钟。全局时钟的偏斜小时序好收敛。如果某个模块的时钟频率不高可以用区域时钟节省全局资源。MMCM的输出时钟要加create_generated_clock约束让工具知道时钟的频率和相位关系。关键路径优化方面先看时序报告里哪条路径裕量最小然后针对性地加流水线。组合逻辑太深的路径插一级寄存器就好了。跨时钟域的路径用异步FIFO或者握手同步不要让工具去优化。物理约束方面把相关的逻辑放在同一个时钟区域减少跨区域的走线延迟。GT的收发器位置是固定的相关的逻辑要放在GT附近的区域。DDR控制器要放在DDR管脚附近的Bank。5.2 从8通道扩展到16通道的思路如果后续要扩展到16通道架构上不用大改主要改三个地方GT IP的通道数、仲裁器的输入数、DDR的带宽。GT IP支持多通道配置把通道数从8改成16就行。仲裁器从8输入改成16输入轮询逻辑不变。DDR带宽要重新算16通道每路2Gbps就是32GbpsDDR3可能不够了要上DDR4或者用两片DDR3并联。FMC接口如果不够用可以再加一个FMC连接器或者用高速连接器替代。电源方面16通道的功耗比8通道高不少PMIC的电流能力要重新评估。5.3 光纤协议的兼容性设计不同厂家的光纤协议帧格式不一样如果每换一种协议就改一次FPGA代码维护成本太高。我的做法是把帧解析模块做成参数化的帧头、帧长度字段的位置、CRC多项式都做成可配置的寄存器。上位机通过控制通路下发配置FPGA按配置解析不同的协议。这样设计的好处是一个bit流支持多种协议现场切换不用重新烧录。代价是帧解析模块的逻辑复杂一些资源消耗增加。但对于需要兼容多种前端设备的平台来说这个代价是值得的。5.4 调试接口的设计调试接口我一般留三个UART、JTAG和ILA。UART用来打印调试信息和下发简单命令JTAG用来烧录和在线调试ILA用来抓内部信号波形。ILA是调试神器但也很吃BRAM资源。我一般只在关键路径上挂ILA比如GT的输出、仲裁器的输入输出、DDR的读写接口。抓波形的触发条件要设好不然抓一堆无用数据分析起来费劲。UART的波特率一般用115200够用了。打印信息要分级错误、警告、信息分开调试的时候只看错误和警告不然刷屏太快看不清。6. 个人实操体会与建议这个平台我从方案设计到跑通前后花了大概三个月时间中间踩了不少坑。最大的体会是国产FPGA的工具链虽然进步很快但和国外大厂比还有差距遇到问题的时候资料少、社区小很多时候只能自己啃文档、做实验。所以做国产FPGA项目一定要留足调试时间不能按国外芯片的经验来估工期。另一个体会是高速接口的调试仪器比代码重要。眼图仪、误码仪、高带宽示波器这些仪器能帮你快速定位问题。没有仪器光靠ILA抓波形效率太低。我建议做高速光纤平台的团队至少要有一台带宽足够的示波器和一台误码仪。还有一点是FMC接口的兼容性要在设计初期就考虑好。不同厂家的FMC子卡管脚定义可能有差异电压标准也可能不同。设计的时候要留一些跳线或者可配置的电阻方便适配不同的子卡。我见过有人板子做回来发现FMC子卡的电压标准和FPGA Bank不匹配只能飞线解决很难看也不可靠。最后分享一个小技巧GT的参考时钟可以用外部时钟芯片的差分输出直接给不要经过FPGA内部的普通IO。外部时钟芯片的差分输出抖动小、相位噪声低直接进GT的参考时钟管脚链路稳定性会好很多。这个细节在原理图设计阶段就要确定后面改起来很麻烦。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →