搜索
bottom↓
回复: 0

【正点原子FPGA连载】第一章FPGA简介

[复制链接]

出0入234汤圆

发表于 2020-11-3 16:03:54 | 显示全部楼层 |阅读模式
本帖最后由 正点原子 于 2021-1-25 18:43 编辑

1)实验平台:正点原子达芬奇FPGA开发板
2)购买链接:https://detail.tmall.com/item.htm?id=624335496505
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_dafenqi.html
4) 正点原子官方B站:https://space.bilibili.com/394620890
5)对正点原子FPGA感兴趣的同学可以加群讨论:
905624739 点击加入: QQ群头像.png

100846rel79a9p4uelap24.jpg    

100846f1ce1fg14zbg0va4.png
第一章FPGA简介



FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是一种半定制的数字集成电路。FPGA凭借其灵活性高、开发周期短、处理性能强(并行)等特点,广泛应用于通信、图像处理、医疗等领域。随着科技的进步,FPGA在人工智能、5G和自动驾驶等领域也有一席之地。本章节我们将会详细介绍什么是FPGA,让大家对FPGA有个初步的认识。
本章包括以下两个部分:
1.1初识FPGA
1.2深度剖析FPGA


1.1初识FPGA
其实我很好奇当大家拿到我们的开发板,看到板子上镶嵌的那一块黑不溜秋的像饼干一样的控制芯片时,大家心里会想些什么。犹记当年我第一次见到这玩意时,忍不住用手在上面不停的抚摸,你还别说,这么贵的玩意摸起来手感真挺不错的,很有质感,可是没几分钟,新鲜劲一过我就开始犯愁了,我买的到底是个什么玩意儿,有啥用啊,我学它干嘛?现在回想起来感觉恍如昨日,感叹一句岁月不饶人啊,所以我在写这篇文章的时候就在想大家第一次拿到FPGA开发板后是啥反应,是不是像当初的我一样,乍见欣喜,然后满脑袋问号,迫切的想了解到底什么是FPGA呢,它有什么用呢,我学了它后又能干什么呢,以后有前途吗?莫急,听我娓娓道来。
1.1.1.FPGA是什么
首先我们先来聊聊什么是FPGA,其实这个问题不好回答,简单点来说FPGA(Field Programmable Gate Array,即现场可编程门阵列)它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路个数有限的缺点,这就是FPGA。我相信这种回答很少有人能够理解,因为它涉及到的专业名词和知识面是非常广泛的,我要是把这段话就作为对FPGA的简介一定会被大家痛骂,大家可能会觉得什么玩意儿,你这说的还不如我百度呢,糊弄我吧。也确实,我自己当初看到这句话时也是一脸懵,还是不明白自己手上拿的这个“黑块块”到底是个啥,所以接下来我准备好好跟大家唠唠你们手中的“黑块块”到底是个什么东西。
我先给大家上一张图(图片来源于网络),如图 1.1.1面包板搭建数字时钟电路所示,这张图应该是一个电子类专业的学生作品。
新建RTF 文件972.png

图 1.1.1面包板搭建数字时钟电路

从图中我们可以看到该电路是一个数字时钟,里面有晶振、蜂鸣器、数码管,以及各种74 系列的小芯片,这些小芯片能够实现的功能也就相当于几个逻辑门,如果你亲自动手去搭建它,肯定会知道搭建该电路是非常麻烦的,一根线一根线去连接,不断对照原理图,生怕搭错一根线,搞不好心态就崩了。大家可以想一想,这仅仅是搭建一个简单的数字时钟就这么多跟线了,密密麻麻的,看起来就很复杂。如果我们想要实现更加复杂的功能,那么我们就要犯难了,因为我们需要使用几十个或者上百个这种专用小芯片来完成,这样就会使得电路板的布局、布线变得困难,还会极大的影响到整个系统的性能,而且搭出来的电路体积庞大,也不美观,实用性极差,所以这种方式毫无疑问是不行的。为了改变这种情况,大家就想到了一个办法,那就是通过专用集成电路(ASIC)来实现,我们可以将要实现的特定需求交给 ASIC 厂商,让他们设计出一个专用集成电路芯片,这样就可以解决这种问题了。比如说,我们把数字时钟功能要求交给 ASIC 厂商,ASIC 厂商就会根据数字时钟功能要求设计出一个专用集成电路芯片,这一个小小的芯片它其实就完成了我们数字时钟电路功能。这种方法虽然很好,但同时也会带来很多其他的问题,比如说,生成周期长,芯片难验证,芯片内部电路不可以更改等等问题。于是人们就开始不断地去探索,看看有没有什么办法既能让我很好的实现功能,又能解决定制电路的不足。
新建RTF 文件1628.png

图 1.1.2 Xilinx A7系列FPGA芯片

于是FPGA应运而生(如图 1.1.2),于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,属于可编程逻辑器件 PLD(Programmable Logic Device)的一种。真正意义上的第一颗FPGA 芯片 XC2064 为 Xilinx 所发明,这个时间差不多比著名的摩尔定律晚 20 年左右,但是 FPGA一经问世,后续的发展速度之快,超出大多数人的想象。为什么FPGA能如此迅速的发展呢,这与它本身独特的优越性密不可分。我们要知道一块专用的ASIC定制集成电路的芯片他在出厂前功能就已经定死了,就拿上面的数字时钟来举例,假如我现在拿到一块全新的数字时钟芯片,那么我只需要看看厂家给我提供的数据手册,看看它是怎么操作的,可能仅仅只需要给它通上电然后简单的配置一下它就能工作了。它的功能是不可更改的,就只能跑个数字时钟,而且它内部电路是啥样的我也不知道,虽然用起来简单,但是缺乏灵活性,但FPGA就不一样了,它在出厂的那一刻是不具备任何功能的,可以说就是一张白纸。你可以在这张白纸上肆意创作,你想要它实现数字时钟的功能没问题,通过特定的编辑语言,例如Verilog、VHDL等硬件描述语言将数字时钟的逻辑编写好,下载到FPGA内部,它就会生成一个数字时钟的电路,去完成数字时钟的功能。当你不想要这个功能了,没问题你可以随时将内部程序擦除,或者用一个新的设计去覆盖原有的设计。理论上我们可以用FPGA去生成一个任意我们想要的功能,正是基于这种强大的可编辑能力,FPGA近年来越来越受到市场的认可,在未来FPGA的适用范围必将越来越广阔。
1.1.2 FPGA有什么用
跟大家聊完了什么是FPGA之后,我想大家应该对自己手中那个“黑方块”有了一定的主观印象,至少明白了它和普通芯片的区别了,那么接下来,另一个问题就出现了,FPGA我能用它做什么,我学会它之后在未来我可以从事哪些领域的工作。这个问题我觉得是大家最想要关注的问题,因为兴趣是最好的老师,如果你发现FPGA所能从事的领域你压根就不感兴趣,那么你去学习它就有可能是在浪费时间,比如你将来想当个会计,你想当个医生那你学习FPGA就没有什么必要了,当然也不排除你在学习过程中突然发现了它的魅力,从而喜欢上它。
FPGA所能应用的领域大概可以分成六大类:
1)通信领域:FPGA在通信领域的应用可以说是无所不能,得益于FPGA内部结构的特点,它可以很容易地实现分布式的算法结构,这一点对于实现无线通信中的高速数字信号处理十分有利。因为在无线通信系统中,许多功能模块通常都需要大量的滤波运算,而这些滤波函数往往需要大量的乘和累加操作。而通过FPGA来实现分布式的算术结构,就可以有效地实现这些乘和累加操作。尤其是Xilinx公司的FPGA内部集成了大量的适合通信领域的一些资源比如:基带处理(通道卡)、接口和连接功能以及RF(射频卡)三大类:
(1)基带处理资源
基带处理主要包括信道编解码(LDPC、Turbo、卷积码以及RS码的编解码算法)和同步算法的实现(WCDMA系统小区搜索等)。
(2)接口和连接资源
接口和连接功能主要包括无线基站对外的高速通信接口(PCI Express、以太网MAC、高速AD/DA接口)以及内部相应的背板协议(OBSAI、CPRI、EMIF、LinkPort)的实现。
(3)RF应用资源
RF应用主要包括调制/解调、上/下变频(WiMAX、WCDMA、TD-SCDMA以及CDMA2000系统的单通道、多通道DDC/DUC)、削峰(PC-CFR)以及预失真(Predistortion)等关键技术的实现。
总而言之只要你FPGA学的好,在通信领域你绝对可以大展身手。
新建RTF 文件3269.png

图 1.1.3 FPGA无线通信

2)数字信号处理领域:在数字信号处理领域FPGA同样所向披靡,主要是因为它的高速并行处理能力。FPGA最大优势是其并行处理机制,即利用并行架构实现数字信号处理的功能。这一并行机制使得FPGA特别适合于完成FIR等数字滤波这样重复性的数字信号处理任务,对于高速并行的数字信号处理任务来说,FPGA性能远远超过通用DSP处理器的串行执行架构,还有就是它接口的电压和驱动能力都是可编程配置的不像传统的DSP需要受指令集控制,因为指令集的时钟周期的限制,不能处理太高速的信号,对于速率级为Gbps的LVDS之类信号就难以涉及。所以在数字信号处理领域FPGA的应用也是十分广泛的。

新建RTF 文件3618.png

图 1.1.4 FPGA数字信号处理

3)视频图像处理领域:随着时代的变换,人们对图像的稳定性、清晰度、亮度和颜色的追求越来越高,像以前的标清(SD)慢慢演变成高清(HD),到现在人们更是追求蓝光品质的图像。这使得处理芯片需要实时处理的数据量越来越大,并且图像的压缩算法也是越来越复杂,使得单纯的使用ASSP或者DSP已经满足不了如此大的数据处理量了。这时FPGA的优势就凸显出来了,它可以更加高效的处理数据,所以在图像处理领域在综合考虑成本后,FPGA也越来越受到市场的欢迎。
新建RTF 文件3903.png

图 1.1.5 FPGA图像处理

4)高速接口设计领域:其实看了FPGA在通信领域和数字信号处理领域的表现,我想大家也已应该猜到了在高速接口设计领域,FPGA必然也是有一席之地的。它的高速处理能力和多达成百上千个的IO决定了它在高速接口设计领域的独特优势。比如说我需要和PC端做数据交互,将采集到的数据送给PC机处理,或者将处理后的结果传给PC机进行显示。PC机与外部系统通信的接口比较丰富,如ISA、PCI、PCI Express、PS/2、USB等。传统的做法是对应的接口使用对应的接口芯片,例如PCI接口芯片,当我需要很多接口时我就需要多个这样的接口芯片,这无疑会使我们的硬件外设变得复杂,体积变得庞大,会很不方便,但是如果使用FPGA优势立马就出来了,因为不同的接口逻辑都可以在FPGA内部去实现,完全没必要那么多的接口芯片,在配合DDR存储器的使用,将使我们接口数据的处理变得更加得心应手。
新建RTF 文件4349.png

图 1.1.6高速光纤接口眼图

5)人工智能领域:如果大家比较喜欢关注科技板块的新闻的话最近一定会被5G通信和人工智能充斥眼球,确实21世纪已经不知不觉走到了2020年,在这20年间,人工智能迅速发展,5G的顺利研发也使人工智能如虎添翼,可以预见,未来必将是人工智能的天下。FPGA在人工智能系统的前端部分也是得到了广泛的应用,例如自动驾驶,需要对行驶路线、红绿灯、路障和行驶速度等各种交通信号进行采集,需要用到多种传感器,对这些传感器进行综合驱动和融合处理就可以使用FPGA。还有一些智能机器人,需要对图像进行采集和处理,或者对声音信号进行处理都可以使用FPGA去完成,所以FPGA在人工智能系统的前端信息处理上使用起来得心应手。
新建RTF 文件4711.png

图 1.1.7 FPGA与人工智能

6)IC验证领域:IC这个词大家可能一听到就觉得特别高深,不是凡人所能触及到的,而IC设计更是一些神人才能胜任的工作。不可否认的是IC设计门槛确实比较高,但是我们也没必要把它过于神话,其实简单点来讲我们可以拿PCB设计来与之比较,PCB是拿一个个元器件在印制线路板上去搭建一个特定功能的电路组合,而IC设计呢是拿一个个MOS管,PN节在硅基衬底上去搭建一个特定功能的电路组合,一个宏观一个微观。PCB如果设计废了大不了重新设计再打样也不会造成太大损失,但是如果IC设计废了再重新设计那损失就很惨重了,俗话说大炮一开,黄金万两,那么在IC领域光刻机一开黄金万两也不是吹的,光刻胶贵的要命,光刻板开模也不便宜,加上其他多达几百上千道工序,其中人力、物力、机器损耗、机器保养,绝对是让人肉疼的损失,所以IC设计都要强调一版成功。保证IC一版成功就要进行充分的仿真测试和FPGA验证,仿真验证是在服务器上面跑仿真软件进行测试,类似ModelSim/VCS软件;FPGA验证主要是把IC的代码移植到FPGA上面,使用FPGA综合工具进行综合、布局布线到最终生成bit文件,然后下载到FPGA验证板上面进行验证,对于复杂的IC我们还可以给他拆成几个部分功能去分别验证,每个功能模块放在一个FPGA上面,FPGA生成的电路非常接近真实的IC芯片。这样极大的方便我们IC设计人员去验证自己的IC设计。
新建RTF 文件5367.png

图 1.1.8 华为麒麟芯片

1.1.3FPGA的现状
根据统计以及预测,在2013年全球FPGA的市场规模在45.63亿美元,至2018年全球FPGA的市场规模缓步增长至63.35亿美元。但随着目前5G时代的进展以及AI的推进速度,预计FPGA在2025年有望达到约125.21亿美元。对于全球FPGA的市场分布而言,FPGA的下游应用地区分布而言,目前最大的为亚太地区,其占比39.15%,北美占比33.94%,欧洲占比19.42%,而至2025年,亚太地区的占比将会继续的提高至43.94%,此间原因也主要因为下游应用市场在未来的主要增长大部分集中在亚太地区。按照FPGA下游应用来分拆FPGA的市场规模的话,可以看到对于2018年而言,通讯领域所用FPGA占据约40%,消费电子占据23%,为最大的应用下游;根据预测至2025年时最大的应用领域将是汽车,占比29%,而数据中心以及工业的占比也将直线上升至13%和19%(数据来源于中国产业信息网)。
新建RTF 文件5841.png

图 1.1.9 FPGA全球市场规模走势

看完了市场规模我们再来看看FPGA的生产厂商,我总结了目前国际市场是两大巨头和一群小弟,很遗憾的是我国的国产FPGA也是属于小弟一列,但是我相信随着时间的积累技术和经验的积累中国FPGA发展将会越来越好。其中两大巨头分别是Xilinx和Altera:
Xilinx(赛灵思):它是全球领先的可编程逻辑完整解决方案的供应商。Xilinx研发、制造并销售范围广泛的高级集成电路、软件设计工具以及作为预定义系统级功能的IP(Intellectual Property)核。客户使用Xilinx及其合作伙伴的自动化软件工具和IP核对器件进行编程,从而完成特定的逻辑操作。Xilinx公司成立于 1984年,Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。眼下Xilinx满足了全世界对 FPGA产品一半以上的需求。Xilinx产品线还包括复杂可编程逻辑器件(CPLD)。在某些控制应用方面CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的时间并加快了产品面市的速度,从而减小了制造商的风险。与采用传统方法如固定逻辑门阵列相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。由于Xilinx器件是只需要进行编程的标准部件,客户不需要像采用固定逻辑芯片时那样等待样品或者付出巨额成本。Xilinx产品已经被广泛应用于从无线电话基站到DVD播放机的数字电子应用技术中。
传统的半导体公司只有几百个客户,而Xilinx在全世界有7500多家客户及50000多个设计开端。其客户包括Alcatel、Cisco Systems、EMC、Ericsson、Fujitsu、Hewlett-Packard、IBM、Lucent Technologies、Motorola、NEC、Nokia、Nortel、Samsung、Siemens、Sony、Oracle以及Toshiba。目前Xilinx比较火的具有代表性的FPGA芯片有Spartan7系列、Artix7系列、Kintex7系列、Virtex7系列以及Zynq系列,其中Zynq系列内嵌了ARM核,可以实现嵌入式和FPGA的联合开发(想了解更多关于Zynq系列的内容可以参考正点原子领航者开发板资料),Spartan7系列、Artix7系列、Kintex7系列和Virtex7系列可以参考本章1.2.3Xilinx 7系列芯片简介小节内容,我们达芬奇的开发板选择的是Artix7系列的FPGA芯片(数据资料来源于网络)。
新建RTF 文件7427.png

图 1.1.10 Xilinx公司logo

Altera(阿尔特拉):它秉承了创新的传统,是世界上“可编程芯片系统”(SOPC)解决方案倡导者。Altera结合带有软件工具的可编程逻辑技术、知识产权(IP)和技术服务,在世界范围内为14000多个客户提供高质量的可编程解决方案。我们新产品系列将可编程逻辑的内在优势、灵活性、产品及时面市和更高级性能以及集成化结合在一起,专为满足当今大范围的系统需求而开发设计。在2015年,英特尔宣布以167亿美元收购FPGA厂商Altera,这是英特尔公司历史上规模最大的一笔收购。随着收购完成,Altera将成为英特尔旗下可编程解决方案事业部。Altera使用最广泛的是Cyclone系列FPGA芯片,我个人觉得它用的比较多的是Cyclone IV和Cyclone V系列的FPGA芯片,其中大家需要注意一下Cyclone V,因为该系列包括6种型号,有只含逻辑的E型号、3.125-Gbps收发器GX型号、5-Gbps收发器GT型号,还有集成了基于双核ARM®的硬核处理器系统(HPS)的SE、SX、STSoC型号。除了Cyclone系列,Altera公司还有Agilex系列Stratix系列、Arria系列、Max系列:
Agilex系列:首款采用10纳米工艺和第二代英特尔 Hyperflex FPGA 架构,可将性能提升多达40%,将数据中心、网络和边缘计算应用的功耗降低40%。英特尔Agilex SoC FPGA还集成了四核Arm Cortex-A53处理器,可提供高集成系统级水平的开发,该系列属于超高性能的SoC芯片,一般用于高端市场。
Stratix系列:这个系列也是属于高端高性能产品,拥有高密度、高性能和丰富的IO特性,可最大程度地提高系统带宽,实现多种多样的功能设计。主要应用于Open CL高性能计算、高速数据采集、高速串行通讯高频交互等领域。
Arria系列:这个系列定位为中端产品,它兼顾性能和成本,是一款性价比非常高的FPGA芯片,它内存资源丰富,信号处理能力和数据运算性能相对来说都还不错,并且收发器速度高达 25.78Gbps,支持用户集成更多功能并最大限度地提高系统带宽。此外,Arria V 和英特尔 Arria 设备家族的 SoC 产品可提供基于 ARM 的硬核处理器系统(HPS),从而进一步提高集成度和节省更多成本。
Max系列:这个系列是比较低端的,准确的说这个系列是CPLD产品,主要是应对成本敏感性的设计应用,虽然低端但是它功能也还是可圈可点的,它提供支持模数转换器 (ADC) 的瞬时接通双配置,和特性齐全的 FPGA 功能,尤其对各种成本敏感性的大容量应用进行了优化,要注意的是除了MAX 10以外,该系列的其他产品都是CPLD。
新建RTF 文件8791.png

图 1.1.11 Intel公司旗下的Altera

剩余的小弟们这里就不做过多介绍了,因为所有小弟们加在一起的市场份额只有一成左右,远不是两大巨头所能比的,在这里提一句我国的FPGA厂商主要有上海复旦微,紫光同创、京微雅格、高云半导体、上海安路、西安智多晶等,但是同国外领先厂商相比,国产FPGA厂商不论从产品性能、功耗、功能上都有较大差距。革命尚未成功,同志们仍需努力。
1.1.4 FPGA的就业前景
一路说下来我想大家们对于FPGA到底是什么,有什么用以及现状都有所了解了,那大家可能就要问了,学习FPGA就业前景怎么样呢?好找工作吗?我这里也很诚实,很真实的跟大家聊聊就业情况。其实相比较那些纯粹搞软件的程序员来讲呢,FPGA的就业面没有他们广,因为各行各业都需要软件信息技术的支持,哪怕你开个小超市,你还需要一个收银系统,而FPGA在适用面上就窄了一些,它大多用于图像算法、信号处理、IC验证、汽车控制等领域,不像软件开发那样各行各业都涉及到。但是有缺点就有优点,FPGA的两大巨头在不断的打造嵌入式与FPGA联合的开发模式,大量的提供IP核,使得FPGA的适用面越来越广,FPGA工程师的需求量与日剧增。在5G、虚拟现实和人工智能的冲击下,传统的微处理器在性能上越来越不能满足需求,这个时候FPGA的优势就尤为突出,我相信在未来FPGA一定会成为市场的主流。即使就目前而言FPGA工程师的福利待遇也是非常高的,如图 1.1.12所示我们可以看到FPGA工程师的平均薪资都已经达到了一万以上了,而软件工程师的薪资除了那些大牛级人物,普通程序员的薪资并没有你想象的那么高,所以在这里我非常衷心的希望大家好好学习FPGA,你们未来可期。
新建RTF 文件9582.png

图 1.1.12月薪分布图

1.2深度剖析FPGA
我们在学习一个新的事物的时候一定要知其然还要知其所以然,前文我们都是表层的跟大家聊聊什么是FPGA,它能干什么,现状如何,就业前景咋样,让大家对FPGA有个直观的认识,下面我们将带领大家深度剖析FPGA的内部结构是什么样的,让大家更深层次的去认识FPGA。
1.2.1 FPGA的发展由来
谈到FPGA的发展我们不妨先看看数字电路的发展,在数字集成电路中,门电路是最基本的逻辑单元,用以实现最基本的逻辑运算(与、或、非)和复合逻辑运算(与非、异或等)。与上述逻辑运算相对应,常用的门电路有与门、或门、非门、与非门、异或门等,其电路符号如下图所示:
新建RTF 文件9924.png

图 1.2.1门电路符号

在最初的数字逻辑电路中,每个门电路都是用若干个分立的半导体器件和电阻、电容连接而成的。不难想象,用这种单元电路组成大规模的数字电路是非常困难的,这就严重制约了数字电路的普遍应用。1961年,美国德州仪器公司(TI)率先将数字电路的元器件制作在同一片硅片上,制成了集成电路(Intergrated Circuits,IC),并迅速取代了分立器件电路。
早期的数字逻辑设计需要设计师在一块电路板上或者如下图所示的面包板上用导线将多个芯片连接在一起。每个芯片包含一个或多个逻辑门,或者一些简单的逻辑结构(比如触发器或多路复用器等)。如下图中所示的芯片是在1960和1970年代,很多设计中都会使用的德州仪器7400系列的器件。

新建RTF 文件10294.png

图 1.2.2使用74系列器件搭建的电路

自20世纪60年代以来,随着集成电路工艺水平的不断进步,集成电路的集成度也不断提高。数字集成电路经历了从小规模集成电路(Small Scale Integrated circuit,SSI),到中规模集成电路(Medium Scale Integrated circuit,MSI),再到大规模集成电路(Large Scale Integrated circuit,LSI),然后是超大规模集成电路(Very Large Scale Integrated circuit,VLSI),以及甚大规模集成电路(Ultra Large Scale Integrated circuit,ULSI)的发展过程。今天我们已经可以把十分复杂的数字系统制作在一个很小的硅片上,构成“片上系统”。
我们从逻辑功能的特点上将数字集成电路分类,可以分为通用型和专用型两类。前面介绍到的中、小规模集成电路(如74系列)都属于通用型数字集成电路。它们的逻辑功能都比较简单,而且是固定不变的。由于它们的这些功能在组成复杂数字系统时经常要用到,所以这些器件具有很强的通用性。
从理论上来讲,用这些通用型的中、小规模集成电路可以组成任何复杂的数字系统。随着集成电路的集成度越来越高,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量和功耗,而且可以使电路的可靠性大为提高。像这种为某种专门用途而设计的集成电路称为专用集成电路,即所谓的ASIC(Application Specific Integrated Circuit)。
ASIC的使用在生产、生活中非常普遍,比如手机、平板电脑中的主控芯片都属于专用集成电路。
新建RTF 文件11067.png

图 1.2.3华为Mate 30手机中的麒麟990芯片

虽然ASIC有诸多优势,但是在用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而且设计制造的周期也很长。可编程逻辑器件(Programmable Logic Device,PLD)的出现成功解决了这个矛盾。
可编程逻辑器件PLD是作为一种通用器件生产,但它的逻辑功能是由用户通过对器件进行编程来设定的。而且有些PLD的集成度很高,足以满足设计一般数字系统的需要。这样就可以由设计人员自行编程从而将一个数字系统“集成”在一片PLD上,做成“片上系统”(System on Chip,SoC),而不必去请芯片制造厂商设计和制作专用集成电路芯片了。
最后,我们再来总结这三种数字集成电路之间的差异。通用型数字集成电路和专用集成电路内部的电路连接都是固定的,所以它们的逻辑功能也是固定不变的。而可编程逻辑器件则不同,它们内部单元之间的连接是通过“写入”编程数据来确定的,写入不同的编程数据就可以得到不同的逻辑功能。
自20世纪70年代以来,PLD的研制和应用得到了迅速的发展,相继开发出了多种类型和型号的产品。PLD的发展历程如下图所示:
新建RTF 文件11612.png

图 1.2.4 PLD的发展历程

目前常见的PLD大体上可以分为SPLD(simple PLD,简单PLD)、CPLD(complex PLD,复杂PLD)和FPGA(field-programmable gate array,现场可编程门阵列)。SPLD中又可分为PLA、PAL和GAL几种类型。FPGA也是一种可编程逻辑器件,但由于在电路结构上与早期已经广为应用的PLD不同,所以采用FPGA这个名称,以示区别。
通过对数字电路的学习我们知道,任何一个逻辑函数式都可以变换成与-或表达式,因而任何一个逻辑函数都能用一级与逻辑电路和一级或逻辑电路来实现。PLD最初的研制思想就来源于此。
新建RTF 文件11952.png

图 1.2.5 PAL器件的基本电路结构

上图是SPLD中PAL(可编程阵列逻辑)的电路结构图。通过对输入端(inputs)到与门之间的可编程阵列(programmable array)进行编程,利用PAL可以获得不同形式的组合逻辑函数。数字电路课程告诉我们,任何逻辑函数式都可以转化为若干乘积项(product tems)之和的形式,亦称“积之和”形式。通过对可编程阵列进行编程,与逻辑电路输出所需要的乘积项,再通过或逻辑电路将这些乘积项相加,就得到了最终的功能输出。然后该输出送给输出电路中的寄存器用于存储或者同步,当然也可以忽略寄存器直接输出。这就是PAL作为一种“可编程逻辑器件”能够实现不同逻辑功能的原理。
通过扩展SPLD的概念就可以得到CPLD。CPLD是复杂可编程逻辑器件,相当于将多个PAL用可编程互联阵列(Programmable Interconnect Array,PIA)连接起来,形成一个大的PLD,如下图所示:
新建RTF 文件12418.png

图 1.2.6 CPLD结构示意图

上图中的Logic block(逻辑块)通常被称为逻辑阵列模块,或者LAB(Logic Array Block)。每个LAB相当于一个PAL电路,不同型号的CPLD器件可以包含十几个甚至上百个LAB。通过PIA将这些LAB连接起来,就可以构成规模更大的逻辑电路了。另外,在PAL中,I/O管脚是直接连接到逻辑的。而在CPLD中,I/O管脚是通过PIA从器件的主要逻辑中分离出来的。I/O管脚有它自己的控制逻辑,I/O控制单元可以根据需要将相应的引脚设置成输入、输出或双向工作模式。
CPLD相对于SPLD最大的优势就是拥有更大的逻辑资源和布线的可能性。CPLD中LAB逻辑和PIA是完全可编程的,使得它具有在单芯片中非凡的设计灵活性。CPLD的I/O特性和功能也远比SPLD中简单的I/O更有价值。
FPGA是在PAL、GAL和CPLD等可编程逻辑器件的基础上进一步发展的产物,但是FPGA和其前辈CPLD有着非常大的差异。我们用一张表格来罗列他们之间的差别如下表所示:
表 1.2.1 FPGA与CPLD的差别
器件        FPGA        CPLD
内部结构        查找表(LUT)        乘积项(PT)
资源类型        触发器资源丰富        组合逻辑资源丰富
特有资源        RAM、PLL、DSP等        ——
运行速度        快        慢
集成度        高        低
程序存储        内部SRAM、外挂EEPROM或FLASH存储程序        内部EEPROM或FLASH存储程序
应用场合        完成复杂算法        完成控制逻辑
能否加密        一般不能(可以使用加密核)        可加密
那为什么会产生这么大的差别呢,主要是由于FPGA的内部结构决定的,下面我们就来看看FPGA的内部结构。
1.2.2 FPGA的内部结构
FPGA由许多“可配置逻辑模块”(Configurable Logic Block,CLB)、输入/输出单元(I/O Block,IOB)和分布式的可编程互联矩阵(Programmable Interconnection Matrix,PIM)组成。在FPGA中,CLB被布置成阵列的形式,如图 1.2.7 FPGA结构示意图所示。可编程的布线资源分布在CLB与CLB之间,像大城市的街道一样纵横联接。这些布线资源分为行互联和列互联,可以跨过整个器件,也可以是局部CLB之间的互联。
我们将图 1.2.6 CPLD结构示意图与图 1.2.7 FPGA结构示意图进行对比可以发现,FPGA中的布线资源看上去似乎比CPLD中的互联阵列更简单,但它实际上提供了更大的功能性和连通性。FPGA中的布线资源使得器件中所有的逻辑资源都可以与芯片内其他资源进行通信,这种结构可以实现更大容量、低成本的逻辑器件。
新建RTF 文件13765.png

图 1.2.7 FPGA结构示意图

在前面所讲的各种SPLD和CPLD电路中,都采用了与或逻辑阵列加上输出逻辑单元的结构形式。而FPGA则采用了完全不同的电路结构形式即(查找表,LUT),这里我们需要先来了解FPGA的架构。简化的FPGA基本结构由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,如下图所示:
新建RTF 文件14004.png

图 1.2.8 FPGA基本结构

每个单元的基本概念介绍如下。
1)        可编程输入/输出单元
输入/输出(Input/Ouput)单元简称I/O单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求。为了使FPGA具有更灵活的应用,目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与I/O物理特性,可以调整匹配阻抗特性、上下拉电阻、以及调整驱动电流的大小等。
可编程I/O单元支持的电气标准因工艺而异,不同芯片商、不同器件的FPGA支持的I/O标准不同,一般来说,常见的电气标准有LVTTL 、LVCMOS、SSTL、HSTL、LVDS、LVPECL和PCI等。值得一提的是,随着ASIC工艺的飞速发展,目前可编程I/O支持的最高频率越来越高,一些高端FPGA通过DDR寄存器技术,甚至可以支持高达2Gbit/s的数据速率。
下面我们以达芬奇上所使用的FPGA芯片为例,来详细介绍FPGA的可编程IO单元。达芬奇上所使用的FPGA芯片是Xilinx公司的Artix7(以下简称达芬奇)系列,其具体型号为xc7a35tfgg484-2,它的用户可用的IO为250个,可以满足大多数设计需求。达芬奇系列FPGA芯片的I/O驱动电压宽泛,从1.2v到3.3v都支持,并且支持DDR3的800Mb/S高速输入输出。单端输出采用传统的CMOS推/拉输出结构,可以输出高低电平或者高阻态,并且可以指定转换速率和输出强度。芯片输入IO是一直有效的,但是当它在输出有效时输入是被忽略的。每个引脚可以选择有一个弱上拉或一个弱下拉电阻,并且大多数信号引脚对可以配置为差分输入对或输出对。差分输入对可以选择终止100Ω内部电阻,而且我们的输入是可以延迟的,任何输入都可以单独延迟至多32次,每次延迟78ps、52ps或39ps,具体延迟时间由输入的参考时钟决定。每个I/O引脚拥有一个8位IOSERDES (ISERDES和OSERDES),能够执行串行到并行或并行到串行转换,其可编程宽度为2、3、4、5、6、7或8位。通过从两个相邻的引脚级联两个IOSERDES(默认来自差分I/O), 10和14位的位宽转换也可以被支持,ISERDES具有特殊的过采样模式,能够实现异步数据读取。
2)        基本可编程逻辑单元
新建RTF 文件15034.png

图 1.2.9 达芬奇搭载的XC7A35TFGG484I-2芯片

基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Register)组成。Xilinx 7系列FPGA内部查找表为6输入,查找表一般完成纯组合逻辑功能。FPGA内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位,时钟使能的触发器,也可以配置成锁存器,FPGA依赖寄存器完成同步时序逻辑设计。
一般来说,比较经典的基本可编程逻辑单元的配置是一个寄存器加一个查找表,但是不同厂商的寄存器与查找表也有一定的差异,而且寄存器与查找表的组合模式也不同。当然这些可编程逻辑单元的配置结构随着器件的不断发展也在不断更新,最新的一些可编程逻辑器件常常根据需求设计新的LUT和寄存器的配置比率,并优化其内部的连接构造。例如,Altera可编程逻辑单元通常被称为LE(Logic Element),由一个寄存器加一个LUT构成。Altera大多数FPGA将10个LE有机地组合在一起,构成更大的功能单元即逻辑阵列模块(LAB,Logic Array Block)。LAB中除了LE还包含LE之间的进位链,LAB控制信号,局部互联线资源,LUT级联链,寄存器级联链等连线与控制资源。
Xilinx 7系列FPGA中的可编程逻辑单元叫CLB(Configurable Logic Block,可配置逻辑块)它是最小的可编辑逻辑单元,每个CLB 里包含两个逻辑片(Slice),每个Slice由4 个查找表(LUT)、8个触发器(FF)和其他一些逻辑所组成的。CLB示意图如下所示:
新建RTF 文件15827.png

图 1.2.10 CLB示意图

查找数据手册得知达芬奇系列FPGA中的查找表(LUT)可以配置为一个6输入LUT(64位rom)和一个输出,也可以配置为两个5输入LUT(32位rom),它们有单独的输出,但有公共地址或逻辑输入。
3)        嵌入式块RAM
目前大多数FPGA都有内嵌的块RAM(Block RAM),FPGA内部嵌入可编程RAM模块,大大地拓展了FPGA的应用范围和使用灵活性。不同器件商或不同器件族的内嵌块RAM的结构不同,Lattice常用的块RAM大小是9KBIT;Altera的块RAM最灵活,一些高端器件内部同时含有3种块RAM结构,分别是M512 RAM,M4K RAM,M9K RAM。
Artix-7系列 FPGA有20到135个双端口块RAM,每个RAM有36 Kb容量并且每个块RAM有两个完全独立的端口,它们共享存储的数据。每次对存储器进行访问(读取或写入)均受时钟控制,并且所有输入数据、地址、时钟使能和写使能都已寄存,所以当没有时钟时,什么也不会发生, 输入地址始终不变,保留数据直到下一次操作。在写操作期间,数据输出可以是以前存储的数据、新写入的数据,也可以保持不变。RAM的两个端口位宽可以配置为32K×1、16K×2、8K×4、4K×9(或8)、2K×18(或16)、1K×36(或32)或512×72(或64),并且RAM的两个端口还可以具有不同的长宽比,没有任何限制,而且每个块RAM还可以分为两个完全独立的18 Kb块RAM,可以配置为16K×1至512×36的任何长宽比。需要补充的一点是,除了块RAM,还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准。
4)        丰富的布线资源
布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别:
第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;
第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;
第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;
第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。
5)        底层嵌入功能单元
底层嵌入功能单元的概念比较笼统,这里我们指的是那些通用程度较高的嵌入式功能模块,比如PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等。随着FPGA的发展,这些模块被越来越多地嵌入到FPGA的内部,以满足不同场合的需求。
目前大多数FPGA厂商都在FPGA内部集成了DLL或者PLL硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、相移等功能。目前,高端FPGA产品集成的DLL和PLL资源越来越丰富,功能越来越复杂,精度越来越高。所有达芬奇系列FPGA都有许多专用的,完全定制的低功耗DSP Slice,在保持系统设计灵活性的同时兼顾了高速与小尺寸,每个DSP Slice都由一个专用的25×18位二进制补码乘法器和一个48位累加器组成,两者均能以最高550 MHz的频率运行。乘法器可以动态旁路,两个48位输入可以馈入一个单指令多数据(SIMD)算术单元(双24位加/减/累加或四路12位加/减/累加),DSP包括一个附加的预加器,通常用于对称滤波器中。该预加器可改善密集设计中的性能,并将DSP Slice数量减少多达50%。 DSP还包括一个48位宽的模式检测器,可用于收敛或对称舍入。当与逻辑单元结合使用时,模式检测器还能够实现96位宽的逻辑功能。DSP Slice提供了广泛的流水线和扩展功能,从而提高了除数字信号处理之外的许多应用的速度和效率,例如动态总线移位器,存储器地址生成器,宽总线多路复用器和存储器映射的I / O寄存器文件,累加器也可用作同步向上/向下计数器。
另外,越来越多的高端FPGA产品将包含DSP或CPU等硬核,从而FPGA将由传统的硬件设计手段逐步过渡到系统级设计平台。例如Altera的Stratix IV、Stratix V等器件内部集成了DSP核;Xilinx的Virtes II和Virtex II pro系列FPGA内部集成了Power PC450的处理器。FPGA内部嵌入DSP或CPU等处理器,使FPGA在一定程度上具备了实现软硬件联合系统的能力,FPGA正逐步成为SOPC的高效设计平台。
1.2.3Xilinx 7系列芯片简介
目前Xilinx7系列FPGA芯片有四个子系列,他们分别是Spartan7系列、Artix7系列、Kintex7系列以及Virtex7系列。这四个系列的FPGA可满足各种不同的设计需求,无论你是要求低成本,小尺寸,大批量还是要求高端连接带宽,超大逻辑容量和高速信号处理能力,它们总有一款适合,这也是Xilinx为什么能占领这么大的市场份额的原因所在,它从低端到高端一应俱全。下面我们就来分别介绍这四个子系列,让大家对整个7系列芯片有个整体的认识。
首先我们先来看看Spartan7系列的FPGA芯片(图 1.2.11所示),Spartan7系列采用高K金属栅极(HKMG)技术和28HPL工艺,以高性能、低功耗、小尺寸著称。这个系列提供了从6000到102400逻辑单元的扩展密度,以及更快、更全面的连接性。它使用双寄存器6输入查找表(LUT)逻辑,在内部还提供了丰富的内置系统级模块,比如它有用于片上数据缓冲的RAM模块,容量大小为36Kb(2x18Kb)相当于内置FIFO逻辑功能;有25x18乘法器和48位累加器的DSP片;有用于高性能滤波的预加器;还有包括优化对称系数、滤波增强的混合模式时钟管理模块等等。除此之外,Spartan7系列还拥有SelectIO™技术、高达800Mb/s的DDR3接口支持、高级系统级电源管理模式、自动检测配置选项以及具有AES和设备DNA保护增强的IP等功能。这些功能为定制ASIC产品提供了低成本的可编程替代方案,非常的简单好用。它非常适合用于需要多种接口标准的灵活和可扩展的大容量逻辑设计、适合高带宽并行DSP处理设计以及一些对成本敏感的大批量应用的设计。
新建RTF 文件18631.png

图 1.2.11 Spartan7 FPGA芯片

看完了Spartan7系列我们再来看看Artix7系列(图 1.2.12所示),它跟Spartan7系列采用的工艺水平是相同的,或者说是Spartan7系列借鉴了Artix7的工艺,因为Artix7要比Spartan7研发的更早一点,所以Artix7系列同样是高K金属栅极(HKMG)技术和28HPL工艺。Artix7凭借52Gb/s的I/O带宽,100000个逻辑单元容量,264GMAC/s的DSP运算性能和灵活的内置DDR3存储器接口,使得整体系统性能得到了无与伦比的提高。
通过对官方数据手册的阅读我给大家总结了八个比较重要的Artix7性能参数:
1)基于6输入查找表(LUT)技术的高级高性能FPGA逻辑,可配置为分布式存储器;
2)拥有36Kb容量的双端口Block RAM,内置FIFO逻辑,可用于片上数据缓冲;
3)采用高性能SelectIO™技术,支持高达800Mb/s的DDR3接口;
4)内置高速串行收发器,支持从500 Mb/s到最大速率6.25 Gb/s的收发速度,可实现50 Gb / s的峰值带宽(全双工);
5)用户可配置的模拟接口(XADC),并集成了双12位1MSPS模数转换器具有片上热传感器和电源传感器的数字转换器;
6)端口引脚采用单端和差分I/O标准,速度高达1.25 Gb/s;
7)拥有高达264 GMAC运算性能的信号处理能力;
8)强大的时钟管理器件(CMT),结合了锁相环(PLL)和混合模式时钟管理器(MMCM)模块,可以实现高精度和低抖动。
新建RTF 文件19360.png

图 1.2.12 Artix7芯片

在介绍完Artix7之后呢我就不准备再继续把Kintex7(图 1.2.15)和Virtex7(图 1.2.16)还搬过来详细介绍了,因为没有这个必要。其实Kintex7和Virtex7不过是Artix7的加强再加强版本,他们的工艺和架构都是相同的,但是内部的资源和性能都有极大的提升,下面我们来用一张表对比的看一下这四个系列的性能区别:
新建RTF 文件19641.png

图 1.2.13 Xilinx7系列资源一览表

这张表来自Xilinx官方的数据手册,它已经将我们每个系列的性能列的非常清晰了,其中Logic Cells是内部逻辑资源;Block RAM是片内RAM容量;DSP Slices是内置DSP片数;DSP Performance是表示DSP的运算性能;MicroBlaze CPU表示内置软核MicroBlaze(可以理解成一个CPU)的每秒百万级计算能力;Transceivers表示高速收发器数量;Transceiver Speed表示高速收发器最大数据处理速度;Serial Bandwidth表示串行带宽;PCIe Interface表示PCIE高速通信接口数量和版本;Memory Interface表示内部存储的最大读写速度;I/O Pins表示IO总数;I/O Voltage表示IO支持的电压;Package Options是封装方式。从表中我们可以看到四个系列的芯片从左往右的逻辑资源,RAM容量,运算速度都是一个比一个强悍,自然性能也是越来越强,我们也对架构相同的Artix7、Kintex7和Virtex7的性能做了一个对比表(图 1.2.14),大家也可以参考。
新建RTF 文件20227.png

图 1.2.14 性能对比表

新建RTF 文件20287.png

图 1.2.15 Kintex7芯片

新建RTF 文件20351.png

图 1.2.16 Virtex7芯片

1.2.4为什么选择A7
当我们对FPGA有了一个深入的了解之后回到我们的开发板,我们的板子上搭载了一块A7系列的FPGA芯片,它的型号是XC7A35TFGG484I-2。我们为什么要选择这一款芯片而不选择别的型号呢?比如说Spartan7系列或者K7、V7系列,其实这主要取决于我们的目的,当大家真的进入到FPGA工程师这一行时,你会发现器件选型也是一门大学问,它涉及到购买难易度、性能、封装体积、外观、稳定性、市场认可度、是否满足功能设计和成本敏感度等等,并不是说哪个便宜我用哪个,也不是说哪个性能强大就选哪个,必须综合考虑各种因素。
其实我们在一开始选型的时候,有考虑过Spartan7系列的FPGA。但是在比较之后发现,Spartan7系列定位比Artix7系列要低,但是价格却比Artix7系列要高,所以这款芯片目前也是比较尴尬。这是由于目前Spartan7系列的芯片比较新,所以价格上比较高,相信后面价格慢慢也会降低,但目前而言,比较适合的还是Artix7系列的FPGA。首先它的成本是Xilinx7系列四大类型中最低的一个,但是它的性能却并不会因为说成本低就特别差,相反的它性能还是比较强大的,它包含了多种硬核和高速接口,例如DDR硬核和高速收发器等;其次就是它已经大批量生产,大家要知道在芯片制造这个领域,往往大批量生产的芯片类型就是最稳定的最被市场认可的类型,所以在选型的时候我们最好选择已经大量生产的,这样也方便我们购买,像Spartan7系列不仅价格比Artix7系列高,定位比Artix7低,还有最重要的就是它不太好购买。所以综合因素决定了目前市场上Artix7系列FPGA芯片的使用场景最广,因此我们最终的选型也是选择了Artix7系列的芯片。
表 1.2.2 选择A7的理由
选择A7理由
成本低        目前在四个系列里面成本最低
场景广        目前使用场景最广
易购买        A7目前已经大量量产
接口多        包含DDR硬核/高速收发器
1.2.5 Xilinx芯片的命名规则
一路看下来大家已经了解了什么是FPGA并且也知道了我们达芬奇开发板上的芯片型号是XC7A35T-2FGG484I,那么大家是否知道这个命名的含义呢,这里我就以Xilinx的官方文档来给大家做个简单的介绍,方便大家以后自己去选型的时候可能会用得着这个小知识。
我们先来看下我从官方文档中截的图(图 1.2.17),从这张图中我们可以看到它是以Artix7系列的芯片为例的,其实Artix7、Kintex7和Virtex7这三个系列的命名规则是通用的:
新建RTF 文件21556.png

图 1.2.17 Xilinx芯片命名规则示意图

XC7A:Xilinx公司Artix家族第七代;
###:逻辑资源(logic cells)数目;
-1:速度等级(数字越大速度等级越高);
FBG:封装方式;
484:引脚数;
C:温度等级。
所以对照这个规则我们达芬奇上搭载的就是一块Xilinx公司Artix家族第七代芯片,该芯片含有35t逻辑资源和484个IO引脚,它的速度等级为2,并且采用的是FGG封装方式。





阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表