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