每天進步一點點------Xilinx FPGA開發工具 EDK SDK術語


XPS:Xilinx Platform Studio,平台工作室。用於嵌入式處理器硬件部分的開發。

SDK:Software Development Kit,軟件開發套件。基於Eclipse平台,支持C/C++。

MicroBlaze總線:MB實質上是一個IP核,這個IP核對外總線接口有PLB(包括一個DPLB和一個IPLB)、LMB(包括一個DLMB和一個ILMB)、FSL(8個FSL主、8個FSL從接口)、XCL(包括一個DXCL和一個IXCL)、MDM。即指令只能通過LMB/XCL/PLB的指令端口訪問,速度由快到慢。PLB、LMB、FSL總線也是一個IP核,XCL內嵌兩個FSL總線接口,是點對點雙向總線。MB應當選用不同的總線來訪問不同的外設,且正確協調這些總線的工作。XCL主要是配合MPMC,用於MB的指令Cache和數據Cache從外部存儲器讀取指令或數據,例如可配置MPMC的兩個訪問端口為XCL,分別連到MB的DXCL和IXCL上。可以通過配置Microblaze_0模塊添加FSL總線,用於和高速點對點輸入輸出的用戶IP的連接。PLB用於MB與系統提供的其它基於PLB總線或基於PLB總線的用戶IP相連接。使用CIP創建用戶自己的IP,只有PLB和FSL兩種可選接口,XCL/LMB為專用於存放程序代碼。也可以手工創建NPI接口的用戶IP,但以后版本不確定是否支持NPI接口。MDM總線用於調試。注:在SDK環境中,Xilinx Tools->Linker scripts中或在項目上右鍵,打開Linker scripts來分配程序、堆棧等所占的內存區域,在Windows程序組EDK->Documentation下面有SDK的幫助文檔,可查看這部分的幫助。

在EDK12.2的edk_ctt手冊中產生的XPS項目中,可以看出MB的總線結構。Microblaze_0下面有DLMB、ILMB、DPLB、IPLB、DXCL、IXCL、DEBUG、TRACE。其中DLMB連接到命名為dlmb的LMB總線上(最上面),同時IP模塊dlmb_cntlr的一端也連接到dlmb總線上,一端連接到lmb_bram模塊(雙口BRAM)的端口B上,同樣MB的ILMB最終也連接到lmb_bram模塊的端口A上,即lmb_bram為內存,用於MB存放運行軟件程序(XPS的幫助上說這個內存不要開的太大,以免LMB總線超負荷降低效率)。由於MB只有一個DLMB和一個ILMB,如果程序代碼過大或數據空間不夠用,可通過xps_bram_if_cntlr_0,其一端連接PLB,一端連接IP模塊bram_block,把FPGA內部的BRAM外擴為MB的存儲空間,其大小在XPS界面的Addresses欄設置,參見相應的IP核手冊查看此IP能夠管理的BRAM大小,此IP管理BRAM深度為32K,當BRAM寬度為32時支持128KB容量的BRAM,當BRAM寬度為64或128時分別為256KB/512KB;或通過MPMC和XCL或PLB外擴DDR;或通過xps_mch_emc和PLB外擴SRAM和NOR FLASH。上述例子里MB的DPLB和IPLB均連接到PLB總線上,和其它外設通過PLB連接到一起,也可以IPLB再用一個單獨的PLB總線,外擴存儲程序的內存,構成哈佛結構,但一般不必要。   

PLB:Processor Local Bus總線。支持任意數目的PLB主設備,可支持128/64/32位寬的主設備和從設備。PLB接口包括IPLB和DPLB兩種,IPLB接口用於外設與處理器指令緩沖的連接,DPLB用於外設與處理器數據緩沖的連接。

LMB:Local Memory Bus總線,同步總線,用於MB訪問存放指令和數據的片上塊RAM。32位寬,包括三種傳輸方式:字節/半字/字到32位寬BRAM、字節/半字到16位寬BRAM、字節到8位寬BRAM。使用最少的控制信號和簡單的協議以達到單周期訪問本地塊RAM的目的。MB有兩個LMB即ILMB和DLMB,分別用於處理器指令和數據接口。lmb_bram_if_cntlr核一端通過LMB總線連到MB的DLMB或ILMB端口,一端連到片上BRAM,由於lmb_bram_if_cntlr核支持最大BRAM大小為128KB,即MB片上BRAM最大為128KB。對於比較小的設計,可把代碼直接放到片上BRAM,或者把復雜設計的BOOTLOADER放到片上BRAM。

FSL:Fast Simplex Link總線,32位寬。FSL用於單向、點到點、基於FIFO的快速接口,可用於連接FPGA上任意兩個帶有FSL總線接口的設備,及用戶IP開發。每個FSL有一個輸入口和一個輸出口。FSL內部FIFO深度最小為1,最大8K。MB最多支持16個FSL接口,即8個FSL主(MFSL或DWFSL)和8個FSL從(SFSL或DRFSL)接口。MFSL(Master FSL Interface)用於FSL總線連接,而DWFSL(FSL master direct connectioninterface)用於直接連接到FSL從設備上。SFSL(Slave FSL Interface)用於FSL總線連接,而DRFSL(FSL slave direct connection interface)用於直接連接到FSL主設備上。XCL使用直接FSL連接方式。

XCL:Xilinx CacheLink總線,32位寬。只有在MB核的指令或數據緩存使能的情況下才可以使用(LMB不需要指令或數據緩存使能),指令或數據緩存可分別單獨使能。與MB緩存接近直接連接。每個XCL內嵌兩個FSL接口,是高性能的外部內存訪問接口。在配合MPMC的情況下,是最小延時的解決方案,此時XCL接口時鍾可以是MPMC_clk0的二倍或一倍。XCL分為指令端XCL(IXCL)和數據端XCL(DXCL)。猜想:XCL用於從外存讀取連續的一段指令或數據到MB內部緩存中,類似於從windows系統從磁盤上預讀取緩存技術,因此沒有單獨的地址線,需要使用額外信號線來表示地址還是數據,也僅用於緩存讀取用,不能使用在用戶IP接口上。

MDM:Xilinx Microprocessor Debug Module。

MPMC:Multi-Port Memory Controller,多端口內存控制器。MPMC通過可配置的PHY層連接外部內存,通過1到8個相互獨立的端口供用戶訪問,每個端口包含一個可配置的PIM,配置成用戶所需要的接口形式。MPMC包含仲裁器,支持多個端口同時訪問內存。為減少MPMC所占用的資源,參見DS643手冊206頁“MPMC Size Optimization”。

PIM:Personality Interface Modules,MPMC提供給用戶的訪問端口,可配置成PLB、XCL、NPI、SDMA、VFBC、MCB(僅Spartan-6器件)接口形式。

NPI PIM:Native Port Interface。MPMC支持32/64位寬NPI。專用於MPMC的PIM中,是最高性能的PIM(除配置成MCB的PIM),所有其它的PIM形式均通過NPI連接到MPMC,例如XCL PIM接口可認為把XCL命令翻譯成NPI命令的一個橋。以后版本不確定是否繼續支持。NPI接口簡單,幾乎適用於任何協議;用戶可以利用NPI擴展MPMC的接口形式,以適應用戶自己的設計;NPI包括地址、數據和控制信號,允許從端口FIFO同時讀寫數據,數據位寬32或64位;NPI運行時鍾頻率必須與MPMC_clk01時鍾頻率一致。

SDMA PIM:Soft Direct Memory Access Controller。應用於MPMC中。中等吞吐性能Scatter Gather DMA核,需要CPU參與,因此適用於頻發小數據量傳輸,典型應用於MPMC和XPS_LL_TEMAC核之間數據傳輸,參見UG643手冊163頁“SystemArchitecture using xps_ll_temac Core”。SDMA核包括一個NPI接口,一個PLB接口,一個TXLocalLink及一個RX LocalLink接口。NPI接口用於嵌入到MPMC;PLB用於CPU參與Scatter Gather DMA傳輸;數據利用LocalLink通過DMA傳輸到MPMC;NPI端接口寬度32或64位,LocalLink端接口寬度32位。Spartan-6支持所有位寬的DDR,其它器件支持16/32/64位寬DDR。

VFBC PIM:Video Frame Buffer Controller (VFBC),高延遲高性能兩維DMA核,適用於長burst傳輸,如視頻幀。

MCB PIM:僅Spartan-6器件支持的PIM形式,與硬件內存控制器直接連接,以獲取最高的性能。如果MPMC同時使用了MCB PIM和PLBPIM, MCB為32位寬,因此MCB PIM和PLB PIM只能連接到32位寬的PLB總線。

字節/半字/字:MB里分別定義為Byte/half-word/word,位寬分別為8/16/32bit。MB使用BIG-Endian模式存儲數據和指令。

BMM:BlockRAM Memory Map file


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM