因?yàn)轳R上要離職的原因,需要將一些東西整理一下做交接。就將Xilinx ZYNQ-7000的使用經(jīng)驗(yàn)做一下總結(jié),希望對(duì)剛接觸的人有一點(diǎn)幫助。需要說(shuō)明的是,在接觸到ZYNQ-7000之前,我并沒(méi)有做過(guò)FPGA的設(shè)計(jì),這一部分的基礎(chǔ)可以說(shuō)是零。而這一年的工作重心也并不是FPGA設(shè)計(jì),所以這一系列文章的重點(diǎn)是工具的使用,以及ZYNQ-7000的設(shè)計(jì)流程,而不是具體如何設(shè)計(jì)。該系列文章的硬件平臺(tái)是:ZC702(XC7Z020-1CLG484CES )。所用軟件包括:PlanAhead、Xilinx Platform Studio、Xilinx Software Development Kit,版本均為14.4。串口工具為Tera Term。
ZYNQ-7000是Xilinx推出的一款全可編程片上系統(tǒng)(All Programmable SoC),該芯片集成了ARM Cortex A9雙核與FPGA,所以ZYNQ是一款SoPC芯片。其架構(gòu)如下圖:
圖中的Processing System(一般簡(jiǎn)稱為PS)即為處理器(ARM Cortex A9 MPCore)部分,里面資源非常的豐富,具體可參看Xilinx官方文檔。Programmable Logic(一般簡(jiǎn)稱為PL)即可編程部分(FPGA),該部分的資源隨SoC芯片級(jí)別高低不同而不同,最低的是Artix-7(Zynq-7010和Zynq-7020),最高的是Kintex-7(Zynq-7030和Zynq-7045)。當(dāng)然,后續(xù)可能SoC中的FPGA會(huì)使用更高的Virtex系列,這個(gè)就不得而知了。
PS和PL的關(guān)系:
PS的實(shí)質(zhì)就是一個(gè)ARM Cortex A9 MPcore,所以如果我們不使用可編程部分,我們完全可以只使用PS部分。也就是說(shuō),對(duì)于ZYNQ芯片,PS部分可以完全獨(dú)立使用,不依賴PL部分。
PL部分的實(shí)質(zhì)是Xilinx FPGA。在ZYNQ中,我們可以把PL看成是PS的另一個(gè)具有可重配置特點(diǎn)的“外設(shè)”,它可以作為PS部分的一個(gè)從設(shè)備,受ARM處理器控制。比如ARM(PS)的串口數(shù)量不夠時(shí),以太網(wǎng)接口不夠時(shí),或者需要視頻接口時(shí)都可以用PL部分?jǐn)U展。當(dāng)然我們也可以把PL部分看成一個(gè)不受ARM處理器控制,與ARM處理器對(duì)等的主設(shè)備,主動(dòng)完成與外部芯片、接口的數(shù)據(jù)交互。更甚至PL部分也可以作為整個(gè)系統(tǒng)的主設(shè)備,主動(dòng)從APU部分的存儲(chǔ)器中獲取、存儲(chǔ)數(shù)據(jù),并可控制ARM處理器的運(yùn)算。所以,理論上PL部分也可以像PS部分那樣獨(dú)立運(yùn)行。但限制是必須使用JTAG接口對(duì)PL部分進(jìn)行配置。如果沒(méi)有JTAG接口,就無(wú)法獨(dú)立運(yùn)行,因?yàn)閆YNQ的PS部分和PL部分都必須依靠PS來(lái)完成芯片的初始化配置。
隨著嵌入式系統(tǒng)越來(lái)越復(fù)雜,功能越來(lái)越強(qiáng)大,往往在設(shè)計(jì)中既需要非常靈活的FPGA,又需要處理器去做一些控制,以及配合操作系統(tǒng)使用。傳統(tǒng)的方法是使用一個(gè)FPGA芯片和一個(gè)處理器芯片,比如FPGA ARM這種模式。不過(guò)在這種模式中,F(xiàn)PGA和ARM之間的通信往往會(huì)成為系統(tǒng)的瓶頸。但在ZYNQ7000中,將FPGA和ARM集成在一個(gè)芯片內(nèi)部,兩者之間的通信使用AXI_HP、AXI_GP、AXI_ACP三種接口通信,帶寬可達(dá)吉比特,基本上不會(huì)存在二者通信帶寬不足的問(wèn)題。當(dāng)然,傳統(tǒng)上也有在FPGA上實(shí)現(xiàn)一個(gè)軟核(比如Altera 的 Nios II,Xilinx的Picoblaze 、Micoblaze等),這樣對(duì)于一些對(duì)處理器要求不高的場(chǎng)合是可以勝任的,但如果對(duì)于處理器要求比較高的場(chǎng)景,這種軟核的性能往往是捉襟見(jiàn)肘。而且軟核會(huì)占用一部分PFGA的資源。所以ZYNQ系列實(shí)現(xiàn)FPGA和硬核的集成,對(duì)于嵌入式開(kāi)發(fā)設(shè)計(jì)可以說(shuō)是具有里程碑意義的一件事。
Xilinx為ZYNQ的開(kāi)發(fā)提供了三個(gè)主要軟件:PlanAhead、Xilinx Platform Studio(XPS)、Xilinx Software Development Kit(SDK)。當(dāng)然,關(guān)于這三個(gè)軟件的定位以及作用,Xilinx以及網(wǎng)上都有很詳細(xì)很官方的說(shuō)明,我就不贅述了。我個(gè)人理解PlanAhead就是做整個(gè)硬件環(huán)境搭建,系統(tǒng)集成的。XPS可以從PlanAhead直接調(diào)用,主要用于處理器部分的開(kāi)發(fā)設(shè)計(jì)。SDK是Xilinx對(duì)Eclipse的改裝,主要用于軟件部分的設(shè)計(jì)。當(dāng)然,目前Xilinx已經(jīng)推出了新一代的設(shè)計(jì)軟件Vivado,詳情可參加X(jué)ilinx官網(wǎng)。
當(dāng)然,ZYNQ系列的芯片本身的設(shè)計(jì)與結(jié)構(gòu)就很復(fù)雜,其涉及到的技術(shù)更是非常之多,因?yàn)楸鞠盗形恼碌亩ㄎ唬粫?huì)對(duì)這些進(jìn)行總結(jié)。而且其實(shí)也沒(méi)有必要,這些東西都可以在Xilinx官方提供的文檔中找到。我只會(huì)總結(jié)一些文檔中沒(méi)有提到的,或者沒(méi)有系統(tǒng)概括總結(jié)的東西。
PS:該系列文章不涉及任何與我具體工作內(nèi)容有關(guān)的東西,也請(qǐng)勿問(wèn)。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。