打印
[Actel FPGA]

FPGA三国志--不可不看的故事

[复制链接]
1589|11
手机看帖
扫描二维码
随时随地手机跟帖
沙发
蹦蹦车|  楼主 | 2009-3-2 13:52 | 只看该作者

2

第二篇 结构篇

Altera FPGA的速度没有Xilinx的速度快,错!当然这种非对称的结构,你必须有一定的了解,才可以更好的利用。也就是要遵循:

大的数据吞吐通道应该采用横向放置规划!
控制通路采用纵向放置规划!

Altera至此以后, 一直沿袭这种结构规划。因此,如果你想有效利用好Altera的产品,就应该遵守这个规则。但是要说明的, 真正能体现性能的东西, 也许就是你意识不到的一种小东西, 就是简单的就是最好的。Altera正是凭借这个简单而高效的布局结构实现了今天的王道!昨天说到这里今天继续开始。 又有很多时候没有提Lattice,在1998年的时候, Lattice和Altera同时都有成为PLD霸主地位的意图。什么可以证明呢, 那就是谁最先推出可以ISP的宏单元超过1000个的PLD。 当然在这个游戏过程中, Altera有一些变化,他有效的将他的Flex8000的布局结构和他的MAX7000进行结合。 从而实现了在PLD规模扩大的同时可以实现

1--规模的迅速扩大, 可以比肩Xilinx的FPGA
2--局部的快速布线,和ISP,使其在获得规模优势的同时, 保持布线延迟的稳定
3--沿用过去MAX7000的适配结构和FPGA的路由, 实现两者有效的统一。 

Altera在推出他的最大的9560,具有560个宏单元的PLD,登上了无可争议的PLD冠军奖台。 







当然有的人要说, Lattice有推出1000个左右, 怎么不提呢。 正是因为这点, 导致Lattice步入歧途。 实际上,FPGA世界的游戏规则已经改变了。

MAX9000的成功得益于以下的细微结构。这个时候Altera又一次将自己的颗粒度进行了扩容。 有16个宏聚集在一起, 在实现更多位的加法, 控制, 超前进位,大的多选一的应用中, 可以将这些模块一次性放入一个LAB,同时在LAB内完成路由。 现在已经露出一种迹象。 大的规模要有, 但是速度的需求已经开始了。 所以在FPGA,CPLD的应用中,又有了新的裁判规则, 你不仅要够大, 还有够快
 






这个时候的异步设计还是非常的多, 而且板子上芯片间信号的互联也多起来了, 能够有效缩短Tsu已经成为一个重要的话题。 实际上,就是在IOC上要有DFF,来进行快速锁存, 同时也为所有进入CPLD的总线信号进行第一次整理。 怎么实现很多的异步设计, 看了下面,你就明白了。 第1点,就可以用所有信号的函数输出作为clk,第2点, 有效的将没有用完的资源很好借用给其他的宏, 来用对称的结构实现非对称的应用!用简单的结构,应变不断的变化。
 





纵观当时其他的PLD,在结构上就落后很多了。 你想, 让你和姚明来争篮板球, 如果你没有人家的身材,赢他恐怕也是嘴上的功夫了。

使用特权

评论回复
板凳
蹦蹦车|  楼主 | 2009-3-2 13:53 | 只看该作者

3

上面说到Lattice已经在极力扩大自己的身材, 但是他不是靠结构上的改变, 而是Lattice收购了Vantis,也就是AMD的一个做PLD的小部门。 当然在当时, AMD的Mach就这样并入了Lattice的家族。 新的问题就出现了。 好比我们现在有人用什么大灵通, 小灵通, GSM,CDMA,是有百花齐放的感觉, 但是Lattice就像变成了解放前的蒋介石, 没有办法很好的用一套工具来统一使用不同的器件。 而且本身Lattice自己当时的工具也是3个独立的工具拼凑在一起的。 那个年代, 用过Tango,后者Orcad的人都知道, 他们的图形输入是第一名的, 但是和MaxplusII比起来,自动识别对象链接, 以及和Office 95类似的快捷键, 用过Maxplusii的人, 让他们转用Viewlogic等workoffice等, 简直简直就是抹他们的脖子。 还有当时Lattice的销售团队,总是宣扬他们是最好的PLD, 有些人竟然有 “我认为64KROM,就可以应付未来所有的软件需求” 这样的论调, 认为PLD必将击败FPGA, 事实上, 市场的残酷,告诉他们那是个很冷的冬天。 于是他们又一次在2000年左右, 如同水淹七军一样的结局, 又急忙掉转船头, 收购了ORCA,可惜了ORCA是出自Lucent的一条好汉, 由于没有良好的软件支撑, 使得每个工程师必须像哪吒一样。 对了, 怎么会像哪吒? 因为你必须有三头六臂, 如果你公司有些产品需要从32个宏单元到2000个LE的FPGA的应用, 你就必须学习3种工具来适应它。 你想想, 你是不是一定要像哪吒呢!

这里开始讲些看来与我们主题有点不搭界的东西。 

1--两个人相遇,只握1次手
2--三个人相遇,每人都握一次, 握3次手
3--4个呢?就是2的结果加3次, 6次手
4--5个呢?                                  10次手。 
5--16个呢, 。。。。。。。天, 不少于。。。

PLD就是这样的产物, 当逻辑暮甑ピ

使用特权

评论回复
地板
蹦蹦车|  楼主 | 2009-3-2 13:54 | 只看该作者

4

在2001年, Altera推出了他们最伟大的产品, Stratix。 当时FPGA的竞争规则又发生了改变


1---Altera用TRAM的形式和Xilinx的分布式RAM和blockRAM竞争
2---Altera的PLL性能超越对手
3---布通率, 利用率,表现突出。 

但是上面这三点, 都不是决定性的。 这个时候, 数据通信对背板走线和背板总线要求已经很高了。 实际上FPGA也摇身变为系统级芯片了。 

你不仅要有大的逻辑规模, 合理的memory尺寸, 相对丰富的时钟资源, 还有就是要有高速的Serdes,缺少一项,你都会在系统级的应用中只能是亚军!

刚才说了系统级的应用,已经成了FPGA最残酷的竞争市场。 那么PLD呢, 怎么样了, 实际上自然总是物竞天择!PLD已经变为这样的几种应用了

1--输入输出的扩展!
2--简单总线或者接口的协议转换
3--对系统级的模块进行配置,或者控制。 
4--上电初期的一些管理

就像一个国家的海军一样, PLD已经成为一些简单的驱逐舰, 驰骋大洋的, 可以跨海作战的,绝对不是这样的产品可以涵盖的。 所以, 你今天喝可乐的时候, 不会有太多的选择。 偶尔的一些牌子如同过眼烟云, 很快就弹出你的视线了。

是的, 十年前我的很多朋友, 有在Quicklogic,有在Cypress,现在还有一些在不断出产品的公司, 当然, 只能是剑走偏锋。 做些细分市场还是可以继续的。但是三国鼎立的形式已经是不可撼动的事实了。
 

你到过我们的首都北京吗?到过我们的特区深圳吗?这样打比喻是因为我在深圳和北京都旅游或者工作过。实际上我也只是想借用这两个城市的布局来做个比喻。
北京是比较对称的城市, 有东直门, 西直门。 有东单, 西单等等。 总之, 他的布局就像Xilinx,无数个胡同就是像Xilinx围绕在CLB的路由线。 这些资源在Xilinx的数据手册中有:

 






但是这些胡同间的联线并不是十分充足。 特别是到了规模很大的时候。Altera的呢?在深圳的人, 如果你不认路, 很简单, 只要你走到“深南大道,滨河大道,北环大道“上的任意一条, 你就可以再从这些大道到你要去的地方。 但是前提是 ,这3条大道的宽度要够。 提示一点,这三条大道也是东西走向比较平行的。 而且整个深圳也是一个东西走向的城市, 地下再有一条地铁,在同样资源的情况下, 布通率, 和平均车速是非常好的。 而北京的地铁,是环形的。资源上不如深圳的利用率高, 这里无意于评价城市规划和道路设计。 只是比喻。

Altera的FPGA就是如同深圳的道路, 他可以让你从列上很自如的转到宽阔的行上, 然后再到达你的目的地。 所以,可以告诉你一个经验。 


1---Altera FPGA, 布通率基本在95%左右, 没有太大问题, Stratix最大的产品,有人有99%的布通率
2---Lattice的FPGA,规模超过20KLEs,布通效率。。。。有愿意透漏的吗?
3---Xilinx,规模越大,有所恶化。

另外, 这个地方也有颗粒度大带来的好处。 所以, 有些原来看似不精细的地方, 却在规则改变后, 就变得反而是犀利无比。

经常有这样的情况, 大家选择FPGA的时候, 就开始翻看每种FPGA的选型手册, 然后对资源表。 有的甚至直接说:我这个是10万门的。 你的那个是6万门的, 实际上,这些都不是很正确的评估。 如同有人说, 我家的房子4室两厅, 你家的房子3室1厅双卫生间。 到底哪个更大呢? 到底哪个更节能呢。 厨房热水器之间离得很远又是问题。

所以说, 学会正确的评价资源是很重要的。 这个时候还要参照他的结构!!板式的, 还是砖混的!!!

可能你还听说过一个使用面积的问题。 实际上, 有的房子看起来大,走道,不规则的布局,导致很多的地方都不能用!下面看个例子:


 






左边的Hops代表跨一步的意思, 就是路由转换一次的意思。 这个表什么意思呢。 就是说在S3的路由过程中, 每个路由在第一次,就可以覆盖850LEs中的一个,V5是132. 如果你的逻辑,经过4跨,同样的路径覆盖的区域A的是X的2倍。 代表什么呢


1---编译速度更快, 因为概率提高, 路由成功率提高
2---布通率更高
3---速度更快!为什么, 90nm以后, LE内部延迟已经不如路由延迟的时间长了。 所以经过的路由多,就会严重降低系统速度。 

当然还有一些好事者, 例如 (http://www.opencores.org) 有很多公开的opencore,大家可以将它们同时尝试放在A,X,L,看谁放的多, 放的快, 系统延迟更小。 这方便数据就不多说了, 可能都成为一门学科都不一定, 因为不同的比对都有benchmark的不同标准。 最终我们应该很清楚的看到。 

结构真的是很重要,我们能干, 也要看是否站在巨人。。。


不过呢, 很多时候, 我们的朋友基本上都说: 结构和我无关, 我要学好VHDL, 我要。。。。codingstyle。 这个设计属于系统工程!


FPGA的真正命门和Know How实际上,能做FPGA的公司太多了, 但是能将我们的设计通过算法成功放到这个芯片上,而且算出正确的时间和你的仿真要求的。 就不多了, 说的难听点。 有些领域甚至是没有亚军的竞争!选择小规模PLD, 那些, 不是太重要的问题。 本身就不够养活一票人的产品.
 

目前,很多人都基本上对于新的中档设计都会集中在这连个系列的竞争中, 换言之, 在中国目前以成本为导向的第一要求下, 实际上中小公司的产品选用80%是集中在这里。
 

经常有人说,为什么你们的LEs数目相同, 价格很不同。 做些解释, 一家之言。 

1---在今天,尽管是可以编程的器件,还是有不灵活的地方。 例如, 你的应用决定你对什么资源敏感
2--不同市场也有不同的关注。 没有哪个东西绝对适合, 只能是系列之间互相交叉来完成。 

比较产品有很多benchmark。 这里列举一些。 不全的地方, 可以大家补充。 

1--工艺

Cyclone III,65nm
Spartan3, 90nm

眼前看, 90nm是主流工艺, 但是未来降价空间在2009年中达到轨点, 另外,65nm的功耗不用说,35%的优势轻轻松松。 

2--设计学

CycloneIII ---LP工艺, 有很多人不理解这个,同样的设计采用LP和不采用就很大不同。 
Spartan3--没有采用

3--规模

Spartan3,3e,3a,3an, 覆盖区域不同, 从1K到40KLE左右
CycloneIII: 典型长中长焦距镜头, 5K到120K,

40K 以上, 基本上Spartan3没有产品,可以用V5, V5定义为Highend, S3定义为Lowercost
无线,DSLAM,医疗, 平均规模在25KLE到80KLEs为最多, CycloneIII解决了有无问题

4--Memory

这个是CycloneIII的幸运之处, 当时可能设计上没有这么大吧。 
9K块, 总容量绝对平均高出S为30%, 块数也同样。 Sp3dsp例外, 但是他只有两个孩子。定焦镜头。要符合你的品味。 

memory多影响到: CPU速度提到, DSP应用,DUC,DDC,FIR等,级数上可以做更多。 速度高, 还可以提高复用。 

5--乘法器, 一个18x18的乘法器,相当于350-450个LEs,当然流水的话要另外算。 

6--PLL: Altera是模拟的, X是数字的。 恢复性和收敛速度那毫无疑问,地球人都知道模拟的好。 A的时钟树更是多

7--布局: 从左到有, 基本符合多时钟域交叉, 

如: LVDS入, 经过第一级FIFO,进行时钟域交叉, 或者数据交叉, 第一次处理, 然后经过中间逻辑加工,参数重加载等,然后进入乘法器, 可以级联, 然后有通过通用逻辑池进行加工, 再次通过FIFO或者RAM来对接下一级。 

其他行可以独立构成NiosII等, 布局收敛性一流。 我尽量找个照片来显示。

使用特权

评论回复
5
蹦蹦车|  楼主 | 2009-3-2 13:54 | 只看该作者

5

第三篇 SOPC篇

 

PLD的重新定义PLD是什么, Programmable Logic Device. 当然今天应该换个称呼了


Processor+ Logic+DSP了, 世界就是这样不停的变化来维持他的稳定。 明日继续!


表1列出了Altera®可编程解决方案的主要历史创新发展过程。,可以看到在2000年的时候, FPGA的厂商已经开始在嵌入式微处理器方面开始崭露头脚。 当然起初引来的也有一片哗然。 说效率低下, 难以开发。 新鲜事物的诞生总是要经过这样的阵痛期。 

在2002年, 就有众多厂家出来声称都支持嵌入式软核CPU。 甚至也和当时流行的8051 turbo以及一些ARM进行比较。 表1. 在 PLD 业界的率先创新  
年度 技术发展里程碑 在PLD业界的率先创新 
2008 Stratix ® IV FPGA
 业界的首款40-nm FPGA,具有最高的密度、最好的性能、最低的功耗、最大的收发器带宽(高达8.5-Gbps 的收发器),并为PCI Express Gen 1/2提供硬核知识产权(IP)模块。 
2007 ArriaTM GX FPGAs
 业界的首款低成本,基于收发器的中端,协议优化的FPGA。 
2007 Cyclone® III FPGA 
 业界的首款低成本65nm FPGA,前所未有地同时实现了低功耗、低成本和高性能。 
  
2006 Stratix III FPGA 
 65nm FPGA以更高的密度和性能支持高级集成,实现更复杂的产品。 
  
2006 Quartus® II 软件 
 自然支持SDC设计约束 
  
2006 C2H 编译器 
 嵌入式处理器的首款自动ANSI C至寄存器级(RTL)生成工具 
  
2006 Stratix II GX FPGA 
 速度最快,密度最大的90nm FPGA架构,含有工作在622Mbps至6.375Gbps的20个低功耗收发器。 
  
2005 HardCopy®  II 结构化 ASIC 
 精细粒度体系结构;从90nm Stratix II FGPA原型无缝移植。 
  
2005 Cyclone II FPGA 
 90nm FPGA,业界首款低成本FPGA,成本降低30%,密度提高3倍。 
  
2004 Stratix II FPGA 
 90nm FPGA,含有名为ALM的8输入“分段式”查找表(LUT),以此替代了4输入LUT体系结构。 
  
2003 Quartus II 软件 
 可编程逻辑软件包,提供Tcl脚本支持。 
  
2003 Stratix GX FPGA 
 0.13µm FPGA,分块收发器体系结构。 
  
2003 HardCopy 结构化 ASIC 
 业界唯一原型至量产0.13µm的完整解决方案 
  
2003 Stratix FPGA 
 0.13µm、300mm、高速高密度FPGA 
  
2002 Quartus II 软件 
 可编程逻辑设计工具包,支持Linux。 
  
2002 Cyclone FPGA 
 世界上成本最低的FPGA(0.13µm) 
  
2002 SOPC Builder 
 第一款FPGA自动系统生成工具
  
2002 Stratix FPGA 
 世界上第一款带有嵌入式DSP模块的FPGA
  
2001 HardCopy APEX TM 结构化 ASIC
 FPGA 首次无缝移植至低成本结构化ASIC
  
2001 系统互联架构
 第一款自动生成的互联架构,支持同时主机/从机操作。 
  
2001 Quartus II 软件 
 推出Quartus II 设计软件 
  
2001 MercuryTM FPGA
 世界上第一款带有嵌入式收发器的0.18µm FPGA
  
2000 基于 ARM® 的 Excalibur TM 器件
 世界上第一款带有硬件嵌入式处理器的 FPGA 
  
2000 Nios® 嵌入式处理器 
 世界上第一款嵌入式处理器,适合可编程逻辑应用。 
  


 

的确, 在推出Nios soft processor 两年之后, 在我们周边也开始陆续有开始吃螃蟹的了。 但是, 还是回到结构的老话题上, 来谈论一下为什么这个时候出现了由FPGA制造商推出的CPU,实际上在1997年, 就已经有什么FPGACPU的说法甚嚣尘上。 而且也有人在Xilinx和Altera上面分别实现了原形。 

开始在FPGA嵌入大块RAM的时候, 很多人抨击这种结构,只是一个动物园里面的老虎, 实际上就是和猫差不多的杀伤力。 不可以否认, 它不如分布式RAM来的灵活, 但是它可以作为一些Cache,或者是紧耦合的RAM,还有就是它的规模在容量增加的时候, 仍旧有很好的速度, 那就可以作为CPU的Cache了。 Altera的RAM都是做在同一列的, 很方便级联。 另外总线宽度也很容易更改。 

还有就是CPU里面总是有很多总线, 内部总线。 由于丰富的行联线的存在, 在几列行资源里, 就可以轻松集成RAM,CPU要的逻辑资源,以及总线的结构。 这样,CPU也就顺利的在FPGA的世界里粉墨登场了。 虽然起初只是16bit的。


2002年, Altera的开发软件已经趋于稳定, 可以说已经很适合自己产品的结构,而且布线效率非常高。同时Altera的Nios也上升为NiosII,这个时候NiosII已经蜕变为美丽蝴蝶---一个32bit的RISC CPU。 而且Altera又采用了非对称的机构实现了革命性的Avlon互联体系。 关于这个体系的由非对称可以覆盖对称的,或不对称性的应用,我们以后详细聊。 总而言之。 如果再有一款更好结构的低成本的FPGA,那无异于在FPGA市场上刮起一场飓风!


Xilinx有Microblaze,其他的有ARM的核,实际上FPGA上实现的CPU,不是由一个CPU的内核来决定他的应用, 而是谁有最好的互联体系, 能和外围设备, 和FPGA中的RAM,乘法器, 以及其他定制逻辑更好桥接, 粘合成一个SOPC,那才是真正意思上的软核。 那究竟什么样子才好呢?

1---可以增加多个核来弥补自己速度上的缺陷, 提高更多的并行处理
2---灵活的总线结构, 可以连接高速, 慢速, master,salve的模块
3---可以将客制化的逻辑,有效集成到CPU的指令体系。
4---有面向不同应用,可以进行裁剪的CPU core
5---方便片上调试的环境
6---可以快速自动实现外设资源冲突仲裁的机制
7---可以实现以软代硬, 或者以硬代软,在软硬间转化速度与资源的偏重

如果有以上的特性, 那相信留给设计者的只有是无限的遐想空间。
我们从哪里开始讲呢, 准备从算盘开始讲CPU,很多人说,我是不是太无聊了呢?听我明天说给你听!

看似简单的算盘,绝对孕育着无比的大智慧。 看是简单的Avalon, 也同样有很多玄机。 那就是变变变。

来自Xilinx的消息,关于CPU在FPGA设计中的一些预测

 


上回说到算盘。 实际上大家应该都见过这个了不起的发明, 只是他出现在你的**中的次数越来越少 ,就忘记了, 实际上, 很多伟大之处在很早就有历史可以证明的。 看看你平时见到的算盘。 

 



算盘的妙处和Altera的LE排列布局非常相似,或许是巧合吧。
但是这里的偶然也有些必然。 或许我们有一天说, FPGA的结构最早是源于我国的。 哈哈, 玩笑啊。

1---可以增加多个核来弥补自己速度上的缺陷, 提高更多的并行处理

    一个算盘是算盘, 级联起来还是算盘, 可以横向, 也可以纵向

2---灵活的总线结构, 可以连接高速, 慢速, master,salve的模块

算盘是平行也是并行结构, 上面的有两个珠子,下面5个,2也可以代表10, 5也可以代表10,同时,进位时也可以暂时存储在高档位, 也可以留在本档。进位链和Altera LE的进位布局也是一样。

看一个更久的照片, 当然这个也可以代表Cyclone的layout了。 

 


总线结构:

全交叉,部分交叉型(适合FPGA中的嵌入总线!)

Xilinx的是共享总线型。仍旧属于传统型设计, 只是将其搬移到了FPGA中。 

 






处理器接口主要抽象为:

1--共享寄存器
2--RAMs
3--FIFOs

回头看Avalon:

 


使用特权

评论回复
6
蹦蹦车|  楼主 | 2009-3-2 13:55 | 只看该作者

6

上面看起来, 这两个softcore都差不多, 看了下面的特点, 你就有答案了。 

 

+ - Selecting Hardware Architecture 
Bus 
achieve relatively high clock frequencies 
expense of little 
no concurrency 
common arbitration unit. 
all masters compete for access to 
Full Crossbar Switch-NiosII Avalon 
concurrent transactions 
flexible 
high throughput 
large multiplexers 
more masters and slaves are added 
avoid large crossbar switches 
Partial Crossbar Switch--Avalon is okey 
connectivity to a subset of the slaves 
provides the optimal connectivity 
operates at higher clock frequencies 
interconnect fabric consumes fewer resources. 
ideal for ASIC or 
FPGA interconnect structures 
slave side arbitration. 
Streaming-Avalon Streaming Map 
high speed data transfers 
point-to-point connections between source and sink 
eliminating arbitration 
Dynamic Bus Sizing 
+ - Understanding Concurrency 
Create Multiple Masters 
■ General purpose processors, such as Nios II 
■ DMA engines 
■ Communication interfaces, such as PCI Express 
Create Separate Datapaths 
Use DMA Engines 
data width 
clock frequency 
more DMA engines 
Include Multiple Master or Slave Ports 
increases the concurrency 

  
Create Separate Sub-Systems 
+ - Increasing Transfer Throughput 
increasing the transfer efficienc 
lower frequency devices can be used 
Using Pipelined Transfers 
Maximum Pending Reads 
Selecting the Maximum Pending Reads Value 
Pipelined Read Masters 
+ - Increasing System Frequency 
strategy 
introduce bridges to reduce the amount of logic 
increase the clock frequency. 
Tatic 
Use Pipeline Bridges 
■ Master-to-Slave Pipelining 
■ Slave-to-Master Pipelining 
■ waitrequest Pipelining 
Use a Clock Crossing Bridge 
Consequences of Using Bridges 
■ Increased Latency 
■ Limited Concurrency 
■ Address Space Translation 
Reducing Logic Utilization 
+ - Reducing Power  Utilization 
Reduce Clock Speeds of Non-Critical Logic 
Clock Crossing Bridge 
Avalon-MM master ports  operating at a higher frequency to slave ports running a a lower  frequency 
■ PIOs 
■ UARTs (JTAG or RS-232) 
■ System identification (SysID) 
■ Timers 
■ PLL (instantiated within SOPC Builder) 
■ Serial peripheral interface (SPI) 
■ EPCS controller 
■ Tristate bridge and the components connected to the bridge 

使用特权

评论回复
7
xwj| | 2009-3-2 14:12 | 只看该作者

太长,占位慢慢看

使用特权

评论回复
8
linux123| | 2009-3-13 14:40 | 只看该作者

这玩意儿还整上历史了~

使用特权

评论回复
9
King1999| | 2009-3-17 15:17 | 只看该作者

楼主是转贴的吧?

原文在哪里啊?
发个链接吧
楼主转贴很辛苦,可是转贴的质量不敢恭维,有很多地方看着太费劲,因为缺少了部分内容,比如图片说明啊,表格啊等等。
感觉这是跟Altera有很深渊源的人写的(或者说就是Altera的托,呵呵)。

使用特权

评论回复
10
wujing198| | 2009-3-18 00:55 | 只看该作者

看明白了很多以前不了解的东西

尤其是对FPGA架构的那段,以前知道Xilinx是用的岛状结构,但是不清楚Altera是什么结构。今天看完以后若有所思。

使用特权

评论回复
11
yuxyoo| | 2009-3-18 17:22 | 只看该作者

就是, 原文链接是什么啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

106

帖子

0

粉丝