隨著可編程邏輯器件的不斷進步和發展,FPGA在嵌入式系統中發揮著越來越重要的作用,已經開始被廣泛應用于通信、航天、醫療、工控等領域。Xilinx公司作為全球最大的可編程邏輯器件生產廠商,為嵌入式系統設計人員提供了比較全面的解決方案。Xilinx的嵌入式系統開發環境EDK,提供了一種通用的完全集成的硬件和軟件開發環境,使設計人員可以利用單個開發環境快速配置針對PowerPC硬處理器或Microblaze軟處理器內核的平臺。在EDK開發環境下,利用用戶向導可以準確快速地創建一個新的嵌入式系統,而在這一過程中,XBD文件決定了系統的硬件平臺描述文件MHS以及約束文件UCF的正確與否,在構建系統過程中起著至關重要的作用。
1 基于FPGA的嵌入式系統開發
利用Xilinx公司的嵌入式系統開發工具EDK就可以完成整個嵌入式系統的硬件和軟件開發,EDK由XPS(Xilinx Platform Studio)和SDK(Software DevelopmentKit)組成。其中XPS是主設計程序平臺,可以實現嵌入式系統開發的所有步驟,并且可以在其中調用SDK。SDK是軟件開發工具,支持C和C++,主要完成軟件設計。在XPS開發環境下,完整的開發流程如圖1所示。
MHS和MSS文件都是根據系統要求在EDK環境下生成的。MHS文件包含了對整個嵌入式系統的定義,包括處理器、總線、外圍設備、地址空間等,用于整個硬件平臺的綜合、實現;MSS文件包含了操作系統、設備驅動等信息,將其輸入到庫生成器(Libgen),產生應用程序中需要的驅動程序及Xilinx的調用庫。欲了解更多信息請登錄電子發燒友網(http://www.nxhydt.com)
嵌入式開發軟件EDK為設計人員提供了自動化的設計向導——BSB(Base System Builder),可以指引工程師快速完成整個設計過程。在利用BSB創建嵌入式系統過程中,利用嵌入式硬件平臺的XBD文件對板級各個功能電路的描述,按步驟選擇需要的電路模塊添加到MHS文件中,從而減少出現錯誤的可能,降低學習難度。因此,一個新的嵌入式FPGA硬件平臺確定以后,在EDK中針對開發板進行嵌入式系統開發,可以利用相應的XBD文件,快速建立一個基于FPGA的嵌入式系統。
2 板級描述文件XBD
XBD(Xilinx Board Description)文件定義了電路板的功能模塊以及各個模塊與FPGA芯片的接口情況,利用BSB可以將XBD文件中包含的功能模塊加入到要建立的嵌入式系統中。
在EDK的安裝目錄下,Xilinx公司為設計者提供了一些開發板的XBD文件。但是,一個新的嵌入式硬件平臺建立后,想要在EDK軟件中利用BSB向導讀取硬件電路的信息,從而高效無誤地產生FPGA嵌入式系統,需要針對電路板上的各個單元電路設計新的XBD文件來描述硬件平臺的信息。通常,一個XBD文件包括如下信息:
◆電路板所支持的功能模塊的FPGA接口;
◆不同端口或模塊間的連接信息;
◆每個FPGA引腳的UCF約束信息。
由于XBD文件是對硬件各功能模塊的描述,因此在設計XBD過程中也是以模塊的形式來表示電路板信息的,而且各個功能塊的描述具備相似的結構,使用相同的賦值命令進行具體參數定義。
2.1,模塊的定義
一個完整的模塊定義如下:
BEGIN
:
END
關鍵字BEGIN表示一個新的模塊開始,后面是要定義模塊的類型,中間部分是與描述IP核行為的MPD文件相對應的各種參數。當前,XBD文件能夠識別3種類型的模塊定義:
①IO_INTERFACE。IO_INTERFACE指定了一個電路板上的物理模塊(不包括FPGA本身),每一個IO—INTERFACE在板上應該有一個在FPGA中使用的軟IP核與之相對應。
②IO_ADAPTER。IO_ADAPTER指定了連接IO_INTERFACE引腳與相應軟IP端口的軟膠合邏輯。
③FPGA。FPGA模塊代表FPGA本身。
2.2 賦值命令
每個BEGIN—END模塊包括多個賦值命令。賦值命令至少包括一個name—value對,還可以加入多個name—value子對。
賦值命令包括:
①ATTRIBIJTE。ATTRIBUTE命令是對屬性命名的關鍵字。對于經過ATTRIBUTE賦值的對象,EDK工具會執行某種操作或以特定的方式使用該對象。ATTRIBUTE賦值命令可以在BEGIN—END模塊內部或者外部使用。
②PARAMETER。PARAMETER命令將IP核中的PARAMETER參數同XBD文件中的IO_INTERE、ACE聯系在一起,且PARAMETER命令只能在IO_INTERFACE模塊內部使用。
③PORT。PORT命令用來指定電路板上各個模塊(包括FPGA)的連通性,只能在IO_INTERFACE和IO_ADAPTER模塊內使用。
PARAMETER和PORT命令后能夠跟隨子屬性,每一個子屬性也是name—value對。子屬性必須同PA—RAMETER和PORT命令在同一行,并且用逗號隔開。
3 XBD文件的設計實現
在基于FPGA的嵌入式系統中,無論是硬核Power—PC還是軟核Microblaze處理器,都是通過IP核的方式與周圍設備進行操作的,因此,在XBD中定義電路模塊時要選擇與實際電路相對應的IP核。在描述IP核行為的MPD文件中,定義了IP核的各種參數,I0_INTERFACE的子屬性IOTYPE決定了該IP核是否能夠與電路板上的特定模塊進行連接,通過查看MPD文件的信息就可以知道該IP的功能及其各種參數。例如,對于電路板上的4個LED顯示單元,為了能夠利用BSB將其加入到嵌入式系統中,需要在XBD文件中定義一個能夠對4個LED進行操作的模塊。在基于FPGA的嵌入式系統中,處理器通過通用I/O接口GPIO對LED進行操作,故LED在XBD中要定義一個IOTYPE為GPIO的I0_INTER—FACE模塊,表示可以通過這個模塊與實際電路板上的I/O進行通信。在GPIO的MPD文件描述中,對于I0_IN—TERFACE進行了如下定義:
IO_INTERFACE IO_IF=gpio_O,IO_TYPE=XIL_GPIO_V1
這個I0_INTERFACE表明IP核可以和GPIO進行通信。
與電路板上特定模塊通信的IP核選定后,根據實際的電路特點,在XBD文件中指定模塊的參數值,這些參數值都要與MPD文件中的參數一一對應。需要指出的是,EDK工具是利用XBD文件中的IO_IS子屬性將IP核的端口與電路板上模塊連接在一起的。在MPD文件中,GPIO的部分描述摘錄如下:
MPD文件定義了IOTYPE類型為XIL_GPIO_V1的I/O接口,并且有C_GPIO_WIDTH和C_ALL_INPUTS兩個參數。這些參數跟隨的I0_INTERFACE是通過IO_IF子屬性來指定的。同樣,PORT GPIO_IO也是通過IO_IF子屬性來表示屬于gpio_0接口的。通過MPD文件對GPIO的描述,可以通過將電路板上的4個LED電路模塊在XBD文件中定義一個IO_INTERFACE模塊來表示。
可以看到,MPD文件中I0TYPE類型為XIL_GPIO_V1的IO_INTERFACE同XBD文件中IOTYPE類型同樣為XIL_GPIO_V1的LEDs_4BIT模塊是匹配的。因此,子屬性IO_IS決定了IP核中的端口同XBD文件中哪個端口連接。最終,利用自己設計的XBD文件中的LEDs_4BIT模塊,通過BSB建立一個基于FPGA的嵌入式系統。實際電路板中4個LED在構建的硬件配置文件MHS中的描述如下:
類似于在XBD文件中設計一個與4個LED進行通信的GPIO模塊,利用同樣的方法,在XBD中能夠完成電路板上其他模塊的設計,如UART、按鍵、存儲器等。在XBD文件中將電路板上所有的模塊信息設計完成之后,為了使EDK軟件中的開發向導BSB能夠讀取到自己設計的XBD文件的信息,要將XBD文件存放到EDK安裝目錄下的
4 總 結
板級描述文件XBD在利用BSB快速構建基于FPGA的嵌入式系統中起著非常重要的作用,本文針對新的硬件平臺的XBD文件設計進行了介紹。在XBD文件設計時,針對電路板上的各個實際電路模塊,通過對照相應描述IP行為的MPD文件進行各個電路模塊的設計與實現。欲了解更多信息請登錄電子發燒友網(http://www.nxhydt.com)
評論
查看更多