网站导航: 首页 > 设计参考 > 正文 文章搜索
FPGA三国志-第三篇/SOPC篇
 
文章编号:
090111083255
文章分类: EDA技术 PLD/CPLD/FPGA
点 击:
...
关 键 词: 三国志,SOPC
文章来源:
edacn.net 作者:wisdomz
摘 要:

    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® 嵌入式处理器 世界上第一款嵌入式处理器,适合可编程逻辑应用。

处理器嵌入在FPGA中,需要什么样的温床?
    的确,在推出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. 可以实现以软代硬,或者以硬代软,在软硬间转化速度与资源的偏重

    如果有以上的特性,那相信留给设计者的只有是无限的遐想空间。

FPGA上的CPU,有太多的元素,你知道吗?
    我们从哪里开始讲呢,准备从算盘开始讲CPU,很多人说,我是不是太无聊了呢?听我明天说给你听!看似简单的算盘,绝对孕育着无比的大智慧。 看是简单的Avalon,也同样有很多玄机。 那就是变变变。
    来自Xilinx的消息,关于CPU在FPGA设计中的一些预测
 

神奇的算盘
    上回说到算盘。 实际上大家应该都见过这个了不起的发明,只是他出现在你的记忆中的次数越来越少,就忘记了,实际上,很多伟大之处在很早就有历史可以证明的。 看看你平时见到的算盘。 
 
    算盘的妙处和Altera的LE排列布局非常相似,或许是巧合吧。
但是这里的偶然也有些必然。 或许我们有一天说,FPGA的结构最早是源于我国的。 哈哈,玩笑啊。

  1. 可以增加多个核来弥补自己速度上的缺陷,提高更多的并行处理
    一个算盘是算盘,级联起来还是算盘,可以横向,也可以纵向
  2. 灵活的总线结构,可以连接高速,慢速,master,salve的模块
    算盘是平行也是并行结构,上面的有两个珠子,下面5个,2也可以代表10,5也可以代表10,同时,进位时也可以暂时存储在高档位,也可以留在本档。进位链和Altera LE的进位布局也是一样。

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

Avalon的奥秘
    总线结构:
全交叉,部分交叉型(适合FPGA中的嵌入总线!)
    Xilinx的是共享总线型。仍旧属于传统型设计,只是将其搬移到了FPGA中。 
 
处理器接口主要抽象为:

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

回头看Avalon:
 

上面看起来,这两个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

总线结构是SOPC的最重要的战场,也是区分SOPC是否高效的关键因素!
1--说到SOPC,最基本的集成首先是CPU的内置,但是CPU的有下列因素决定总线结构。

 

  •      CPU---冯诺依曼结构,CISC体系多采用这种方式,特点,就是指令功能强大,总线结构复杂,堆栈结构设计庞大。 因为要解决所有Master和Salve之间的运算和重写,另外寻址模式非常丰富。 缺点是酒?峁垢丛樱?面积偏大,面积偏大导致这类CPU的频率不能太高!
  •     CPU--哈佛结构,总线独立,能够提高并行,基本上以数据流加工为主。 所以DSP,以及一些RISC的体系也很多 。

   这里声明,RISC,CISC和CPU结构无必然联系。
    简单说来:RISC是以总线结构越少越好,通络尽可能简单。例如大部分指令面向寄存器,然后数据操作多数在寄存器完成。 有很多甚至基于堆栈。
    共享总线的速度设计与性能总结:

  1. 完成相对高的总线频率
  2. 相对低廉的成本
  3. 不能并行!(这个是缺点)
  4. 共用的仲裁结构(缺点,反应速度慢)
  5. 所有主设备对从设备的存取都存在竞争关系(同时访问时候)

 
    当然在FPGA中,双向三态的实现是依靠多选一和DFF的隔离来实现的,而且,多数为同步设计。 当然在现代分离系统的设计中,已经很早有这样的先例。
    例如一个ARM和TI的DSP进行协同的系统,TI DSP中有对总线进行释放的功能机制,释放的时候,可以由ARM来对DSP中的数据结果进行交换,或者是操作参数的更新。 然后再将总线控制权返回给主控的ARM.在FPGA中,也是同样的道理。

NIOS II的总线结构Avalon是具有全数字交叉的总线结构,支持多主并发的结构。
    FPGA中,由于FPGA中丰富的互联结构,以及FPGA中本身的逻辑胶合的本身设计定位,决定了在FPGA中的SOPC的总线结构:全数字交叉的互联结构是SOPC在FPGA中性能发挥的调节棒!
 
很多人对此有以下担忧:

  1. 仲裁结构复杂,
  2. 规模过于庞大
  3. 对设计工具要求高(每次互联设计,可能要修改太多东西)

Altera采用了一个折中的方式就是部分数字交叉结构。 
 
而且将仲裁机制放在了从端,这样做的好处,就是有冲突访问可能的从设备,就对他增加仲裁,好处:

  1. 降低了总线规模
  2. 提高并行性
  3. 仲裁效率高

    没有优良的总线结构,一切都是空谈,有效的机制,可以弥补CPU的性能的低能化!

总线接口的抽象!Xilinx和Altera志同道合
   尽管总线接口的抽象不同,但是,不代表总线结构一致。 X是总线共享型,A是数字交叉型。 
   例如Avalon-MM,Avalon-SM
   Xilinx是PBv,和Fastlink来对应
   MM是意思采用存储地址映射抽象,就是将所有端口定义为可以用内存地址来寻址操作。 而SM是代表流媒体数据型,也就是一般和DMA都有一定的联系,当然,也是一种要不就是不断接收数据流 ,要不就是发送数据流的接口。 例如,VGA的数据缓冲,DSP信号数据的输入和输出,例如AD数据的输入,以及DA的输出,同时具有FIFO功能。

并行,并行,再并行。
    FPGA中用的设计语言,VHDL,Verilog HDL等,这些都是并行的,FPGA之所以能在很多DSP领域进行大显身手,也是因为他良好的并行扩展性。 那同样。 在SOPC中,要提高系统的整体性能,还是要并行,并行再并行!
    上面就结构已经进行了简单的说明。 那么在数据处理的单元上如何设置呢。

1---动态总线宽度的适应。
   当你要将32bitNIOS和8bit,或者16bit的系统进行连接的时候,他应该能自动适应!
2--增加多个主控单元,对一些控制进行有效并发。 

   归纳为三点:
多增加CPU的个数,SOPC支持多CPU,而且现在很多CPU也在发展多核。 商用PC已经很成熟了。
多增加DMA的通道个数,这样CPU可以干别的事情,至少数据吞吐加大
增加PCI-e的设备,这样,NIOS,FPGA不方便处理的,可以通过这样的接口进行功能上的折中。 当然以后也可以增加RapidIO来和TIDSP进行数据的互换。 
 
3--创建分离的数据通路
4--用多DMA进行辅助。 例如
 

 没有新的发明,只是新的组合!
    实际上今天很多所谓的创新,也就是一些不同设计元素的合并和组合。 TSMC,在20年前开始代工的时候,有很多人质疑这种方式,实际上这个是一种商业模式的创新。 Altera是前期一些Fabless的厂商之一,很多人也怀疑没有自己的工厂?怎么可以做好产品。 但是回顾今天,大家不都是走这样的路吗。 当然也有一些自己领域的佼佼者,内存,CPU还是自己开灶。
    话题拉回,当你一个系统已经不方便的时候,或者是某种功能要求有很突出表现的时候,两个或者多个CPU的系统,或者是拆解再增加必要的子系统。 也是一种创新。
    分割为多个子系统的好处:

  1. 方便管理
  2. 由于分割后,从设备可以分在不同的有限个主设备中,提供并行,降低冲突。
  3. 从系统之间耦合较松,就是说可以
    依靠共享内存,消息传递,信号灯互锁,FIFO等机制进行同步和信息交换。

一生二,二生三,三生万物.....
    现在的工具都很方便复制和例化多个功能单元。 当你设计好一个上面的系统的时候,你也可以将他们又构成一个模块,然后复制这些模块来达到更大的系统。 这种在DSLAM的设计,或者是多路以太网复用到光设备等经常应用。
因此,
一生二,二生三。。。。
当然这种思想是建立在大批量复制功能单元的策略
    另外,还有一种大家熟悉的方式,
就是提高局部的流水动作以提高系统吞吐。 你不仅要有火尖枪,同时也要有混天绫。互相配合才是自然之道。

流水的数据操作分为两类:

  • 读流水
  • 写流水

    读流水和写流水主要是针对目前的一些存储外设来设计的,就是一个主设备可以在第一读的动作发生,但是没有数据返回的前提下,连续发出多个读的动作,然后在适当的时钟延迟后,连续得到由连续发出读的指令而产生的返回数据序列。 好处是,用个图来表达就明白了。 
 
    当然了,你可能说,这个说易行难,设计经验不足。 没有关系,SOPCbuilder的master和Slave接口,已经将这些都做好了。 如果你想自己设计一个,实际知道这样的时序,你也可以的。 不外乎就是要做一个读和返回地址的计数器,计数器的差值是在Readdatavalid的返回时候发出的地址数目,当然你也要设计好数据的宽度

ARM Vs Nios II
大家对ARM和NiosII喜欢比较,今天就说上几句。

最快的NiosII (250Mhz) 比ARM7快,
最小的NiosII比最小的ARM7要小

另外NiosII已经有了MMU,而且对Linux进行了支持

ARM7是把西瓜刀
NiosII是把瑞士军刀。NiosII做一个分型算法借助C2H,速度是ARM7的400倍,不算慢。 但是ARM7的生态资源广,这两个应用实际上是相辅相成。

 
相关文章:

 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 



 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4