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