創(chuàng)建自定義賽靈思板級(jí)描述(XBD)文件不僅有助于節(jié)省時(shí)間,而且還能確保設(shè)計(jì)項(xiàng)目按計(jì)劃推進(jìn)。為您設(shè)計(jì)的任意開(kāi)發(fā)板創(chuàng)建一個(gè)XBD文件并非難事。
FPGA廠商推出了許多出色的評(píng)估板和專(zhuān)用開(kāi)發(fā)板,既可用于評(píng)估FPGA,甚至還能作為開(kāi)發(fā)系統(tǒng)的基礎(chǔ)。不過(guò)有時(shí)設(shè)計(jì)項(xiàng)目需要的功能可能在評(píng)估板上并未提供,或者需要一款較小型的終端系統(tǒng)。在此情況下,設(shè)計(jì)團(tuán)隊(duì)必須構(gòu)建一款定制開(kāi)發(fā)板。
賽靈思每款評(píng)估板都配套提供一份XBD文件,其列出了FPGA的板載外設(shè)、配置、控制寄存器和引腳。XBD文件不僅可確保設(shè)計(jì)團(tuán)隊(duì)工作有條不紊地開(kāi)展工作,而且還有助于他們?yōu)楫?dāng)前乃至未來(lái)在開(kāi)發(fā)板上實(shí)現(xiàn)的設(shè)計(jì)制定最佳策略。
當(dāng)然,如果您創(chuàng)建的是定制開(kāi)發(fā)板,那就無(wú)法獲得賽靈思提供的XBD文件支持。但是花時(shí)間開(kāi)發(fā)自己的XBD文件還是值得的。專(zhuān)門(mén)制作的XBD文件能幫助設(shè)計(jì)團(tuán)隊(duì)管理項(xiàng)目,簡(jiǎn)化設(shè)備驅(qū)動(dòng)程序和固件開(kāi)發(fā)。所幸的是,經(jīng)過(guò)一番研究和努力,用戶(hù)不費(fèi)周折就可以為自己的開(kāi)發(fā)板創(chuàng)建一份自定義XBD文件。(對(duì)使用Vivado設(shè)計(jì)套件的用戶(hù)而言,賽靈思在隨Vivado設(shè)計(jì)套件2014.1版本一并推出的新型實(shí)用工具Board Manager中提供了XBD優(yōu)化功能。如欲了解更多信息,敬請(qǐng)查閱“Vivado設(shè)計(jì)套件用戶(hù)指南” http:/china.xilinx.com/support/docu-mentation/sw_manuals/xilinx2013_3/ug898-vivado-embedded-design.pdf 。)
下面我們來(lái)看看開(kāi)發(fā)自定義XBD文件的方法之一。就本實(shí)例設(shè)計(jì)而言,我們針對(duì)采用Virtex?-5 FX30T FPGA的定制開(kāi)發(fā)板創(chuàng)建XBD文件。
我們從賽靈思和分銷(xiāo)商安富利(Avnet)提供的技術(shù)文檔入手。由于我們必須自己編寫(xiě)XBD文件,因此必須遵循XBD語(yǔ)法。賽靈思已在平臺(tái)規(guī)范格式參考手冊(cè)中介紹了XBD語(yǔ)法(敬請(qǐng)查閱: )。
您的定制開(kāi)發(fā)板極可能需要串行通信(RS232和RS422)、模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)、RAM和閃存存儲(chǔ)器。正好賽靈思和安富利的評(píng)估板也提供這些外設(shè),所以找到有類(lèi)似部件的開(kāi)發(fā)板并參考其相關(guān)XBD文件就能加快自定義XBD文件的開(kāi)發(fā)進(jìn)程。
每個(gè)XBD文件都有不同的模塊,其定義了開(kāi)發(fā)板支持的FPGA接口,并且每個(gè)模塊都有一系列屬性、參數(shù)和端口。因此文件第一項(xiàng)記錄就是全局屬性命令、廠商信息、開(kāi)發(fā)板名稱(chēng)及其版本號(hào)、輔助Web URL以及開(kāi)發(fā)板描述的簡(jiǎn)明版本和詳細(xì)版本。
文件的本地屬性命令在BEGIN-END模塊之間進(jìn)行定義,并用特定格式表達(dá),這也可以查閱平臺(tái)規(guī)范參考手冊(cè)。就本實(shí)例來(lái)說(shuō),我們將使用面向Virtex-5FX30T FPGA的ISE設(shè)計(jì)套件12.4版本。Virtex-5FX30T FPGA含有可配置邏輯單元和PowerPC? 440硬核。
除了FPGA之外,定制開(kāi)發(fā)板將根據(jù)設(shè)計(jì)需要還包括不同外設(shè),如串行通信接口(RS232、RS422)、ADC、DAC、SRAM等。您可通過(guò)使用串行通信專(zhuān)用IP模塊來(lái)滿(mǎn)足多個(gè)UART需求。例如,您可用外部存儲(chǔ)器控制器(EMC) IP實(shí)現(xiàn)SRAM與FPGA的連接,并用通用I/O (GPIO) IP將ADC和DAC與FPGA相連接。
在我們的實(shí)例設(shè)計(jì)中,我們制作自定義XBD文件來(lái)滿(mǎn)足器件數(shù)據(jù)手冊(cè)中列出的功能及器件需求。FPGA的輸入時(shí)鐘信號(hào)為20 MHz。處理器運(yùn)行頻率為200MHz,而處理器本地總線(PLB)工作頻率為100 MHz。根據(jù)上述信息,我們能夠保證維持本地器件驅(qū)動(dòng)時(shí)序。圖1給出了定制硬件的方框圖。
?
讓我們開(kāi)始創(chuàng)建自定義文件。首先從全局屬性命令著手,隨后是時(shí)鐘信號(hào),這是所有開(kāi)發(fā)板都必須遵循的步驟,如下所示:
?
?
接下來(lái)我們要在文件中逐一列出開(kāi)發(fā)板的所有外設(shè)。(對(duì)每個(gè)外設(shè)模塊詳細(xì)編碼信息感興趣的讀者可查閱配套提供的PDF文件《定制開(kāi)發(fā)板X(qián)BD編碼詳情》,敬請(qǐng)?jiān)L問(wèn)官方網(wǎng)站。)
數(shù)模轉(zhuǎn)換器
讓我們從Analog Devices提供的數(shù)模轉(zhuǎn)換器AD7841開(kāi)始,該數(shù)模轉(zhuǎn)換器(DAC)具有8個(gè)通道、3條地址線和14位數(shù)據(jù)線以及一些可處理器件功能的控制信號(hào)。該器件通過(guò)賽靈思的GPIO IP核與FPGA相連。而器件的地址線(A0-A2)則與處理器地址線相連。
該DAC具有4種控制信號(hào):LDACN、CSN、WRN和CLRN。組建這些信號(hào)有兩種方法,您既可以給每個(gè)信號(hào)分配一個(gè)位,也可以直接設(shè)計(jì)一個(gè)4位寄存器,具體取決于您的應(yīng)用所需的信號(hào)處理方式。該DAC為14位D0-D13。
現(xiàn)在我們已經(jīng)了解XBD文件中所列首個(gè)器件DAC的一個(gè)細(xì)節(jié),下面我們來(lái)了解一下如何寫(xiě)入固件。在開(kāi)發(fā)器件驅(qū)動(dòng)程序時(shí),我們應(yīng)認(rèn)真研究數(shù)據(jù)手冊(cè)和時(shí)序示意圖。時(shí)序示意圖如圖2所示。
?
器件數(shù)據(jù)手冊(cè)說(shuō)明了用戶(hù)必須閱讀時(shí)序示意圖并生成控制信號(hào)。時(shí)序信息t0-t11完全遵照Analog Devices提供的數(shù)據(jù)手冊(cè)(AD7841)。第一步要設(shè)置信號(hào)方向?yàn)槌隹?,然后通過(guò)寫(xiě)入1到相應(yīng)地址將其拉高。例如,將方向LDACN信號(hào)設(shè)為出口,然后通過(guò)以下語(yǔ)句將其拉高:
?
信號(hào)之間的延遲可用“for”循環(huán),也可選擇“NOP”指令來(lái)實(shí)現(xiàn)。每個(gè)信號(hào)的序列和建立-保持時(shí)序也同樣重要,這些規(guī)范均在器件數(shù)據(jù)手冊(cè)中予以提供。這里,當(dāng)處理器運(yùn)行頻率為200 MHz時(shí),每個(gè)增量相當(dāng)于5納秒。
借助賽靈思EMCIP核與XBD文件,存儲(chǔ)器的接口連接和控制變得輕松簡(jiǎn)便。我們?cè)谄骷?shù)據(jù)手冊(cè)中找到了時(shí)序約束,并將其列在XBD文件中。
通信與SRAM接口
我們將使用賽靈思的XIL UART IP將RS232和RS422驅(qū)動(dòng)程序IC與Virtex-5 FPGA實(shí)現(xiàn)接口相連。我們針對(duì)RS422和RS232通信分別選擇了MAX3079和MAX3237這兩款Maxim器件。我們通過(guò)GPIO IP核來(lái)生成RS422 IC的控制信號(hào)。
就存儲(chǔ)器而言,我們選擇賽普拉斯的靜態(tài)RAM,即CY7C1061BV33器件,從而利用賽靈思外部存儲(chǔ)器控制器IP核(XIL_EMC)將其連接到FPGA。借助該IP核和XBD文件,存儲(chǔ)器的接口連接和控制變得輕松簡(jiǎn)便。我們?cè)谄骷?shù)據(jù)手冊(cè)中找到了時(shí)序約束,并將其列在XBD文件中。由于賽靈思IP核足以處理該存儲(chǔ)器,因而無(wú)需使用單獨(dú)的器件驅(qū)動(dòng)器。
ADC接口
在該設(shè)計(jì)中,將ADC與FPGA進(jìn)行接口相連是一個(gè)難題,因?yàn)閬?lái)自不同傳感器的所有輸入模擬信號(hào)都在±10V范圍之內(nèi)。為了滿(mǎn)足實(shí)例板的功能要求,我們選用了Analog Devices的AD7891-1。該ADC具有8個(gè)通道和一個(gè)12位數(shù)據(jù)總線,并提供可選的串行和并行接口。在該設(shè)計(jì)中,經(jīng)實(shí)踐證明并行接口是更好的選擇。
該器件工作在5V輸入上,由于FPGA I/O電壓為3.3V,因此我們的設(shè)計(jì)需要可實(shí)現(xiàn)與FPGA接口相連的收發(fā)器。接下來(lái)我們將會(huì)把此收發(fā)器作為緩沖器。收發(fā)器在一側(cè)連接到FPGA,而在另一側(cè)則連接到ADC。FPGA可處理緩沖器的控制信號(hào)。我們需要認(rèn)真處理器件的方向引腳和輸出啟用引腳,以便控制FPGA到ADC的數(shù)據(jù)流,反之亦然。可將器件控制信號(hào)歸組為5位寄存器。
器件的轉(zhuǎn)換端(EOCN)應(yīng)在自定義XBD文件中分開(kāi)列出,因?yàn)檫@是一個(gè)非常重要的信號(hào)。EOCN表明轉(zhuǎn)換已經(jīng)完成且新數(shù)據(jù)可用于FPGA進(jìn)行處理。
緩沖器接口
在本設(shè)計(jì)中,我們選擇了德州儀器的SN74ALVC164245電平位移收發(fā)器作為緩沖器。其是一款16位非反相總線收發(fā)器,擁有2個(gè)單獨(dú)的端口及供電軌??蓪⑵骷亩丝贐與5V ADC連接,而端口A則與3.3V FPGA連接。該配置支持從5V到3.3V的信號(hào)轉(zhuǎn)換,反之亦然。
方向引腳設(shè)為低,將端口B的數(shù)據(jù)傳輸至端口A。若設(shè)為高,則情況正好相反,端口A的數(shù)據(jù)將被傳輸?shù)蕉丝贐。要讀取ADC的數(shù)據(jù),需要將輸出使能(OEN)和方向(DIR)引腳設(shè)為低。在寫(xiě)入操作中,F(xiàn)PGA將向ADC發(fā)送指令,且方向引腳為高而輸出啟用引腳為低。在我們的實(shí)例設(shè)計(jì)中,我們將緩沖器的輸出啟用引腳進(jìn)行拉高,從而避免了總線沖突。我們?cè)谠撛O(shè)計(jì)中使用了兩個(gè)緩沖器和兩個(gè)ADC。
圖3為并行接口模式的時(shí)序示意圖,我們用它來(lái)生成控制信號(hào)。從t0到t11的信號(hào)時(shí)序通過(guò)Analog Devices的器件數(shù)據(jù)手冊(cè)引用。
?
您可用Notepad或WordPad等任何編輯程序創(chuàng)建或修改該文件。您必須將此文件保存擴(kuò)展名為.xbd的格式文件。完成后,文件必須保存到特定的路徑下,當(dāng)創(chuàng)建新項(xiàng)目時(shí),對(duì)EDK工具直接可見(jiàn)。啟動(dòng)新項(xiàng)目時(shí),應(yīng)為定制開(kāi)發(fā)板選擇該文件。
例如,假設(shè)開(kāi)發(fā)一個(gè)名為“customboard”的開(kāi)發(fā)板,該開(kāi)發(fā)板對(duì)EDK工具可見(jiàn),您應(yīng)當(dāng)遵循特定的目錄結(jié)構(gòu)要求。這是很重要的一步。我們的實(shí)例“customboard_RevX_vX_X_0.xbd”一旦創(chuàng)建后,必須保存到以下目錄下:
示例路徑:
此外,針對(duì)任何應(yīng)用的硬件或固件開(kāi)發(fā)也應(yīng)遵循特定的步驟,如圖4所示。
?
加速開(kāi)發(fā)進(jìn)程
打造定制硬件以便為自己的特定應(yīng)用開(kāi)發(fā)器件驅(qū)動(dòng)程序,這對(duì)于嵌入式設(shè)計(jì)人員來(lái)說(shuō)是一項(xiàng)充滿(mǎn)挑戰(zhàn)性的工作。賽靈思提供了大量有關(guān)開(kāi)發(fā)過(guò)程的文獻(xiàn)資料,也為開(kāi)發(fā)工作提供了通用板級(jí)描述文件。您可輕松定制并修改該文件以滿(mǎn)足您自身定制硬件的需求。硬件配置如需任何修改或改動(dòng),您只需參考一個(gè)統(tǒng)一的文件即可,并將所有器件相關(guān)的改動(dòng)整合到該文件中。這樣,自定義XBD文件就能提高生產(chǎn)力,加速開(kāi)發(fā)進(jìn)程。
評(píng)論
查看更多