SOPC

科學知識 9547 329 2016-06-01

System-on-a-Programmable-Chip,即可編程片上系統。 用可編程邏輯技術把整個系統放到一塊硅片上,稱作SOPC。可編程片上系統(SOPC)是一種特殊的嵌入式系統:首先它是片上系統(SOC),即由單個芯片完成整個系統的主要邏輯功能;其次,它是可編程系統,具有靈活的設計方式,可裁減、可擴充、可升級,并具備軟硬件在系統可編程的功能。

基本信息

  • 中文名稱

    可編程片上系統

  • 外文名稱

    System-on-a-Programmable-Chip

  • 簡稱

    SOPC

  • 屬性

    嵌入式系統

  • 特點

    可裁減、可擴充、可升級,可編程

  • 主體

    芯片

目錄
1簡介
2

技術內容

3特點
4簡單流程
5支持芯片
6應用
7三個方向
8前景
9個人理解

簡介

英文全稱:System On a Programmable Chip. SOPC實驗板實驗板實驗板中文譯名:可編程片上系統

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

第二步第二步

第三步:定制CPU

第三步第三步第四步:完成并下載之nios電路板中

支持芯片

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 系統算法的基本原理

圖系統算法實現流程。首先,針對本系統圖像處理的要求與算法實現特點進行軟硬件劃分。圖像預處理部分所需要處理的數據量比較大,但算法相對簡單,可以通過 FPGA自定義相應的 IP模塊,采用硬件的方式實現;后續處理部分由于算法相對復雜,用硬件實現比較困難,而且其數據處理量不大,所以采用在 Nios II軟核中以軟件的方式實現。最后編寫系統控制軟件對整個系統進行控制使軟硬件協同工作。

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#39;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大事成矣。

6:在控制領域,關鍵問題是controller的實現,首先在控制領域,我認為nios2直接做控制器還難當大任,而且就算拋開可靠性、成熟性等因素,控制領域一般都是需要硬實時(hard real-time),同時一般還會有大量的浮點處理,我個人估計nios2恐怕難以實現,這些已經決定了controller必須用硬件實現,也就是用vhdl寫控制器,這樣做的話,對于系統中所需要的浮點運算,最好用相應的ip實現,否則恐怕很難。