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