
發布
注冊
/
登錄FPGA編程的案例
基于FPGA的步進電機控制系統的設計方案
由于FPGA編程方式簡單,開發周期短,可靠性高,使其在工業控制領域的應用廣泛。
0 引言
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制電機,輸入脈沖總數控制步進電機的總旋轉角度,電機的速度由每秒輸入脈沖數目所決定,因此易實現機械位置的精準控制。而且由于步進電機價格低廉、可控性強等特點,使其在數控機床傳送控制等自動控制領域中得到了廣泛的應用。但隨著技術的發展以及企業生產的要求,步進電機傳統的以單片機等微處理器為核心單元的控制系統暴露出了如下缺點:控制策略單一不利于實現人機交互,而且控制電路復雜、控制精度低、生產成本高,系統穩定性不夠,步進分辨率低、缺乏靈活性,低頻時的振蕩和噪聲大,而且受步進電機機械結構和空間的限制,步進電機的步距角不可能無限的小,難以滿足高精度開環控制的需求。由于FPGA編程方式簡單,開發周期短,可靠性高,使其在工業控制領域的應用越來越廣泛。本文在總結FPGA的分頻技術以及步進電機細分控制原理的基礎上,通過PWM控制技術來提高步進電機的分辨率,仿真和實驗表明,本文采取的措施有效地實現步進電機控制的高效、精確控制。
1 步進電機細分控制原理
步進電機的工作原理如圖1所示,對四相步進電機而言,按照一定的順序對各相繞組通電即可控制電機的轉動。例如,當開關B與電源導通而其他開關斷開時,在磁力線的作用下B相磁極和轉子0,3號對齊;當開關C與電源導通而其他開關斷開時,在磁力線的作用下,轉子轉動,1,4號齒和C相繞組的磁極對齊。同理,依次向A,B,C,D四相繞組供電,電機就會沿著A,B,C,D方向轉動。
為了理解步進電機的不足,還需了解步進電機的步距角。步距角的定義為:
式中:km為步進電機的工作節拍系數;zn為齒數。
展開 在ADS中如何進行仿真分析?
對于實際電路的方式又分為擁有特定的芯片,一種是沒有特定的芯片,這就可以使用一些FPGA芯片搭建一些電路進行實際測試的,這需要工程師具備一些電路設計的能力以及FPGA編程的能力,使整個鏈路運行起來,再結合仿真進行“仿測同源”,通過仿真進一步的優化設計,這也涉及到一個人員和成本的問題,當然,對于一些大公司還是具備的;對于一些中型的公司來講,無法通過實際的電路進行驗證,就只能通過ADS這類的工具來進行仿真驗證和評估,如果知道芯片的類型并且有模型,可以針對性的進行特定的仿真,如果不知道芯片的型號或者沒有模型,就使用ADS中的TX_Diff和Rx_Diff元件,在元件可以設定信號的速率、PRBS的碼型、抖動、均衡等參數,然后進行仿真評估;對于一些小公司而言,這就只能憑經驗了。
在以前的文章中介紹過,在獲得了連接器、線纜或者PCB背板的測試或者仿真S參數之后,可以在ADS中非常方便的判斷是否滿足總線或者設計的要求:
本文就和大家分享下在ADS中如何對這類的情況進行仿真分析。無源器件或者無源通道都是用S參數來表征。假設通道使用的S參數如下所示:
在10GHz時,損耗接近-30dB,回波損耗將近-20dB。搭建一個有源仿真通道如下圖所示,采用的IBISAMI是stratix5gx:
單擊F7鍵仿真,獲得的結果如下所示:
從仿真的結果可以看到,結果并不是非常好,這種情況下,可以通過修改配置芯片的均衡或者加重值,看是否能獲得比較好的鏈路性能。雙擊TX_AMI模型,如下圖所示:
在按F7仿真,獲得仿真結果如下所示:
顯然,調整之后的結果非常好。如果調整加重或者均衡到最合適的值之后依然無法滿足要求,那么就說明設計的通道需要再優化。
展開 PLC與PLD只有“一字之差”,但你知道究竟有什么區別?
某型號的PLD內部電路
典型的PLD由一個“與”門和一個“或”門陣列組成,而任意一個組合邏輯都可以用“與一或”表達式來描述,所以,PLD能以乘積和的形式完成大量的組合邏輯功能.這一階段的產品主要有PAL(可編程陣列邏輯)和GAL(通用陣列邏輯)。
對于可編程邏輯器件,設計人員可利用價格低廉的軟件工具快速開發、仿真和測試其設計。然后,可快速將設計編程到器件中,并立即在實際運行的電路中對設計進行測試。原型中使用的PLD器件與正式生產最終設備(如網絡路由器、DSL調制解調器、DVD播放器、或汽車導航系統)時所使用的PLD完全相同。這樣就沒有了NRE成本,最終的設計也比采用定制固定邏輯器件時完成得更快。
采用PLD的另一個關鍵優點是在設計階段中客戶可根據需要修改電路,直到對設計工作感到滿意為止。這是因為PLD基于可重寫的存儲器技術--要改變設計,只需要簡單地對器件進行重新編程。一旦設計完成,客戶可立即投入生產,只需要利用最終軟件設計文件簡單地編程所需要數量的PLD就可以了。
某型號PLD外觀
下面以FPGA為例進行介紹PLD的編程原理
編程數據存儲單元以陣列形式分布在FPGA中,編程數據存儲單元陣列結構如圖1所示。存儲單元為5管SRAM結構, 只有一根位線。其中T管為本單元控制門,由字線控制。數據以串行方式移入移位寄存器,而地址移位寄存器順序選中存儲單元的一根字線,當某列字線為高電平時, 該列存儲單元的T管導通,從而與位線接通,在寫信號控制下將數據移位寄存器中一個字的數據通過各列位線寫入該列存儲單元。
編程數據按照一定的數據結構形式組成數據流裝入FPGA中,編程數據流由開發軟件自動生成。
展開 【產品技術】虹科分享 | 以千兆像素的速度進行圖像處理
4
秒千兆像素實時處理解決方案
想要達到幾十上百Gbps的數據速率,除了昂貴的ASIC之外,只有基于高端FPGA的圖像采集卡架構才能提供必要的處理性能來克服上述挑戰。這些采集卡擁有遠甚于傳統的預處理步驟,以執行復雜的成像算法,從小波變換一直到深度學習推理和實時壓縮。壓縮是克服PCIe和主機內存帶寬瓶頸的一個強制性功能。
這種高端圖像采集卡的設計本身就是一個挑戰,特別是在涉及利用來自多個圖像區域或多個傳感器的數據的算法的實現時。為了規避可能的瓶頸并實現分布式處理的靈活性,圖像采集卡必須包括功能強大的收發器,足夠的FPGA資源,高機載內存訪問權限和快速DMA卸載引擎。這樣的圖像采集卡通常包括訪問速度為TB/s的FPGA內部存儲器,以及訪問速度為數百GB/s的10+ GB DDR4板載存儲器。
FPGA上實現機器視覺算法通常需要在FPGA編程方面有深入的專業知識。此外,在單個FPGA上實現多攝像機采集和處理需要集成多接口,攝像機協議,多源處理算法,存儲器控制器,I / O端口控制和主機橋。
展開 
在阿爾瑪汽車上用modeFRONTIER for LabVIEW進行ECU系統的優化
國家儀器公司設備的靈活性提供了對發動機和試驗設備的完全控制,而mF4LV的先進算法使他們可以快速有效地實現目標
按如下步驟建立自動調節系統的試驗環境:
●發動機和試驗臺控制器(分別連接到發動機和試驗臺傳感器/作動器),包括CompactRIO設備,用FPGA板編程及配置;
●信號從CompactRIO發送到兩臺存儲數據和設置操作參數的主機電腦。阿爾瑪汽車開發的接口提供了便捷的交互系統;
●?mf4lv運行在主機電腦連接到發動機控制器。
發動機在通過負載和旋轉速度確定的穩態工作點工作:傳感器通過CompactRIO向目標PC發送數據。mF4LV與LabVIEW共同驅動發動機控制器(比如ECU系統)以優化選定目標。
測試1 |點火提前標定以得到最大制動轉矩
挑戰
對安裝在一個測試平臺上的真實發動機的火花提前盡可能快地找到最佳校準。
解決方案
對點火提前進行控制以達到最大制動力矩(MBT)。在mF4LV中設置了點火提前角的范圍,它從缸內壓力傳感器接收信號。對信號進行處理,以得到目標并最大化(平均指示壓力,IMEP)。mF4LV使用SIMPLEX算法在10次優化迭代后得到最大扭矩。
測試2 |油膜自動動態補償
挑戰
一定比例的(x值)汽油注入到火花點火發動機的進氣歧管,在進氣道的底部沉積,當蒸發時間過去后,沉積的燃料進入到氣缸。通過實時識別X和TAU值,油膜可以動態補償以預防發動機反應延遲。
解決方案
預期注入面上收集輸出的λ信號越多,補償的比例就越高。因此,當補償“打開”時,信號波形與理想越接近,校準越好。mF4LV能自動映射X和TAU值,建立優化補償策略。
展開 車載雙目相機,老兵的二次出征
通用型的GPU不是特別適合作為主處理芯片,算法定型之后,ASIC是最優解,但在算法沒有定型的今天,可硬件編程的FPGA芯片無疑是最佳的選擇。而基于硬件編程語言對FPGA編程的難度,又是中小型創業公司難以逾越的鴻溝。Veoneer第四代雙目相機產品就是使用了Xilinx(Zynq UltraScale+ MPSoC)的FPGA做處理器;
(3)光照敏感是依賴自然光傳感器的通病。想象一下,你迎著光和逆光拍攝同一物體,然后讓機器去匹配兩張圖片上對應像素點,人腦都有點困難,如何敢要求“機腦”呢。而現實世界中,因為光照角度原因,確實會導致左右相機成像明暗相差較大,這在一定程度上增加了立體匹配的難度,增大了立體匹配的誤差;
(4)被測物體單調的紋理又是雙目相機另外一個軟肋,針對顏色一致的貨車車廂、顏色一致的墻面,左相機的一個像素點可能有極線上大部分像素點都匹配,雙目相機算法工程師不得不再次跪在立體匹配的難度與誤差上。
所以只有克服上述困難后,你才會擁有一個結構簡單、成本美麗、測距能力優秀、測距精度適中的深度測量法器。而上述困難沒有現成的開源方案任君選擇,也不是簡單招幾個算法工程師研究三個月、半年就可以搞定的事情,需要的是龐大研發隊伍曠日持久的投入。所以我們看到修煉這件法器的基本都是鄉紳土豪。國外有Veoneer、博世、大陸、電裝、日立等,國內中科慧眼、華為、大疆等,而能駕馭這件法器也都非富即貴,國外有斯巴魯、奔馳、豐田、本田等,國內有吉利、紅旗等。
展開 AI、“云”都需要芯片技術基礎,「菲數科技」以FPGA布局運算加速產業
很多做云數據中心技術的人,把FPGA稱為“萬能芯片”。
FPGA(Field Programmable Gate Array)即“現場可編程門陣列”,是指一切通過軟件手段更改、配置器件內部連接結構和邏輯單元,完成既定設計功能的數字集成電路。如果門電路的規模足夠大,FPGA通過編程可以實現任意芯片的邏輯功能,例如ASIC、DSP甚至PC處理器等。
2015年,英特爾以167億美元收購了全球第二大FPGA芯片制造廠商Altera,讓許多人開始去了解FPGA在未來的發展趨勢,而英特爾當時對未來五年數據中心格局的判斷是,2020年CPU+FPGA異構計算將占據云數據中心市場的1/3。
36氪近日接觸到的FPGA芯片研發團隊「菲數科技」, 希望通過開發FPGA技術,并將其運用到云數據中心、人工智能等計算需求大的場景。
菲數目前主要開發異構加速解決方案,產品形態主要分為兩類:硬件加速板卡以及FPGA IP。硬件加速板卡的銷售,包括板卡本體以及相應的云開發環境;FPGA IP的銷售則提供菲數整套深度學習解決方案,包括板卡、FPGA IP(內核模塊)方案以及用戶API(用戶應用程序編程接口)。
菲數科技創始人兼CEO王文華告訴36氪,2017年亞馬遜在“云”上用了FPGA技術,“當時這個技術火了以后,BAT等國內互聯網企業也開始注意到或是開始進入這個市場?!?同樣作為AI以及云技術常用的硬件GPU,從功能上來講其運算方式更貼近與應用軟件,且在高性能計算環境下優于FPGA,FPGA的優勢在于延遲短、功耗低、擴展性強、做解決方案的時候更靈活,且在通訊行業有技術積累,就像聯網版的GPU,并擁有更多開放硬件接口。
王文華表示,FPGA目前在異構加速領域的應用主要分為兩類,一類是以微軟為代表的企業級應用,一類是以亞馬遜為代表的云上應用。
展開 使用FPGA實現ADAS設計的功能安全考慮
另外,還應該探測到FPGA中一個模塊向另一個模塊傳輸數據時數據的變化。前面提到的測試碼型或者測試幀方法涵蓋了大部分永久故障,但是,探測不到瞬時故障。而各種傳輸或者信息冗余技術能夠探測到這類故障。
中間層圖像處理實現了邊沿或者角探測算法,還可以應用特征提取算法。因此,只查看圖像中關注的特征,減少了生成數據。數據減少后,由于故障會導致后續處理步驟中丟失目標,因此,丟失特征的風險增大了。
高級圖像處理階段包括目標探測和目標分類。從軟件術語的角度來講,這一級主要是控制代碼,因此,非常適合在CPU上運行。HPS采用了幾種硬件功能(例如,ECC、MMU、看門狗),在HPS中進行故障診斷。
功能安全重要的另一面是確保減少系統性故障。這通過使用可靠的開發過程和工具來實現。ISO26262標準詳細規定了功能安全的管理要求,例如,對安全生命周期和支持過程中不同的行為進行一致性測量,類似配置和修改管理。如果所使用的工具有可能造成應用故障,那么就應該分析這些工具,進行測量以減小故障發生的概率。
ADAS是確保越來越擁擠的道路更加安全的下一波創新。這些系統的性能需求給現有以及未來的標準商用貨架(COTS)產品帶來了挑戰,而可編程FPGA在這方面有很大的優勢。實現專用診斷能夠擴大系統的診斷覆蓋。很多COTS產品在設計時并沒有體現功能安全,而通過使用具有功能安全的平臺和開發環境,與擅長功能安全的合作伙伴合作,這些都有利于系統的整體實現。(轉)
展開 FPGA在大數據時代的機遇與挑戰
然而,盡管FPGA被某些國內媒體熱捧為“萬能芯片”,真正的實現對FPGA的廣泛使用還是存在很多難點亟待克服。
第一,學界和業界仍然沒有開創性的方法簡化FPGA的開發,這可以說是現階段制約FPGA廣泛使用的最大障礙。和CPU或GPU成熟的編程模型和豐富的工具鏈相比,高性能的FPGA設計仍然大部分依靠硬件工程師編寫RTL模型實現。RTL語言的抽象度很低,往往是對硬件電路進行直接描述,這樣一方面需要工程師擁有很高的硬件專業知識,另一方面在開發復雜的算法時會有更久的迭代周期。因此,FPGA標榜的可編程能力與其復雜的編程模型之間,形成了鮮明的矛盾。
近五到十年來,高層次綜合(High Level Synthesis - HLS)一直是FPGA學術界研究的熱點,其重點就是希望設計更加高層次的編程模型和工具,利用現有的編程語言比如C、C++等,對FPGA進行設計開發。在這期間有趣的成果層出不窮,其中有代表性的HLS初創公司有多倫多大學Jason Anderson教授及其學生創辦的LegUp Computing,以及UCLA叢京生教授創辦的Falcon Computing等。
在工業界,兩大FPGA公司都選擇支持基于OpenCL的FPGA高層次開發,并分別發布了自己的API和SDK等開發工具。這在一定程度上降低了FPGA的開發難度,使得C語言程序員可以嘗試在FPGA平臺上進行算法開發,特別是針對人工智能的相關應用。盡管如此,程序員仍然需要懂得基本的FPGA體系結構和設計約束,這樣才能寫出更加高效的OpenCL模型。另外,基于OpenCL的FPGA設計移植性不是很好,且嚴重基于廠商提供的開發工具和底層模塊的性能,調試起來也不甚便利。
在數據中心網絡應用領域,兩大FPGA公司也開始支持名為P4的網絡編程語言。
展開 一文讀懂嵌入式FPGA所有貓膩,改變芯片設計方式豈是鬧著玩的
有了嵌入式FPGA,這個問題便解決了。芯片設計人員在開展項目時,會知道他們在項目期間擁有隨時更改RTL的靈活性,這是前所未有的。
因為嵌入式FPGA是一種新技術,在開始介紹之前,我們要將其與已經存在了幾十年的標準FPGA之間的差別說出來。從根本上講,嵌入式FPGA是一個IP block,允許將完整的FPGA集成到SoC或任意類型的集成電路中。正如RAM,SERDES,PLL以及處理器一樣,從單獨的芯片轉變成常規的IP block。FPGA現在也是一個IP區塊。
FPGA在可編程互連結構中組合了可編程/可重配置邏輯塊陣列。在FPGA芯片中,芯片的外緣由GPIO,SERDES和專用PHY(如DDR3 / 4)組成。在高級FPGA中,I/O環約占芯片的1/4,架構約占芯片的3/4。“架構”本身在如今的FPGA芯片中大多是互連,其中20-25%的結構面積是可編程邏輯,75-80%是可編程互連。
嵌入式FPGA是一種沒有周邊環形GPIO,SERDES和PHY的FPGA架構。相反,嵌入式FPGA使用標準數字信號連接到芯片的其余部分,實現非常寬,非常快的片上互連。
深入嵌入式FPGA內部之原始的構造塊
FPGA中的可編程邏輯塊是查找表(LUT),它可以通過編程實現任意布爾函數:4個,5個或6個輸入具有一個或兩個輸出。
在Flex Logix EFLX陣列中,LUT是一個雙4輸入LUT,它可以組合形成一個5輸入LUT。LUT輸出可以任意存儲在觸發器中。LUT通常被分組為具有進位邏輯的四個組,以便于加法器和移位器。
另一個可編程邏輯塊是MAC(乘法累加器)或DSP加速器塊。
在Flex邏輯EFLX陣列中,有一個22位預加器,一個22x22乘法器和一個4位后置加法器/累加器。
展開 使用FPGA實現ADAS設計的功能安全考慮
另外,還應該探測到FPGA中一個模塊向另一個模塊傳輸數據時數據的變化。前面提到的測試碼型或者測試幀方法涵蓋了大部分永久故障,但是,探測不到瞬時故障。而各種傳輸或者信息冗余技術能夠探測到這類故障。
中間層圖像處理實現了邊沿或者角探測算法,還可以應用特征提取算法。因此,只查看圖像中關注的特征,減少了生成數據。數據減少后,由于故障會導致后續處理步驟中丟失目標,因此,丟失特征的風險增大了。
高級圖像處理階段包括目標探測和目標分類。從軟件術語的角度來講,這一級主要是控制代碼,因此,非常適合在CPU上運行。HPS采用了幾種硬件功能(例如,ECC、MMU、看門狗),在HPS中進行故障診斷。
功能安全重要的另一面是確保減少系統性故障。這通過使用可靠的開發過程和工具來實現。ISO26262標準詳細規定了功能安全的管理要求,例如,對安全生命周期和支持過程中不同的行為進行一致性測量,類似配置和修改管理。如果所使用的工具有可能造成應用故障,那么就應該分析這些工具,進行測量以減小故障發生的概率。
ADAS是確保越來越擁擠的道路更加安全的下一波創新。這些系統的性能需求給現有以及未來的標準商用貨架(COTS)產品帶來了挑戰,而可編程FPGA在這方面有很大的優勢。實現專用診斷能夠擴大系統的診斷覆蓋。很多COTS產品在設計時并沒有體現功能安全,而通過使用具有功能安全的平臺和開發環境,與擅長功能安全的合作伙伴合作,這些都有利于系統的整體實現。(end)
展開 
FPGA技術將如何發展?
根據應用需求,可選擇低端、中端或高端FPGA配置。
FPGA架構概述
一般的FPGA架構設計包括三類模塊。它們是I/O塊、開關矩陣和可配置邏輯塊(CLB)。FPGA是一種半導體器件,由通過可編程連接耦合的邏輯塊組成。
邏輯塊由帶有一組輸入的查找表(LUT)組成,使用基本內存(如SRAM或Flash)來保存布爾函數。為了支持時序電路,每個LUT都連接到一個多路復用器和一個觸發器寄存器。類似地,可以構建許多LUT來處理復雜的函數。根據FPGA的配置,FPGA分為三種類型:低端、中端和高端。Xilinx的Artix-7/Kintex-7系列,Lattice半導體公司的ECP3和ECP5系列是一些流行的低功耗和低設計密度的FPGA設計。而Xilinx的Virtex家族,Microsemi的ProASIC3家族,Intel的Stratix家族都是為高性能和高設計密度而設計的。
FPGA固件開發
由于FPGA是一個可編程邏輯陣列,因此必須對邏輯進行配置以滿足系統的需要。固件是數據的集合,提供配置。由于FPGA的復雜性,利用該軟件設計了專用FPGA。用戶通過提供硬件描述語言(HDL)定義或原理圖設計來啟動FPGA設計過程。VHDL (VHSIC硬件描述語言)和Verilog是兩種常用的HDL。之后,FPGA設計過程的下一步是為所使用的FPGA系列開發一個網絡列表。這是使用電子設計自動化程序開發的,并概述了必要的FPGA內的連接性。
展開 HOT CHIPS 30周年,產業界都關注什么?
在Everest方面,這個Xilinx的重頭芯片不再是單純的FPGA,而是一款SoC。上面除了IO接口之外,用于處理任務的主要分為三部分:通用處理器,可編程引擎和可編程邏輯FPGA。通用處理器就是CPU,用于處理常規計算部分;可編程邏輯FPGA模塊則可以根據用戶需求配置成專用處理模塊,從而實現相應的計算加速。事實上,通用處理器加FPGA的架構Xilinx在之前的Zynq系列和MPSoC中已經引入并獲得了業界的肯定。這次的新要素則是可編程引擎部分。這部分可編程引擎實際上是一組矢量處理器單元組成的處理器陣列,并且通過互聯連接到了一起,用于處理高算力應用。因此,在實際應用中,Everest的通用處理器可以用于運行操作系統,并擔任控制器的角色;在遇到需要高算力的常規算法(如經典的圖像處理算法等)時,可編程引擎可以完成計算;在遇到其他特殊的計算(如神經網絡,深度學習)需要定制化邏輯才能滿足需求時,可編程邏輯FPGA則可以完成處理。這樣的設計,充分體現了異構計算的精神。
半導體巨頭Intel也不甘落后,在GPU領域展示了其在半導體工藝領域的深厚積累,使用EMIB異質集成技術在一塊封裝里集成了兩塊芯片,從而完成異構計算。EMIB技術即Embedded Muitl-Die Interconnect Bridge (嵌入式多晶片互聯橋接)。最傳統的異質集成技術在封裝的基底上走線來連接兩塊芯片,但是由于封裝的基底走線的密度有限,造成了芯片間互聯的總線寬度不能太寬,從而影響了系統的性能。另一個方法是TSMC等使用的2.5D方法(例如InFO),
首先在封裝的基底上先做一塊硅載片(silicon interposer),然后把芯片再固定在硅載片上,由于硅載片上的走線密度可以很高,因此異質集成系統的性能得到了保障,其缺點是硅載片的成本較高。
展開 摩爾定律謝幕,芯片的未來在哪?
FPGA:現場可編程門陣列
在加入微軟前,我曾和我的一名博士生Hadi Esmaeilzadeh做過一項關于“暗硅”(Dark Silicon)的研究。當時,業界正朝著多核芯片的方向發展,有人認為,只要能編寫并行軟件,就能將計算機芯片架構擴展到數千核。
我們在2011年發表的研究中發現,由于功耗的限制,一個多核處理器在同一時刻只能有很少的一部分晶體管能夠工作,而其余部分則處于休眠狀態。這項研究獲得了相當高的關注度。
受到這一研究的啟發,我們認為可以針對特定的工作使用定制硬件來加速計算,解決“暗硅”問題。但是對于普通用戶來說,定制芯片的經濟成本以及大量功能不同芯片的管理成本都很高。為了幫助用戶解決這個問題,微軟在Azure云平臺上部署了FPGA(現場可編程門陣列)。
FPGA全稱為“現場可編程門陣列”,之所以稱為“現場可編程”,是因為在做完芯片硬件設計和算法映射之后,我們仍然可以對FPGA芯片進行實時、動態地修改。我們可以隨時把它改寫成其它用途的芯片,甚至可以每隔幾秒修改一次。為了同時滿足性能、成本和靈活性的要求,我們可以使用定制芯片來處理部分長期穩定的計算需求,而使用FPGA來處理剩余計算需求。
FPGA此前就已經廣泛應用于通信領域,在處理高速數據流以及測試即將投產的芯片時的表現出色。但在云計算中,FPGA尚未真正成功地大規模使用。
CPU和GPU適合于處理不同的任務。CPU是一種通用處理器,適合處理少量數據;而GPU是一種單指令、多數據(Single Instruction Multiple Data,SIMD)的并行處理器,即一條指令對不同的幾組數據執行相同的操作。FPGA實際上是CPU模型的“倒置”。在FPGA上,我們不再固定數據、運行指令,而是固定一些指令、運行整批數據。我稱之為“結構化計算”,其理念為固定一種計算結構,讓數據不斷從其中流過。
展開 【知識分享】CPLD/FPGA 內部結構與原理
由于基于LUT的FPGA具有很高的集成度,其器件密度從數萬門到數千萬門不等,可以完成極其復雜的時序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數字邏輯電路設計領域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的布線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。
如前所述,FPGA是由存放在片內的RAM來設置其工作狀態的,因此工作時需要對片內RAM進行編程。用戶可根據不同的配置模式,采用不同的編程方式。FPGA有如下幾種配置模式:
并行模式:并行PROM、Flash配置FPGA;
主從模式:一片PROM配置多片FPGA;
串行模式:串行PROM配置FPGA;
外設模式:將FPGA作為微處理器的外設,由微處理器對其編程。
目前,FPGA市場占有率最高的兩大公司Xilinx和Altera生產的FPGA都是基于SRAM工藝的,需要在使用時外接一個片外存儲器以保存程序。上電時,FPGA將外部存儲器中的數據讀入片內RAM,完成配置后,進入工作狀態;掉電后FPGA恢復為白片,內部邏輯消失。這樣FPGA不僅能反復使用,還無需專門的FPGA編程器,只需通用的EPROM、PROM編程器即可。Actel、QuickLogic等公司還提供反熔絲技術的FPGA,只能下載一次,具有抗輻射、耐高低溫、低功耗和速度快等優點,在軍品和航空航天領域中應用較多,但這種FPGA不能重復擦寫,開發初期比較麻煩,費用也比較昂貴。
展開