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