SOPC
可編程片上系統
System-on-a-Programmable-Chip,即可編程片上系統。用可編程邏輯技術把整個系統放到一塊矽片上,稱作SOPC。可編程片上系統(SOPC)是一種特殊的嵌入式系統:首先它是片上系統(SOC),即由單個晶元完成整個系統的主要邏輯功能;其次,它是可編程系統,具有靈活的設計方式,可裁減、可擴充、可升級,並具備軟硬體在系統可編程的功能。
實驗板
SOPC它是用可編程邏輯技術把整個系統放到一塊矽片上,來用於嵌入式系統的研究和電子信息處理. SOPC是一種特殊的嵌入式系統,它是片上系統(SOC),即由單個晶元完成整個系統的主要邏輯功能但它不是簡單的SOC,它也是可編程系統,具有靈活的設計方式,可裁減、可擴充、可升級,並具備軟硬體在系統可編程的功能。
SOPC設計技術涵蓋了嵌入式系統設計技術的全部內容,除了以處理器和實時多任務操作系統(RTOS)為中心的軟體設計技術、以PCB和信號完整性分析為基礎的高速電路設計技術以外,SOPC還涉及以引起普遍關注的軟硬體協同設計技術。由於SOPC的主要邏輯設計是在可編程邏輯器件內部進行,而BGA封裝已被廣泛應用在微封裝領域中,傳統的調試設備,如:邏輯分析儀和數字示波器,已很難進行直接測試分析,因此,必將對以模擬技術為基礎的軟硬體協同設計技術提出更高的要求。同時,新的調試技術也已不斷湧現出來,如Xilinx公司的片內邏輯分析儀Chip Scope ILA就是一種價廉物美的片內實時調試工具。
SOPC結合了SOC和PLD、FPGA各自的優點,一般具備以下基本特徵:
至少包含一個嵌入式處理器內核;
具有小容量片內高速RAM資源;
豐富的IP Core資源可供選擇;
足夠的片上可編程邏輯資源;
處理器調試介面和FPGA編程介面;
可能包含部分可編程模擬電路;
單晶元、低功耗、微封裝。
完整的基於NiosII的SOPC系統是一個軟硬體複合的系統,因此在設計時可分為硬體和軟體兩部分。NiosII的硬體設計是為了定製合適的CPU和外設,在SOPCBuider和QuartusII中完成。在這裡可以靈活定製NiosII CPU的許多特性甚至指令,可使用Altera公司提供的大量IP核來加快開發NiosII外設的速度,提高外設性能,也可以使用第三方的IP核或VHDL來自行定製外設。完成NiosII的硬體開發后,SOPCBuider可自動生成與自定義的NiosIICPU和外設系統、存儲器、外設地址映射等相應的軟體開發包SDK,在生成的SDK基礎上,進入軟體開發流程。用戶可使用彙編或C,甚至C++來進行嵌入式程序設計,使用GNU工具或其它第三方工具進行程序的編譯連接以及調試。
第一步:打開QuartusII軟體,點擊tool按鍵
第二步:點擊用紅色標記的SOPCBuilder
第二步
第三步
1)Cyclone系列
2)Cyclone II系列
3)Cyclone III系列
4)Stratix系列
5)Stratix II系列
6)Stratix III系列
SOPC系統的總體設計方案
本系統採用加拿大 SBS公司的 TSUNAMI A40系列開發板,其核心的 FPGA模塊是Altera公司的 StratixEP1S40晶元。
2.1 系統演演算法的基本原理
圖
2.2 系統硬體的設計方案
如圖 所示,本系統硬體開發板通過 PCI橋與 PC機相連,原始圖片保存在 PC機中。 PCI-Avalon橋是 PC機與 FPGA開發板的通信介面,圖像數據經過 PCI-Avalon橋進入系統處理模塊。Sdram管理控制器用來管理和控制 Sdram中的數據存取。控制電路用來控制與協調各個外設的運行,實現狀態控制與數據傳輸等基本操作,包括讀取 Sdram中保存的圖像數據,控制圖像處理各模塊。 Sdram用來保存圖像數據。原始圖像數據最初由 PC機下載到 Sdram中,再通過 Sdram管理控制器傳輸給各處理模塊依次處理。處理后的圖像數據仍然通過 Sdram管理控制器返回 Sdram中保存。最後通過 PCI橋把最終圖像返回到 PC機。
2.3 系統軟體的設計
本系統的控制流程相對簡單,因此在 Nios II軟核中沒有內嵌操作系統,而是通過 IO操作調用中斷的方式實現運行狀態的控制、數據通信、協調外設等基本操作,控制系統各硬體模塊,使系統軟硬體協同工作。整個系統搭建成功之後,在 PC機上編寫應用程序對整個SOPC系統的運行進行控制。
3 系統演演算法的具體實現
3.1 濾波模塊
根據所採集到的圖像的特點,本文採用 3×3的模板實現中值濾波,這種方法不僅可以濾除圖像中的雜訊,而且可以將邊緣信息很好的保留下來。一般求取中值的方法是採用取冒泡法排序,但這種演演算法並不適合硬體實現。考慮到硬體實現的特點和效率,本文採用了一種全新的求取中值的演演算法,其原理如圖 3所示。其中 max、mid、min分別表示三輸入的最大值、中值和最小值比較器。最後經幾輪比較后求得中值。
3.2 邊緣提取模塊及二值化模塊
邊緣提取採用 Roberts運算元。 Roberts邊緣檢測運算元利用局部差分運算元尋找邊緣。
由於待處理圖像特徵明顯,採用經驗閾值法對圖像進行二值化,演演算法簡單、實現方便。
3.3 邊緣細化模塊
本文的邊緣是建立在二值化之後的,因此處理的圖像都是二值化的,邊緣非常清晰,不需要太複雜的演演算法。這裡採用兩個 3×3模板作乘積,如圖所示, X為待處理像素。如果模板乘積不為 0,於是中心象素為 1,反之為 0,即點的周圍有灰度為 0的象素,則保留此點,否則剔除。如此很容易得到二值化後點的單象素邊緣。
3.4 後續處理部分
後續處理部分由於其數據處理量並不大且演演算法比較複雜,所以在本系統中,這部分演演算法在NiosⅡ中以軟體的方法實現。
4 系統測試結果的分析與總結
經測試,本系統所有演演算法用 C語言在 PC機(配置: Pentium( R) 4CPU3.00GHz, 512MB內存)上實現,所需時間為 2'12",而本系統僅需 30",其中主要耗時為 NiosII軟體處理部分,系統的硬體演演算法部分所耗時間不到 1"。
1)基於FPGA嵌入IP硬核的應用。這種SOPC系統是指在FPGA中預先植入處理器。這使得FPGA靈活的硬體設計與處理器的強大軟體功能有機地結合在一起,高效地實現SOPC系統。
2)基於FPGA嵌入IP軟核的應用。這種SOPC系統是指在FPGA中植入軟核處理器,如:NIOS II核等。用戶可以根據設計的要求,利用相應的EDA工具,對NIOS II及其外圍設備進行構建,使該嵌入式系統在硬體結構、功能特點、資源佔用等方面全面滿足用戶系統設計的要求。
3)基於HardCopy技術的應用。這種SOPC系統是指將成功實現於FPGA器件上的SOPC系統通過特定的技術直接向ASIC轉化。把大容量FPGA的靈活性和ASIC的市場優勢結合起來,實現對於有較大批量要求並對成本敏感的電子產品,避開了直接設計ASIC的困難。
SOPC是PLD和ASIC技術融合的結果,0.13微米的ASIC產品製造價格仍然相當昂貴,相反,集成了硬核或軟核CPU、DSP、存儲器、外圍I/O及可編程邏輯的SOPC晶元在應用的靈活性和價格上有極大的優勢。SOPC被稱為“半導體產業的未來”。
很多人把主要精力放到了nios的定製上,認為可定製的CPU這一靈活的功能就是sopc的靈魂,實現了nios后,把fpga作為一個傳統的mcu來使用,這實際上是一種大材小用的行為,試想,相對於mcu系統來說,僅僅為了那一點點靈活性,就要憑空在系統設計中增添一項定製工作而得到一個並不是非常穩定可靠的cpu,然後用一個並不是很成熟的開發環境去進行和mcu系統類似的開發,這實在不是產品開發之道。當然,可以把邏輯電路也一同用fpga來實現,這就有那麼一點sopc的味道了。我個人對sopc的看法如下:
1:sopc應該是nios系統+硬實時部分+邏輯電路的一個組合體,其中nios負責數據管理,通訊,人機交互等實時性相對較低的任務,硬實時部分則是獨立於nios系統,充分利用現有IP,用hdl語言實現的某些實時性可靠性要求較高的關鍵部分,它可以和nios系統通過自定義的介面通訊。至於邏輯電路,這本就是fpga的強項,沒啥可說的,做一些介面以及邏輯處理吧。
2:對於nios系統,ALTERA已經推出了相對比較完整的方案,nios在功能上來講,已經非常全面了,並且也有多種os可供選擇,據說年底要推出帶有mmu的nios,到時候,linux應該會在nios上大行其道。
3:對於我認為最關鍵的硬實時部分,我認為這才是sopc系統的精華所在,但由於純粹要用hdl語言實現,最多是結合一些現有的ip,因此難度較高,我覺得這也正是ALTERA一直鼓吹sopc但效果卻並不理想的根本原因,不過ALTERA自有妙計,於是推出了dspbuilder。
4:至於dspbuilder,純粹是為了降低系統硬實時部分編碼過於困難的一個工具,ALTERA推出的參考方案多是音視頻等信號處理領域,但是由於靠上了matlab這個大牛(控制領域事實上的標準),自然是要在控制領域多下工夫,只是還不支持浮點,並且相應的IP也不齊備,但是基於matlab的直接代碼生成,肯定是一個方向,相信dsp builder會馬上支持浮點的,並且應該會在控制領域有所動作。實際上,dspbuilder或者說XILINX的SYSTEMgenerator的推出,就是為了降低開發難度,配合nios實現sopc系統,以此來和傳統的dsp處理器市場。
5:舉一個例子說明一下sopc的作用,以pci匯流排的視頻卡來講,一般來說都是dsp處理器完成視頻信號處理(實時性要求較高)、數據后處理、與pc通訊等功能,系統中如果採用fpga,大都是實現pci的橋接器以及其他邏輯功能,有了dspbuiler,那麼視頻信號處理這一實時性要求較高的功能完全可以用dspbuilder直接生成,然後用nios代替傳統dsp處理器的數據后處理和通訊功能,同時在集成pci介面和其他邏輯功能,如此則sopc大事成矣。