
简介《CPS 1848 用户手册》面向网络硬件工程师、交换芯片开发者及需要了解 IDT CPS-1848 的用户系统说明这款 RapidIO 总线路由与中央包交换芯片的功能定位、技术规格及使用注意事项。资源为 1 个 PDF 文件压缩包约 9.05MB适合离线查阅和按章节检索。手册覆盖器件概述、电气与接口参数、RapidIO 总线连接、初始化配置与调试流程、软件驱动与 API 支持、性能测试数据、典型应用案例、安全合规要求、故障排除以及固件维护升级并给出 IDT 技术支持与相关资源入口。读者可据此建立芯片选型、硬件设计、板级调试和驱动开发所需的整体认知也能在排查接口异常、理解保留字段与勘误说明时找到依据目前已有 381 人学习。文档为机密状态并受 NDA 约束部分代码示例仅作说明实际应用需结合正式授权资料与安全规范评估。1. 从背板上的 48 条 lane 说起这份手册解决的到底是什么问题机箱插上电背板上 48 条差分 lane 同时开始训练几个刀片之间要按目的器件 ID 互相投递包还要支持一对多广播、链路故障后不断业务地热插拔——这类互连网络里的核心节点通常就落在 CPS-1848 这颗中央包交换芯片上。它不是 CPU 外设也不是以太网交换芯片而是跑 RapidIO 协议的包交换机谁发给谁、从哪个端口出去、多播复制几份、拥塞时怎么反压全在这颗芯片内部完成CPU 基本不参与转发决策。这份《CPS-1848 用户手册》就是它的操作底稿从器件概览、端口与 lane 模型、包路由编程模型、交换结构一路写到包跟踪、传输调试和 PRBS 误码测试。适合两类人正在做 RapidIO 背板与板卡 bring-up 的硬件、驱动工程师以及需要判断这颗芯片能不能塞进自己交换网络拓扑的系统设计者。手册原文标注为机密文档、需签 NDA 才能拿到读之前先分清哪些章节能直接抄成配置步骤、哪些只是特性说明能省掉大量来回试板子的时间。2. 器件与端口模型把 48 条 lane 切成能用的端口拿到手册先别急着翻寄存器章节第一章的器件概览和第三章的 lane 章节必须先看明白否则后面写出来的配置大概率端口数目对不上、速率也配错。原因很实在这颗芯片的物理资源是 48 条 lane而对外呈现的是若干个逻辑端口lane 怎么分组、端口怎么编号、速率怎么协商是一层有约束的映射关系而不是「想怎么切就怎么切」。2.1 先分清它是交换芯片而不是端点CPS-1848 的定位是中央包交换Central Packet Switch意思是它自己不产生业务数据只做包的路由与转发。设备挂在它的端口上每个端点有器件 ID交换芯片根据包头的目的 ID 查路由表决定从哪个端口送出如果目的 ID 对应多个端口还需要多播表参与。这个定位直接决定了三件事。第一它的配置核心是表项和端口状态而不是数据面算法。落地时要配的主要是路由表、多播表、端口使能、流控阈值这几类东西手册第 2 章把这些都归到「编程模型」下面讲说明作者也认为这是使用者的主战场。第二它必须有独立的维护通道。芯片上电后要先能被人配置通常走 I2C、SPI 或 RapidIO 维护端口具体通道以你手上板子的设计为准。很多新手一上来就想用业务端口发配置包结果链路还没起来配置根本进不去这是典型顺序错误。第三它的错误处理是分层的。物理层看 lane 和 BER链路层看控制符号和重传事务层看包能不能被接收、路由是否正确。手册 2.11 节专门给了「包传输验证与调试」的分支判断成功传输、交换机不接受包、路由不正确、不能发送包四种现象对应四条排查路径。这个分支结构建议直接背下来比乱翻寄存器快得多。手册章节内容落地时对应动作第 1 章器件描述、关键特性、框图、典型应用确认端口数、lane 数、协议版本是否够用第 2 章端口、包路由、流控、热插拔、包跟踪写路由表、多播表、流控阈值第 3 章lane 映射、速率、上电、环回、BER板级 lane 分配与链路调试第 4 章交换结构、输入缓冲、交叉点缓冲、VoQ评估拥塞与公平性调队列参数2.2 lane 到 port 的映射与速率组合这是整份手册里最容易翻车的一节。芯片的 lane 是物理通道端口是逻辑通道一个端口可以由 1 条、2 条或 4 条相邻 lane 组成形成 1x、2x、4x 三种宽度。宽度越大单端口带宽越高但能提供的端口数量越少。手册 3.1 节给了明确的 lane 到端口映射表3.2 节讲 lane 与端口速率3.2.1 用例子演示速率变更。我一般按下面这个顺序把映射定下来再动配置。先数清楚板子上实际连了几路对端设备每路需要多大带宽决定哪些端口用 4x、哪些用 1x。对照 3.1 的映射表确认这些端口对应的 lane 编号是不是连续且属于同一组跨组的 lane 不能硬拼成一个端口。确认所有对端支持的速率集合取交集。RapidIO Gen2 常见档位是 1.25、2.5、3.125、5、6.25 Gbaud链路两端必须落在同一档不能一边 5G 一边 3.125G 还指望自动协商成功。确认参考时钟来源与 PLL 分配。3.3 节讲 lane、PLL 和端口的掉电控制没用的端口可以关掉省功耗但关之前要确认它和你在用的端口不共享 PLL。最后才写端口使能和速率配置写完做一次环回或 PRBS 验证别直接上业务包。速率切换有个细节值得单独说3.2.1 的示例里链路速率变更不是写一个寄存器就完事中间要经过端口重新初始化流程链路伙伴也要跟着重训。如果你的系统里有 Gen1 老设备混插可能需要临时禁用 IDLE22.6.1 节专门讲了关闭 IDLE2 的操作否则老设备识别不了新的空闲序列表现就是链路反复起落。提示端口宽度和 lane 分组是硬件布线决定的手册里的映射表只是告诉你「芯片允许这么分」不代表你的 PCB 也这么走线。改配置前先对一遍原理图。2.3 三类典型拓扑下的取舍手册 1.4 节把典型应用分成无线、国防航天、视频成像三类这个分法不是凑数背后的取舍逻辑不一样选型时值得对着看。无线场景看重的是多播和低延迟。基带池里一个数据流要同时送到多个处理单元多播表能省掉重复发包的带宽处理器只需要发一份。这类系统对包延迟敏感端口宽度一般给足宁可用 4x 少几个端口也不要为了端口数量把带宽切碎。视频与成像场景看重的是持续带宽和流控稳定性。多路视频流同时进交换机某一时刻某个输出端口被打满很正常如果流控阈值设得不合适要么频繁重传拖低有效带宽要么输入缓冲被一个流占满导致其他流饿死。手册 4.4.1 讲的 VoQ 公平性与饥饿避免就是为这个场景准备的后面章节会展开。国防航天场景更看重确定性和可测试性。这类系统往往要求上电自检、链路误码可量化、故障可定位所以手册第 3 章的环回和 PRBS 测试章节对这类项目价值最高第 2 章的包生成与捕获功能也用得上可以在不带业务的情况下把转发路径跑一遍。三类场景的共同点是端口模型定错了后面所有调优都是白费。所以我的习惯是先把 lane 分配、端口宽度、速率档位做成一张表跟硬件、FPGA、驱动三方对一遍签字再开始写配置代码。3. 包路由与流控单播、多播和反压怎么配端口能通只是第一步业务能不能按预期转发取决于路由表、多播表和流控三件事配得对不对。这一章是手册第 2 章的主体也是实际项目里改得最频繁的部分。手册给的是编程模型和示例不是可以直接烧进去的二进制所以要理解每个表项在解决什么问题才能在拓扑变化时自己推。3.1 单播编程模型路由表与端口使能单播的逻辑很直白包头的目的器件 ID 落进某个范围就从这个范围对应的端口出去。手册 2.3.2 把单播编程模型拆成几步落地时可以对应成下面这个流程。先确认器件 ID 宽度。RapidIO 支持 8 位和 16 位两种器件 ID8 位最多 256 个端点16 位可以到 64K。这个选择在系统设计阶段就定了交换芯片、端点、路由表宽度要一致中途改的代价很大。再确认端口使能状态。端口没使能路由表里写了也不会转发而且现象很有迷惑性包被交换机收下了但不出端口抓包看输入侧有、输出侧没有。手册 2.11.3 把这类现象归到「交换机不能接收包」和「交换机不能发送包」两个分支排查时先看端口状态寄存器再看路由表顺序别反。然后是路由表写入顺序。多端口系统里如果先把路由表配好再使能端口中间会有一段时间包能进来但路由不全可能触发错误响应反过来先使能端口再配表会有一小段时间包被丢弃。工程上一般先把端口配成禁用、写完全部表项、再统一使能这个顺序在手册的编程示例里也是这么建议的。下面这段是配置流程的示意代码走的是维护通道读写寄存器寄存器名按手册里的功能名写具体偏移以你手上版本的寄存器映射为准。# 示意单播路由与端口使能的推荐顺序 # reg_write/reg_read 走维护通道I2C/SPI/RapidIO 维护端口 def bringup_unicast(dev, port_list, route_entries): # 1. 先全部禁用避免半配置状态收包 for p in port_list: reg_write(dev, fPORT{p}_CTRL, DISABLE) # 2. 写路由表目的 ID 范围 - 出端口 for dst_lo, dst_hi, out_port in route_entries: reg_write(dev, ROUTE_DST_LO, dst_lo) reg_write(dev, ROUTE_DST_HI, dst_hi) reg_write(dev, ROUTE_OUT_PORT, out_port) reg_write(dev, ROUTE_CMD, CMD_WRITE_ENTRY) # 3. 回读校验路由表写失败是常见静默故障 for dst_lo, dst_hi, out_port in route_entries: reg_write(dev, ROUTE_LOOKUP_DST, dst_lo) got reg_read(dev, ROUTE_LOOKUP_RESULT) assert got out_port, froute {dst_lo} expect {out_port} got {got} # 4. 统一使能端口 for p in port_list: reg_write(dev, fPORT{p}_CTRL, ENABLE)这段代码的重点不在语法而在三个顺序约束。第一段禁用端口是为了消除半配置窗口第二段逐条写路由每条写完触发一次写命令因为这类表通常是间接寻址写完数据要打一个写使能第三段回读校验特别容易被跳过但路由表写入失败往往是静默的不报错、不中断只是包走错端口等业务跑起来才发现排查成本高得多第四段统一使能让所有端口在同一时刻开始工作。参数上要留意目的 ID 范围不能重叠。重叠时硬件行为取决于实现手册不会承诺「后写覆盖先写」还是「先写优先」这种不确定行为在量产系统里是隐患。我的做法是在配置生成脚本里做一次区间冲突检查冲突直接报错退出不靠人眼看。3.2 多播编程模型与事件控制符号多播解决的是「一份包、多个目的地」。手册 2.3.3 讲多播编程模型核心是一张多播表多播掩码作为索引表项里记录这个掩码对应哪些出端口。包头的目的 ID 命中多播范围时交换机查多播表把包复制到表项列出的所有端口。落地时容易忽略的是多播组成员变更的时机。业务运行中动态增删组成员如果直接改表项正在传输的包可能复制到一半新成员加入出现部分成员收到、部分没收到的情况。稳妥做法是先停止向该多播组发包改表再恢复。手册 2.5 节讲的多播事件控制符号就是为这类同步场景准备的交换机可以发一个事件控制符号通知相关端口让它们在同一时间点执行某个动作避免各端口各跑各的。多播还有两个参数要确认。一是多播表容量端口多、组多的时候表项可能不够超出容量时新组加不进去现象是新加的多播组不生效、老组正常。二是多播与流控的交互一个多播包复制到 N 个端口只要其中一个端口拥塞整个包的复制都可能被拖住这时候输入缓冲会被这个包占着影响单播流量。设计多播组时尽量让组内端口速率相近避免慢端口拖累快端口。3.3 发送端与接收端流控RapidIO 的流控有两套机制手册 2.4.1 把发送端控制和接收端控制的编程模型放在一起讲实际使用时两者是配合关系。发送端控制流控本质是接收方缓冲不够时回一个重传控制符号发送方收到后把包重发。这套机制的好处是实现简单、不需要预先协商信用坏处是拥塞时重传量大有效带宽掉得厉害。接收端控制流控则是接收方主动告诉发送方「我现在还能收多少」发送方按信用发包拥塞时平滑降速而不是靠重传硬扛。配置时最关键的参数是阈值。阈值设得高接收方缓冲快满了才反压容易丢包或者触发大量重传阈值设得低缓冲还有空间就反压带宽利用率上不去。手册没有给万能值因为最优值和端口速率、包长分布、对端处理能力都相关。工程上的做法是先按缓冲深度的一半设跑一段真实业务流量看重传计数和缓冲水位再往回调。这里有个血泪经验调流控阈值一定要看双方。只调交换机侧对端设备的发送行为没变可能还是照发不误只调对端交换机侧缓冲照样被打满。手册 2.4 节把两侧模型放一起讲就是提醒你这是双边协商的事。3.4 包跟踪、过滤与抓包手册 2.9 节讲包跟踪与过滤2.10 节讲包生成与捕获这两节是调试利器但很多人不知道有这功能出问题只会拿示波器量眼图。包跟踪可以在芯片内部记录经过的包过滤功能让你只抓关心的那几条流捕获功能则可以把包存到缓冲里再读出来分析。使用顺序建议是先开过滤只保留源 ID 或目的 ID 匹配的包否则高速流量下捕获缓冲瞬间就满再设触发条件比如「出现路由错误时开始捕获」这样能抓到故障瞬间的现场最后读缓冲注意读之前先停捕获边抓边读会读到半截包。捕获缓冲满了之后的处理方式也要确认。有的实现是覆盖最老的包有的是停止捕获。前者适合看最近发生了什么后者适合保留第一个异常现场。调之前先明确你要哪种不然抓到一堆无关包还把关键现场冲掉了。4. 上电到链路起来初始化序列、热插拔与 BER前面两章解决「配什么」这一章解决「什么时候配、按什么顺序配」。RapidIO 链路训练是个有时序要求的过程顺序错了现象千奇百怪链路时通时断、训练成功但业务不通、热插拔后端口卡死。手册第 3 章把这些拆得很细值得逐节过一遍。4.1 端口与 lane 初始化序列手册 3.4 节给的端口与 lane 初始化序列落地时可以理解成四个阶段。第一阶段是供电与时钟稳定。芯片上电、参考时钟起振、PLL 锁定这期间不能动配置。很多板子的问题出在时钟上参考时钟抖动超标、频偏超出容限表现是 PLL 偶尔锁不上链路训练随机失败重插一次又好典型的玄学故障。第二阶段是释放端口复位。3.7 节讲复位控制符号处理包括每端口复位、端口禁用/使能、产生复位请求。要注意「端口复位」和「整芯片复位」不是一回事只复位出问题的端口可以不影响其他业务这在热维护场景里很重要。第三阶段是链路训练。两端交换能力信息协商速率和宽度期间会发训练序列。这个阶段失败最常见的原因是两端配置不一致一边配 4x 一边配 1x或者速率档位不同。3.4.1 节讲信号质量优化涉及预加重、均衡这类参数长背板走线下这些参数不调眼图张不开链路能训起来但误码率高业务跑一会儿就出错。第四阶段是端口使能并上报。链路训练成功后端口才允许收发包这时候再打开端口使能然后读状态寄存器确认 link up、速率、宽度都符合预期。这一步的回读确认别省我见过链路实际跑在 1x 但配置以为 4x 的情况带宽只有预期的四分之一业务侧表现是吞吐上不去但没有任何报错。4.2 信号质量优化与环回验证信号质量优化没有通用参数只能实测。手册 3.4.1 给的是调整方向具体值要配合眼图或者误码率测试扫出来。我的做法是先在环回模式下把链路调通再上真实背板。环回分两种手册 3.5 节讲得清楚lane 环回是把发送直接接到自己的接收用来验证 SerDes 本身端口环回是把某个端口的发送环回到另一个端口的接收用来验证端口逻辑和部分交换结构。调试顺序一般是先 lane 环回确认物理层没问题再端口环回确认端口配置没问题最后接真实对端。环回测试有个坑环回模式下链路是通的、包也能发能收但不代表真实链路没问题因为环回路径短、没有背板损耗。所以环回通过只是排除了芯片和配置问题真实链路的信号质量还得靠 BER 测试。4.3 热提取与受控移除手册 2.8 节讲热提取与插入这是背板系统必备能力。热提取不是直接拔板子而是有一套受控移除流程先通知交换机某个端口要下线交换机停止向该端口发包、等待在途包完成、然后禁用端口最后才允许物理拔出。跳过这个流程直接拔现象是交换机侧端口状态卡在异常、对端设备收不到任何响应、重新插入后端口起不来。有些实现能靠复位恢复有些必须整芯片复位后者在线上系统里是不可接受的。链路伙伴插入的处理也要注意。新板插入后交换机侧要能检测到链路训练请求并重新初始化端口这依赖端口的自动检测能力。如果你的系统关掉了这个能力比如为了省功耗把空闲端口下电了插入后需要软件主动使能端口这个流程要写进运维手册否则现场人员会以为板子坏了。4.4 PRBS 与误码率测试手册 3.6 节讲误码率测试包括 PRBS 多项式、用户自定义图案、图案生成器和检查器与日志。这是量化链路质量的唯一手段别跳过。PRBS 多项式选择上常用的是 2^7-1、2^15-1、2^23-1、2^31-1 几档阶数越高越接近真实流量的随机性测试时间也越长。短链路快速验证用低阶就够长背板或者高速率建议用高阶。用户自定义图案适合复现特定故障比如某个固定数据模式导致误码用自定义图案能稳定复现。检查器与日志功能部分版本才有值得用起来它能在后台持续统计误码不用人盯着。上线前跑一段时间记录误码率基线上线后定期对比误码率突然升高往往是连接器氧化、线缆损伤的前兆。判定标准上工程上一般要求误码率低于 1e-12 才算链路健康具体阈值看你的业务容忍度。测试时长要够跑十秒钟没误码不代表没问题1e-12 的误码率意味着平均要观察很久才能看到一个错。5. 避坑与排查五类翻车现场的现象、原因和解决手册 2.11 节给了包传输调试的分支框架但真到现场现象往往比框架更模糊。这一章按我踩过的顺序列五类每条都按「现象、原因、解决」写能对号入座就直接用。5.1 链路训练不上端口状态一直不亮现象端口使能后状态寄存器始终显示未 link up或者 link up 后几秒又掉反复起落。对端设备同样看不到链路。原因通常是三类。第一类是 lane 顺序或极性接反PCB 布线时为了走线方便把差分对调换是常事芯片一般支持 lane 极性反转和 lane 顺序交换但这个功能要在初始化时配置默认不开。第二类是速率档位不一致一端配 5G 一端配 3.125G训练序列对不上。第三类是参考时钟问题频偏或抖动超标PLL 能锁但链路训练不稳定。解决顺序先用环回确认芯片侧 SerDes 正常再逐条 lane 检查极性配置然后核对两端速率配置最后量参考时钟。极性这类问题在原理图评审阶段就能发现建议把 lane 映射表做成 checklist布线完成后逐条核对。5.2 包能收不能发交换机侧计数正常但输出端口没流量现象输入端口收包计数在涨输出端口发送计数为 0路由表回读正确端口状态显示已使能。原因多半是输出端口的上游队列或流控卡住了。一种情况是对端设备没准备好接收侧一直发重传或者信用为 0交换机侧把包压在队列里出不去计数器看着在收实际没发。另一种情况是 VoQ 饥饿某个高优先级流占满了交叉点缓冲低优先级流排不上队表现就是特定流不通、其他流正常。解决先看流控状态和队列水位再看交叉点缓冲的占用情况。如果是流控问题和对端一起调阈值如果是饥饿问题检查队列权重配置是否符合预期必要时把高优先级流的突发限制住。5.3 多播复制数量不对部分成员收不到现象多播组的成员配置正确但实际只有部分端口收到包或者新加入的成员一直收不到。原因有三种。一是多播表项没更新成员变更后表没重写这种最常见。二是表项容量不够新组加不进去但配置接口没报错典型静默失败。三是多播与流控交互导致部分端口拥塞慢端口拖住了整个复制过程快端口等不到包。解决先回读多播表确认表项内容再看表项容量使用率最后检查组内端口速率是否差异过大。我的习惯是给多播配置加一条回读校验写完立刻读出来比对不给静默失败留空间。5.4 热插拔后端口卡死重新插入也起不来现象板卡热拔出后交换机侧对应端口状态异常新板插入后链路训练不启动必须整芯片复位。原因是受控移除流程没走完。直接物理拔出时交换机还在向该端口发包在途包丢了端口状态机停在中间态。部分实现能靠超时机制自恢复部分不能手册 2.8.2 讲的受控移除与复位流程就是为这个设计的。解决把受控移除做成标准操作流程拔板前先执行软件下线命令等端口状态确认禁用后再允许物理拔出。同时在驱动里加超时兜底端口异常超过一定时间自动触发端口复位避免必须整芯片复位。5.5 BER 测试误码率高但业务跑起来看着正常现象PRBS 测试误码率明显高于预期暂时不影响业务但长时间跑偶尔出现重传和丢包。原因通常是信号质量处在临界状态。均衡和预加重参数没调到位眼图勉强张开PRBS 这种满负荷随机图案会把边角情况暴露出来而业务流量包型相对规律反而看不出问题。另一个可能原因是测试图案和实际编码不匹配比如用了不合适的 PRBS 阶数或者极性设反。解决按 4.2 节的顺序重新扫均衡和预加重参数以误码率为目标而不是以「链路能起来」为目标。参数扫完后做一次长时间测试至少让误码统计有足够样本量别用十秒钟的结果下结论。6. 进阶打法用包生成/捕获做上电自检回归手册 2.10 节的包生成与捕获功能大部分人只在调试时用过其实很适合做成上电自检。思路很简单芯片自己能生成包也能捕获包那就不需要外部设备参与上电后自己对自己发一轮验证交换结构、路由表、端口链路是否都正常。我把这套自检拆成四段。第一段做物理层自检逐 lane 跑 PRBS误码率超阈值直接报错不往下走因为物理层有问题后面的结果都不可信。第二段做环回自检选一对端口做端口环回生成固定图案的包从端口 A 进端口 B 出确认交换结构通路正常。第三段做路由自检往每个已配置端口发一个目的 ID 各不相同的包用捕获功能确认它从正确的端口出去了这一步实际验证的是路由表而不是硬件通路。第四段做多播自检发一个多播包确认所有组成员都收到了且非成员没收到。# 示意上电自检的四段结构 def power_on_selftest(dev, ports, route_entries, mcast_groups): # 第一段物理层 for lane in all_lanes(ports): ber run_prbs(dev, lane, patternPRBS31, duration_s10) if ber 1e-12: return fail(flane {lane} BER {ber}) # 第二段端口环回验证交换结构通路 setup_port_loopback(dev, src_portports[0], dst_portports[1]) inject build_packet(srcports[0].devid, dstports[1].devid, payloadPATTERN) gen_and_capture(dev, inject, timeout_ms50) assert capture_hit(dev, inject), crosspoint path broken clear_loopback(dev) # 第三段路由自检逐端口验证出端口正确 for dst_lo, dst_hi, out_port in route_entries: pkt build_packet(dstdst_lo, payloadPATTERN) gen_and_capture(dev, pkt, timeout_ms50) assert capture_port(dev, pkt) out_port, froute {dst_lo} wrong egress # 第四段多播自检成员全收到、非成员零收到 for mask, members in mcast_groups: pkt build_packet(mcast_maskmask, payloadPATTERN) gen_and_capture(dev, pkt, timeout_ms50) hit set(capture_ports(dev, pkt)) assert hit set(members), fmcast {mask} hit {hit} expect {members} return ok()四段的判定标准不一样。第一段看误码率数值阈值按手册建议和业务容忍度定1e-12 是常见的健康线。第二段看包是否被捕获到是二值判断没有中间态。第三段看出端口是否等于路由表配置这里要小心捕获缓冲的过滤条件别把目标包滤掉否则会误判为路由失败。第四段用集合比较既查漏也查多多收比少收更危险说明多播掩码配错了。参数上有两个地方要调。捕获超时时间要留够太短会把正常的处理延迟误判成失败一般给 50 到 100 毫秒足够PRBS 测试时长要平衡十秒能抓到大部分问题但对 1e-12 量级的偶发误码样本量还是偏少产线自检用十秒研发验证建议跑几分钟。这套自检最大的价值是把「板子起来了吗」变成一个可量化的结果而不是靠人肉 ping 几个包看看通不通。从那以后我每次板卡 bring-up 都强制先跑一遍四段自检再动业务配置因为自检失败时定位到的层次很明确比业务跑起来之后再去猜是链路问题还是路由问题省的时间多得多。希望帮到你。本文还有配套的精品资源点击获取