基于SoPC Builder的電子系統(tǒng)的開發(fā)
摘要:從系統(tǒng)總線設(shè)計、用戶自定義指令和FPGA協(xié)處理器的應用這三個方面詳細介紹了如何應用SOPC設(shè)計思想和SoPC Builder工具來開發(fā)電子系統(tǒng)。通過應用SOPC Builder開發(fā)工具,設(shè)計者可以擺脫傳統(tǒng)的、易于出錯的軟硬件設(shè)計細節(jié),從而達到加快項目開發(fā)、縮短開發(fā)周期、節(jié)約開發(fā)成本的目的。
關(guān)鍵詞:SoPC;SoPC Builder;FPGA
O 引言
隨著科學技術(shù)的進一步發(fā)展,SoC設(shè)計面臨著一些諸如如何進行軟硬件協(xié)同設(shè)計,如何縮短電子產(chǎn)品開發(fā)周期的難題。為了解決SoC設(shè)計中遇到的難題,設(shè)計方法必須進一步優(yōu)化。因此,人們提出了基于FPGA的SoC設(shè)計方案——SoPC(System on a programmable chlp)。隨著百萬門級的FPGA芯片、功能復雜的IP核和可重構(gòu)的嵌入式處理器軟核的出現(xiàn),SoPC設(shè)計成為一種確實可行的、重要的設(shè)計方法。
Altera公司在其開發(fā)工具QuartusⅡ中集成了SoPC Builder工具。在該工具的輔助下,設(shè)計者可以非常方便地完成系統(tǒng)集成,軟硬件協(xié)同設(shè)計和驗證,最大限度地提高電子系統(tǒng)的性能,加快設(shè)計速度和節(jié)約設(shè)計成本。
1 SOPC Builder工具的簡介
SoPC Builder是一個自動化的系統(tǒng)開發(fā)工具,它能夠極大地簡化高性能SoPC的設(shè)計工作。該工具提供一個直觀的圖形用戶界面,用戶可以通過圖形界面簡化系統(tǒng)的定義工作。由于SoPC Builder不需要直接編寫HDL代碼來定義系統(tǒng),這極大地節(jié)約了設(shè)計開發(fā)時間。SoPC Builder為每個元件提供了一個向?qū)?,利用該向?qū)芎苋菀椎囟x元件功能。例如通過向?qū)軌蚍浅H菀椎卦谝粋€設(shè)計中加入Nios處理器,外設(shè)接口等。為了將徽處理器核、外圍設(shè)備、存儲器和其它IP核相互連接起來,SoPC Builder能夠自動生成片上總線和總線仲裁器等所需的邏輯。通過自動完成以前易于出錯的工作,SOPC Builder可以節(jié)約幾周甚至幾個月的開發(fā)時間。SoPC Builder在一個工具中實現(xiàn)了嵌入式系統(tǒng)各個方面的開發(fā),包括軟件的設(shè)計和驗證,為充分利用SoPC技術(shù)提高電子系統(tǒng)的性能和降低成本提供了強有力的支持。本文將從系統(tǒng)總線的設(shè)計、用戶自定義指令、FPGA協(xié)處理器的應用這三個不同的方面展開討論,介紹如何利用SoPC Builder加快電子系統(tǒng)的開發(fā)。
2 系統(tǒng)總線的設(shè)計
系統(tǒng)總線主要解決多個主控制器相互連接、協(xié)調(diào)工作和資源共享的問題。例如一個系統(tǒng)包含多個處理器,或是一個處理器和一個具有DMA控制器的外圍設(shè)備時,SoPC Builder會自動生成總線仲裁邏輯,使得這些處理器和DMA控制器能夠共享從屬外圍設(shè)備或存儲器。SoPCBui-lder運用了一項被稱為從屬設(shè)備仲裁的技術(shù),該技術(shù)允許多個主控制器同時訪問數(shù)據(jù)。除非多個主控制器同時存取同一個從屬單元,否則仲裁邏輯不會拒絕任何一個主控制器的訪問。運用 SoPCBuilder圖形用戶界面可以非常方便地指定仲裁優(yōu)先級。SoPC Builder將自動生成—個與目標硬件相匹配的軟件開發(fā)環(huán)境,在此過程中還自動生成—個相關(guān)的頭文件和整個系統(tǒng)的仿真模型,包括ModelSim工程文件、標準化總線接口波形文件和驗證基于目標硬件的testbench文件。
運用DMA技術(shù)能夠提高數(shù)據(jù)讀取速度以增強系統(tǒng)的性能,從而使系統(tǒng)能夠更充分地利用CPU或總線的帶寬。這一設(shè)計思想在SoPC Builder中通過創(chuàng)建特定功能的外圍設(shè)備進一步加強。用戶自己可以定義用Verilog或VHDL語言描述的邏輯,并把它們加人到SoPC Builder的開發(fā)環(huán)境中。在圖形用戶界面的交互下,SoPC Builder會自動為這些用戶定義的邏輯創(chuàng)建必要的總線接口,使DMA控制器能夠訪問這些用戶定義的外圍邏輯。在數(shù)字信號處理領(lǐng)域,快速傅立葉變換或離散余弦變換就是很好的例子。這些變換對數(shù)據(jù)的處理是基于數(shù)據(jù)塊進行操作的。DMA控制器從系統(tǒng)外部讀取數(shù)據(jù),并把數(shù)據(jù)存儲到預處理存儲單元中。這一過程不需要處理器的干預,因此在這一期間處理器可以完成其它事情。等到DMA接收完數(shù)據(jù)后,處理器從預處理存儲單元中讀取數(shù)據(jù)進行處理,而DMA則把剛才處理器的處理結(jié)果讀出來送到指定的外圍設(shè)備中,并且繼續(xù)接收數(shù)據(jù)。在這樣的系統(tǒng)中,總線起到至關(guān)重要的作用。設(shè)計這樣的系統(tǒng)總線是一件非常繁瑣而且極易出錯的事情?,F(xiàn)在這一切都由SoPC
Builder工具自動生成,大大地減輕了設(shè)計者的負擔,提高了設(shè)計效率,加快了電子系統(tǒng)的設(shè)計速度。
3 用戶自定義指令
當數(shù)據(jù)塊比較小而且處理過程已確定時(只需幾個確定的CPU指令周期),最有效的處理方法是通過SoPC Builder為Nios處理器自定義用戶指令來實現(xiàn)。設(shè)計者可以直接在Nios處理器的算術(shù)邏輯單元(ALU)中加入具有特定功能的組合或時序邏輯塊,然后在SoPC Builder中將這些特定功能的邏輯塊和用戶自定義指令聯(lián)系起來,通過Ra和Rb兩個寄存器來實現(xiàn)。處理器的處理結(jié)果存儲在Ra寄存器中。這些用戶定義的功能僅由器件中的邏輯單元決定。在系統(tǒng)生成時,SoPC Builder自動為每一個用戶定義的指令創(chuàng)建一個宏。軟件通過在Nios嵌入式處理器指令集中用戶自己定義的操作碼來訪問這些特定功能硬件。由于采用硬件實現(xiàn)復雜的算術(shù)邏輯運算比用軟件更快捷、更高效,因此設(shè)計者在設(shè)計電子系統(tǒng)時應該著重考慮系統(tǒng)內(nèi)部重要的循環(huán)運算,讓這一部分盡量用硬件來實現(xiàn),把原先需要幾個指令周期才能實現(xiàn)的循環(huán)運算減少到只需一個指令周期就能實現(xiàn)。例如在循環(huán)冗余校驗計算中,設(shè)計者可以用非常簡單的硬件邏輯來代替需要多行軟件代碼才能完成的工作。這樣,原來需要多個時鐘周期才能完成的工作在一個時鐘周期內(nèi)就完成了。在創(chuàng)建或編輯Nios處理器時,將這部分硬件邏輯添加到處理器算術(shù)邏輯單元中,并為該邏輯塊定義—個指令。然后為該指令選擇操作碼,并導入描述這一硬件邏輯的HDL文件。SoPC Builder向?qū)詣訏呙桧攲幽K的端口,產(chǎn)生相應的連接。最后,向?qū)橛脩舳x的指令分配所需的CPU時鐘周期并命名這些指令。
4 FPGA協(xié)處理器的應用
在進行復雜的數(shù)字信號處理時,利用協(xié)處理器能夠大幅度地增強數(shù)字信號處理器的處理能力。因此在某些應用領(lǐng)域中,軟件開發(fā)者會利用硬件協(xié)處理器來減少各種復雜的數(shù)學運算,包括Viterbi解碼、Turbo編解碼、離散余弦變換等。與傳統(tǒng)基于DSP處理器的結(jié)構(gòu)相比,整合FPGA協(xié)處理器和DSP處理器的系統(tǒng)在性能上提高了1O倍,開發(fā)費用卻只有原來的1/10。作為數(shù)據(jù)的接收和發(fā)送者的FPGA協(xié)處理器可與DSP處理器相連接,這一結(jié)構(gòu)以處理特定數(shù)據(jù)流的硬件加速器為典型代表。在數(shù)字信號處理數(shù)據(jù)流中,F(xiàn)PGA協(xié)處理器可對數(shù)據(jù)流進行預處理和后處理。當需要處理的數(shù)據(jù)速率超過了DSP處理器所能處理的范圍時,這種結(jié)構(gòu)明顯地體現(xiàn)出其優(yōu)越性。它可以大大地提高系統(tǒng)的性能,減少設(shè)計開發(fā)成本。
由Altem公司定義的協(xié)處理器至少包含一個控制接口和一個數(shù)據(jù)接口。處理器或DSP可以用控制接口來設(shè)置協(xié)處理器并且監(jiān)視它的工作情況,用數(shù)據(jù)接口與存儲器、外圍設(shè)備或其它協(xié)處理器交換數(shù)據(jù)。系統(tǒng)開發(fā)者先創(chuàng)建FPGA協(xié)處理器,然后將該協(xié)處理器導入到SoPC Builder開發(fā)環(huán)境中,使之能夠非常方便地集成到整個設(shè)計系統(tǒng)中。在整個開發(fā)過程中,SoPC Builder可以自動為每個處理器單元或系統(tǒng)接口生成軟件開發(fā)組件,成功地解決了系統(tǒng)開發(fā)中軟硬件協(xié)同設(shè)計的問題。軟件開發(fā)組件增強了軟件驅(qū)動能力,使得所有功能模塊對該處理器是可見的??傊?,通過創(chuàng)建FPGA協(xié)處理器可以極大地提高系統(tǒng)的性能,減少開發(fā)成本,縮短設(shè)計周期。
5 結(jié)束語
SoPC是當前IC設(shè)計的發(fā)展主流,代表了半導體技術(shù)和ASIC設(shè)計的未來。Alters公司將SoPC設(shè)計思想集成到其開發(fā)工具SoPC Builder中,極大地提高了電子工程師的設(shè)計效率,加快了電子系統(tǒng)的開發(fā)速度,節(jié)約了設(shè)計成本,縮短了設(shè)計周期。