PLD的重新定義PLD是什么,Programmable Logic Device. 當然今天應該換個稱呼了:Processor+ Logic+DSP了,世界就是這樣不停的變化來維持他的穩(wěn)定。
表1列出了Altera?可編程解決方案的主要歷史創(chuàng)新發(fā)展過程。,可以看到在2000年的時候,的廠商已經(jīng)開始在嵌入式微處理器方面開始嶄露頭腳。 當然起初引來的也有一片嘩然。 說效率低下,難以開發(fā)。 新鮮事物的誕生總是要經(jīng)過這樣的陣痛期。
在2002年,就有眾多廠家出來聲稱都支持嵌入式軟核CPU。 甚至也和當時流行的8051 turbo以及一些ARM進行比較。
表1. 在 PLD 業(yè)界的率先創(chuàng)新年度技術發(fā)展里程碑在PLD業(yè)界的率先創(chuàng)新
2008
Stratix ? IV FPGA業(yè)界的首款40-nm FPGA,具有最高的密度、最好的性能、最低的功耗、最大的收發(fā)器帶寬(高達8.5-Gbps 的收發(fā)器),并為PCI Express Gen 1/2提供硬核知識產(chǎn)權(IP)模塊。
2007
ArriaTM GX FPGAs業(yè)界的首款低成本,基于收發(fā)器的中端,協(xié)議優(yōu)化的FPGA。
2007
Cyclone? III FPGA業(yè)界的首款低成本65nm FPGA,前所未有地同時實現(xiàn)了低功耗、低成本和高性能。
2006
Stratix III FPGA65nm FPGA以更高的密度和性能支持高級集成,實現(xiàn)更復雜的產(chǎn)品。
2006
Quartus? II軟件自然支持SDC設計約束
2006
C2H 編譯器嵌入式處理器的首款自動ANSI C至寄存器級(RTL)生成工具
2006
Stratix II GX FPGA速度最快,密度最大的90nm FPGA架構,含有工作在622Mbps至6.375Gbps的20個低功耗收發(fā)器。
2005
HardCopy? II 結構化 ASIC精細粒度體系結構;從90nm Stratix II FGPA原型無縫移植。
2005
Cyclone II FPGA90nm FPGA,業(yè)界首款低成本FPGA,成本降低30%,密度提高3倍。
2004
Stratix II FPGA90nm FPGA,含有名為ALM的8輸入“分段式”查找表(LUT),以此替代了4輸入LUT體系結構。
2003
Quartus II 軟件可編程邏輯軟件包,提供Tcl腳本支持。
2003
Stratix GX FPGA0.13μm FPGA,分塊收發(fā)器體系結構。
2003
HardCopy 結構化 ASIC業(yè)界唯一原型至量產(chǎn)0.13μm的完整解決方案
2003
Stratix FPGA0.13μm、300mm、高速高密度FPGA
2002
Quartus II 軟件可編程邏輯設計工具包,支持Linux。
2002
Cyclone FPGA世界上成本最低的FPGA(0.13μm)
2002
SOPC Builder第一款FPGA自動
系統(tǒng)生成工具2002
Stratix FPGA世界上第一款帶有嵌入式DSP模塊的FPGA
2001 HardCopy APEX TM 結構化 ASICFPGA 首次無縫移植至低成本結構化ASIC
2001系統(tǒng)互聯(lián)架構第一款自動生成的
互聯(lián)架構,支持同時主機/從機操作。
2001 Quartus II 軟件推出Quartus II 設計軟件
2001MercuryTM FPGA世界上第一款帶有嵌入式收發(fā)器的0.18μm FPGA
2000基于 ARM? 的 Excalibur TM 器件世界上第一款帶有硬件嵌入式處理器的 FPGA
2000
Nios? 嵌入式處理器世界上第一款嵌入式處理器,適合可編程邏輯應用。
處理器嵌入在FPGA中,需要什么樣的溫床?
的確,在推出Nios soft processor 兩年之后,在我們周邊也開始陸續(xù)有開始吃螃蟹的了。 但是,還是回到結構的老話題上,來談論一下為什么這個時候出現(xiàn)了由FPGA制造商推出的CPU,實際上在1997年,就已經(jīng)有什么FPGACPU的說法甚囂塵上。 而且也有人在Xilinx和Altera上面分別實現(xiàn)了原形。
開始在FPGA嵌入大塊RAM的時候,很多人抨擊這種結構,只是一個動物園里面的老虎,實際上就是和貓差不多的殺傷力。 不可以否認,它不如分布式RAM來的靈活,但是它可以作為一些Cache,或者是緊耦合的RAM,還有就是它的規(guī)模在容量增加的時候,仍舊有很好的速度,那就可以作為CPU的Cache了。 Altera的RAM都是做在同一列的,很方便級聯(lián)。 另外總線寬度也很容易更改。
還有就是CPU里面總是有很多總線,內部總線。 由于豐富的行聯(lián)線的存在,在幾列行資源里,就可以輕松集成RAM,CPU要的邏輯資源,以及總線的結構。 這樣,CPU也就順利的在FPGA的世界里粉墨登場了。 雖然起初只是16bit的。
2002年,Altera的開發(fā)軟件已經(jīng)趨于穩(wěn)定,可以說已經(jīng)很適合自己產(chǎn)品的結構,而且布線效率非常高。同時Altera的Nios也上升為NiosII,這個時候NiosII已經(jīng)蛻變?yōu)槊利惡?--一個32bit的RISC CPU。 而且Altera又采用了非對稱的機構實現(xiàn)了革命性的Avlon互聯(lián)體系。 關于這個體系的由非對稱可以覆蓋對稱的,或不對稱性的應用,我們以后詳細聊。 總而言之。 如果再有一款更好結構的低成本的FPGA,那無異于在FPGA市場上刮起一場颶風!
Xilinx有Microblaze,其他的有ARM的核,實際上FPGA上實現(xiàn)的CPU,不是由一個CPU的內核來決定他的應用,而是誰有最好的互聯(lián)體系,能和外圍設備,和FPGA中的RAM,乘法器,以及其他定制邏輯更好橋接,粘合成一個SOPC,那才是真正意思上的軟核。 那究竟什么樣子才好呢?
可以增加多個核來彌補自己速度上的缺陷,提高更多的并行處理
靈活的總線結構,可以連接高速,慢速,master,salve的模塊
可以將客制化的邏輯,有效集成到CPU的指令體系。
有面向不同應用,可以進行裁剪的CPU core
方便片上調試的環(huán)境
可以快速自動實現(xiàn)外設資源沖突仲裁的機制
可以實現(xiàn)以軟代硬,或者以硬代軟,在軟硬間轉化速度與資源的偏重
如果有以上的特性,那相信留給設計者的只有是無限的遐想空間。
FPGA上的CPU,有太多的元素,你知道嗎?
我們從哪里開始講呢,準備從算盤開始講CPU,很多人說,我是不是太無聊了呢?聽我明天說給你聽!看似簡單的算盤,絕對孕育著無比的大智慧。 看是簡單的Avalon,也同樣有很多玄機。 那就是變變變。
來自Xilinx的消息,關于CPU在FPGA設計中的一些預測
神奇的算盤
上回說到算盤。 實際上大家應該都見過這個了不起的發(fā)明,只是他出現(xiàn)在你的記憶中的次數(shù)越來越少,就忘記了,實際上,很多偉大之處在很早就有歷史可以證明的。 看看你平時見到的算盤。
算盤的妙處和Altera的LE排列布局非常相似,或許是巧合吧。
但是這里的偶然也有些必然。 或許我們有一天說,F(xiàn)PGA的結構最早是源于我國的。 哈哈,玩笑啊。
可以增加多個核來彌補自己速度上的缺陷,提高更多的并行處理
一個算盤是算盤,級聯(lián)起來還是算盤,可以橫向,也可以縱向
靈活的總線結構,可以連接高速,慢速,master,salve的模塊
算盤是平行也是并行結構,上面的有兩個珠子,下面5個,2也可以代表10,5也可以代表10,同時,進位時也可以暫時存儲在高檔位,也可以留在本檔。進位鏈和Altera LE的進位布局也是一樣。
看一個更久的照片,當然這個也可以代表Cyclone的layout了。
Avalon的奧秘
總線結構:
全交叉,部分交叉型(適合FPGA中的嵌入總線!)
Xilinx的是共享總線型。仍舊屬于傳統(tǒng)型設計,只是將其搬移到了FPGA中。
處理器接口主要抽象為:
共享寄存器
RAMs
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的最重要的戰(zhàn)場,也是區(qū)分SOPC是否高效的關鍵因素!
1--說到SOPC,最基本的集成首先是CPU的內置,但是CPU的有下列因素決定總線結構。
CPU---馮諾依曼結構,CISC體系多采用這種方式,特點,就是指令功能強大,總線結構復雜,堆棧結構設計龐大。 因為要解決所有Master和Salve之間的運算和重寫,另外尋址模式非常豐富。 缺點是酒?峁垢叢櫻?面積偏大,面積偏大導致這類CPU的頻率不能太高!
CPU--哈佛結構,總線獨立,能夠提高并行,基本上以數(shù)據(jù)流加工為主。 所以DSP,以及一些RISC的體系也很多 。
這里聲明,RISC,CISC和CPU結構無必然聯(lián)系。
簡單說來:RISC是以總線結構越少越好,通絡盡可能簡單。例如大部分指令面向寄存器,然后數(shù)據(jù)操作多數(shù)在寄存器完成。 有很多甚至基于堆棧。
共享總線的速度設計與性能總結:
完成相對高的總線頻率
相對低廉的成本
不能并行?。ㄟ@個是缺點)
共用的仲裁結構(缺點,反應速度慢)
所有主設備對從設備的存取都存在競爭關系(同時訪問時候)
當然在FPGA中,雙向三態(tài)的實現(xiàn)是依靠多選一和DFF的隔離來實現(xiàn)的,而且,多數(shù)為同步設計。 當然在現(xiàn)代分離系統(tǒng)的設計中,已經(jīng)很早有這樣的先例。
例如一個ARM和TI的DSP進行協(xié)同的系統(tǒng),TI DSP中有對總線進行釋放的功能機制,釋放的時候,可以由ARM來對DSP中的數(shù)據(jù)結果進行交換,或者是操作參數(shù)的更新。 然后再將總線控制權返回給主控的ARM.在FPGA中,也是同樣的道理。
NIOS II的總線結構Avalon是具有全數(shù)字交叉的總線結構,支持多主并發(fā)的結構。
FPGA中,由于FPGA中豐富的互聯(lián)結構,以及FPGA中本身的邏輯膠合的本身設計定位,決定了在FPGA中的SOPC的總線結構:全數(shù)字交叉的互聯(lián)結構是SOPC在FPGA中性能發(fā)揮的調節(jié)棒!
很多人對此有以下?lián)鷳n:
仲裁結構復雜,
規(guī)模過于龐大
對設計工具要求高(每次互聯(lián)設計,可能要修改太多東西)
Altera采用了一個折中的方式就是部分數(shù)字交叉結構。
而且將仲裁機制放在了從端,這樣做的好處,就是有沖突訪問可能的從設備,就對他增加仲裁,好處:
降低了總線規(guī)模
提高并行性
仲裁效率高
沒有優(yōu)良的總線結構,一切都是空談,有效的機制,可以彌補CPU的性能的低能化!
總線接口的抽象!Xilinx和Altera志同道合
盡管總線接口的抽象不同,但是,不代表總線結構一致。 X是總線共享型,A是數(shù)字交叉型。
例如Avalon-MM,Avalon-SM
Xilinx是PBv,和Fastlink來對應
MM是意思采用存儲地址映射抽象,就是將所有端口定義為可以用內存地址來尋址操作。 而SM是代表流媒體數(shù)據(jù)型,也就是一般和DMA都有一定的聯(lián)系,當然,也是一種要不就是不斷接收數(shù)據(jù)流 ,要不就是發(fā)送數(shù)據(jù)流的接口。 例如,VGA的數(shù)據(jù)緩沖,DSP信號數(shù)據(jù)的輸入和輸出,例如AD數(shù)據(jù)的輸入,以及DA的輸出,同時具有FIFO功能。
并行,并行,再并行。
FPGA中用的設計語言,VHDL,Verilog HDL等,這些都是并行的,F(xiàn)PGA之所以能在很多DSP領域進行大顯身手,也是因為他良好的并行擴展性。 那同樣。 在SOPC中,要提高系統(tǒng)的整體性能,還是要并行,并行再并行!
上面就結構已經(jīng)進行了簡單的說明。 那么在數(shù)據(jù)處理的單元上如何設置呢。
1---動態(tài)總線寬度的適應。
當你要將32bitNIOS和8bit,或者16bit的系統(tǒng)進行連接的時候,他應該能自動適應!
2--增加多個主控單元,對一些控制進行有效并發(fā)。
歸納為三點:
多增加CPU的個數(shù),SOPC支持多CPU,而且現(xiàn)在很多CPU也在發(fā)展多核。 商用PC已經(jīng)很成熟了。
多增加DMA的通道個數(shù),這樣CPU可以干別的事情,至少數(shù)據(jù)吞吐加大
增加PCI-e的設備,這樣,NIOS,F(xiàn)PGA不方便處理的,可以通過這樣的接口進行功能上的折中。 當然以后也可以增加RapidIO來和TIDSP進行數(shù)據(jù)的互換。
3--創(chuàng)建分離的數(shù)據(jù)通路
4--用多DMA進行輔助。 例如
沒有新的發(fā)明,只是新的組合!
實際上今天很多所謂的創(chuàng)新,也就是一些不同設計元素的合并和組合。 TSMC,在20年前開始代工的時候,有很多人質疑這種方式,實際上這個是一種商業(yè)模式的創(chuàng)新。 Altera是前期一些Fabless的廠商之一,很多人也懷疑沒有自己的工廠?怎么可以做好產(chǎn)品。 但是回顧今天,大家不都是走這樣的路嗎。 當然也有一些自己領域的佼佼者,內存,CPU還是自己開灶。
話題拉回,當你一個系統(tǒng)已經(jīng)不方便的時候,或者是某種功能要求有很突出表現(xiàn)的時候,兩個或者多個CPU的系統(tǒng),或者是拆解再增加必要的子系統(tǒng)。 也是一種創(chuàng)新。
分割為多個子系統(tǒng)的好處:
方便管理
由于分割后,從設備可以分在不同的有限個主設備中,提供并行,降低沖突。
從系統(tǒng)之間耦合較松,就是說可以
依靠共享內存,消息傳遞,信號燈互鎖,F(xiàn)IFO等機制進行同步和信息交換。
一生二,二生三,三生萬物.....
現(xiàn)在的工具都很方便復制和例化多個功能單元。 當你設計好一個上面的系統(tǒng)的時候,你也可以將他們又構成一個模塊,然后復制這些模塊來達到更大的系統(tǒng)。 這種在DSLAM的設計,或者是多路以太網(wǎng)復用到光設備等經(jīng)常應用。
因此,
一生二,二生三。。。。
當然這種思想是建立在大批量復制功能單元的策略。
另外,還有一種大家熟悉的方式,
就是提高局部的流水動作以提高系統(tǒng)吞吐。 你不僅要有火尖槍,同時也要有混天綾?;ハ嗯浜喜攀亲匀恢?。
流水的數(shù)據(jù)操作分為兩類:
讀流水
寫流水
讀流水和寫流水主要是針對目前的一些存儲外設來設計的,就是一個主設備可以在第一讀的動作發(fā)生,但是沒有數(shù)據(jù)返回的前提下,連續(xù)發(fā)出多個讀的動作,然后在適當?shù)臅r鐘延遲后,連續(xù)得到由連續(xù)發(fā)出讀的指令而產(chǎn)生的返回數(shù)據(jù)序列。 好處是,用個圖來表達就明白了。
當然了,你可能說,這個說易行難,設計經(jīng)驗不足。 沒有關系,SOPCbuilder的master和Slave接口,已經(jīng)將這些都做好了。 如果你想自己設計一個,實際知道這樣的時序,你也可以的。 不外乎就是要做一個讀和返回地址的計數(shù)器,計數(shù)器的差值是在Readdatavalid的返回時候發(fā)出的地址數(shù)目,當然你也要設計好數(shù)據(jù)的寬度
ARM Vs Nios II
大家對ARM和NiosII喜歡比較,今天就說上幾句。
最快的NiosII (250Mhz) 比ARM7快,
最小的NiosII比最小的ARM7要小
另外NiosII已經(jīng)有了MMU,而且對Linux進行了支持
ARM7是把西瓜刀
NiosII是把瑞士軍刀。NiosII做一個分型算法借助C2H,速度是ARM7的400倍,不算慢。 但是ARM7的生態(tài)資源廣,這兩個應用實際上是相輔相成。
RemyMartin:
Nios其實最大的缺點在于需要外掛一個Memory,這一點使之成為雞肋。
很不明白,很簡單的一個程序要NIOS IDE 一編譯就會弄出來至少幾KB,基本上要在幾十KB,誰也不可能用片上的mem來做這個:
1--小容量的FPGA,mem不夠用
2-- 大容量的也許夠,但是誰能把寶貴的片上ram全都給nios,再說,即使都給了nios,軟件要是有功能增加和改動,萬一不夠了怎么辦?要用Nios,就需要外加mem,這一點太可惡了。
------------------
nios不扎地,sopc builder倒是個好東西。
bb69:
1. 最小的NiosII做做ARM7,51的工作還是有可能。從Altera合作廠商可以了解的到Nios在OSD、GUI這些應用上還是有比較完整的解決方案,比如一個叫D/AVE的IP就是基于Nios,做的是導航和汽車儀表這些東西,再高級一點的應用如3D加速、能實現(xiàn)的分辨率就很低了,關鍵還是受性能影響(存儲器帶寬、包括主頻),Nios能做的最高級別的事情也可能就是這些了。
2. 最快的NiosII (250Mhz) 恐怕的在Stratix上才能跑這么快了,看看現(xiàn)在廣泛應用的CPU就知道頻率好像不是什么賣點,再說了250M對非軟核CPU應該是一個很低的頻率了吧,何況在要用到Stratix的項目中如果使用傳統(tǒng)cpu(ARM、MIPS、Xscale、coldfire)所有提供的豐富外設以及成熟的平臺才是方案設計者所看重,在這樣的項目或系統(tǒng)中nios恐怕沒有市場(個人臆測)。
工藝在進步,F(xiàn)PGA收益,ASIC同樣也收益,也許以后會有更多的nios出現(xiàn)在項目中,何況nios(或者軟核)有一個天生的局限,必須在FPGA中實現(xiàn)或者原型設計中使用了Nios然后轉到ASIC的芯片中存在(synopsis好像提供了Nios綜合流片的支持),不知道這是份額是多小!呵呵 ~~ 。
-----------------------------------------------------------------------------------------------------------------------------------------
Nios也好Microblaze也罷,廠商開發(fā)這些東西出來真正的目的不是取代現(xiàn)有的CPU,為的只不過是為了賣更多的FPGA。大家使了勁的玩Nios,F(xiàn)PGA廠家當然也樂意推了。 一句話有時間弄NiosII還不如看看ARM、PowerPC的datasheet,這兩系列一個代表大批量,一個代表高端。 當開始一個新的項目的時候你的FPGA里面要做做什么UART、IIC這些簡單的接口或協(xié)議的時候又不想辛苦寫狀態(tài)機NiosII是一個不錯的選擇。
想了一想老是拿NiosII這級別的東西說事是有點低級了,RemyMartin說的沒錯 “nios不扎地,sopc builder倒是個好東西。” 能把互聯(lián)做的十分方便。以后FPGA容量大了用的IP多了,用這么個東西來配置還真是方便。
說了這么多希望對大家實際做項目有點用。