可編程片上系統(tǒng)開發(fā)平臺1.ppt_第1頁
可編程片上系統(tǒng)開發(fā)平臺1.ppt_第2頁
可編程片上系統(tǒng)開發(fā)平臺1.ppt_第3頁
可編程片上系統(tǒng)開發(fā)平臺1.ppt_第4頁
可編程片上系統(tǒng)開發(fā)平臺1.ppt_第5頁
已閱讀5頁,還剩202頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

可編程片上系統(tǒng)開發(fā)平臺,何賓 2012.02,本章內(nèi)容,該章描述在Xilinx嵌入式開發(fā)套件(Xilinx Development Kit,XDK)嵌入式系統(tǒng)工具的結(jié)構(gòu)和設計流 程。XDK用于開發(fā)基于MicroBlaze軟核和PowerPC硬核處 理器的SOPC系統(tǒng)。該章的主要內(nèi)容包括:EDK簡介、設 計流程概述、平臺開發(fā)結(jié)構(gòu)的工具。 Xilinx的EDK工具主要包含:Xilinx Platfrom Studio (XPS)人機界面、嵌入式系統(tǒng)工具套件、嵌入式處理IP 核,例如處理器和外設、 Platform Studio SDK(Software Development Kit,SDK)。SDK基于Eclipse開放源碼框 架,可以選擇使用SDK開發(fā)自己的嵌入式軟件應用程序 (從EDK13.1開始,必須在SDK內(nèi)開發(fā)軟件應用程序)。,設計流程及EDK工具 -設計流程,EDK中所提供的工具用來完成嵌入式設計的整個過 程。圖5.1給出了基于EDK的基本嵌入式設計流程。,設計流程及EDK工具 -建立硬件平臺,Xilinx的FPGA技術允許設計者在處理器子系統(tǒng)中定制 硬件邏輯。這種定制不可能使用標準的現(xiàn)成的微處理器或 控制器芯片。“硬件平臺”是指設計人員根據(jù)應用的需要而 使用Xilinx的技術建立的靈活地、嵌入式處理子系統(tǒng)。 硬件平臺是由一個或多個處理器或外設連接到處理器 總線構(gòu)成的。 EDK通過微處理器硬件規(guī)范(Microprocessor Hardware Specification,MHS)文件記錄硬件平臺信息。,設計流程及EDK工具 -軟件平臺建立,軟件平臺是軟件驅(qū)動和用于建立應用程序的操作系統(tǒng) (可選)組成的。所建立的軟件映像文件只包含用戶所 使用到的一部分Xilinx的庫。 EDK通過微處理器軟件規(guī)范(Microprocessor Software Spectifcation,MSS)記錄軟件平臺信息。設計 人員可以在軟件平臺運行多個應用程序。,設計流程及EDK工具 -使用仿真的硬件平臺驗證,驗證硬件平臺的正確功能,設計人員可以建立一個仿 真模型,并且在HDL仿真器上運行。當仿真系統(tǒng)時,處理 器運行可執(zhí)行文件。 設計人員可以選擇建立行為、結(jié)構(gòu)或者精確的時序仿 真模型。,設計流程及EDK工具 -使用調(diào)試的軟件驗證,調(diào)試嵌入式軟件的基本技術是加載設計到所支持的開 發(fā)板和使用調(diào)試工具去調(diào)試處理器。 作為可選擇的方式,設計人員可以使用指令集仿真器 或簡化系統(tǒng)仿真器模型(“虛擬平臺”)運行在主機上來調(diào) 試設計代碼。 設計人員可以通過概要分析代碼的執(zhí)行來估計系統(tǒng)性 能。,設計流程及EDK工具 -芯片配置,一旦軟件和硬件平臺建立完成,設計人員可以為FPGA 建立一個的配置比特文件。 對于原型設計,當連接主機和芯片時,設計者可以在 下載比特流時,將希望運行在嵌入式平臺上的軟件同時下 載。 對于產(chǎn)品,設計人員將配置比特流和軟件保存在和 FPGA連接的非易失性存儲器中。,設計流程及EDK工具 -EDK工具,圖5.2 EDK工具的結(jié)構(gòu),設計流程及EDK工具 -EDK工具,設計流程及EDK工具 -EDK工具,設計流程及EDK工具 -EDK工具,設計流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供了集成環(huán)境為基于MicroBlaze和PowerPC處理 器的嵌入式處理器系統(tǒng)創(chuàng)建軟件和硬件規(guī)范流程。 XPS也提供編輯器和項目管理接口用來創(chuàng)建和編輯源 代碼。 XPS提供工具流程配置選項的定制和提供圖形化的系 統(tǒng)編輯器用來連接處理器、外設和總線。 XPS可以在Windows、Solaris和Linux平臺下使用。 從XPS中,設計人員可以運行所有的用于處理硬件和 軟件的嵌入式系統(tǒng)工具。在XPS環(huán)境下可以進行系統(tǒng)的驗 證。,設計流程及EDK工具 - Xilinx Platform Studio(XPS),XPS提供下面的特性: (1) 能夠添加核,編輯核參數(shù)和進行總線和信號連接,產(chǎn)生MHS 文件; (2) 能夠產(chǎn)生和修改MSS文件; (3) 支持表5.1內(nèi)的所有工具; (4) 能夠產(chǎn)生和觀察系統(tǒng)塊圖和設計報告; (5) 多用戶軟件應用支持; (6) 項目管理; (7) 過程和工具流程依賴管理; (8) 輸出MHS文件到SDK工具,設計流程及EDK工具 -Xilinx Software Development Kit(SDK),SDK工具是XPS的補充,SDK為應用軟件提供開發(fā)環(huán) 境。SDK基于Eclipse開放源碼標準。SDK主要有以下特 點: (1) 功能豐富的C/C+編輯器和編譯環(huán)境; (2) 導入基于XPS生成的硬件平臺定義; (3) 提供項目管理; (4)支持基于單個處理器或者多個處理器系統(tǒng)的軟件應用程序的 開發(fā); (5) 支持以團隊環(huán)境的形式開發(fā)軟件應用程序; (6)為第三方的操作系統(tǒng)創(chuàng)建和配置板級支持包BSP;,設計流程及EDK工具 -Xilinx Software Development Kit,SDK,(7)提供現(xiàn)成的簡單軟件工程來測試硬件和軟件功能; (8)通過GUI接口為軟件應用程序、編程FPGA芯片和編 程并行flash存儲器產(chǎn)生鏈接腳本; (9)應用程序的建立配置和自動的MAKE文件生成; (10)錯誤瀏覽; (11)為無縫調(diào)試和概要分析目標提供了好的集成環(huán)境;,設計流程及EDK工具 -The Base System Builder(BSB) Wizard,BSB向?qū)椭O計人員快速建立一個嵌入式系統(tǒng)工 程。對于更復雜的工程,BSB向?qū)峁┗镜南到y(tǒng),通過 這個系統(tǒng)設計人員可以定制完成嵌入式設計。為了高效率 的建立工程,Xilinx推薦使用BSB向?qū)А?設計流程及EDK工具 -The Base System Builder(BSB) Wizard,基于設計人員選擇的板子,設計人員通過BSB選擇并 配置基本的元素,比如:處理器類型、調(diào)試接口、緩存配 置、存儲器類型和大小、外設等。 對于BSB不支持的目標系統(tǒng),設計人員可以選擇定制 板選項。使用這個選項時,必須指定未來板子的硬件,并 且要給出用戶約束文件UCF。 如果選擇的是支持的目標板,BSB向?qū)ё詣拥募尤?UCF文件。當退出BSB時,BSB所建立的MHS和MSS文 件自動加入到XPS工程中,設計人員能在XPS中進行更進 一步的設計。,設計流程及EDK工具 - Platform Generator,Platgen,平臺產(chǎn)生器Platgen將對嵌入式系統(tǒng)的高級描述編譯成能 在目標FPGA芯片上實現(xiàn)的HDL網(wǎng)表。 嵌入式系統(tǒng)硬件平臺典型的由一個或多個處理器和不同 的外設和存儲器模塊組成,這些模塊通過處理器總線連 接。每個外設的IP核有很多的參數(shù),通過調(diào)整這些參數(shù)來 定制行為。這些參數(shù)也用來為這些存儲器和外設進行地址 映射。由于EDK提供可選擇的特性,F(xiàn)PGA只需要實現(xiàn)應用 程序所要求的功能子集。 硬件平臺保存了MHS文件。MHS文件是表示所設計的 嵌入式系統(tǒng)的硬件元件的最主要文件。MHS文件以ASCII碼 形式存在。,設計流程及EDK工具 - Platform Generator(Platgen),Platgen讀取MHS文件作為基本的設計輸入。Platform 也從EDK庫和用戶IP庫中讀取不同的處理器核硬件描述文 件(MPD,PAO)。 Platgen為嵌入式系統(tǒng)產(chǎn)生頂層HDL設計文件,該文件 包含所有參數(shù)化了的IP核。 在這個過程中,將MHS中所有高層總線連接變成連接 處理器、外設和片上存儲器的真實信號。它也調(diào)用XST編 譯器綜合每個例化的IP核(Platgen產(chǎn)生的系統(tǒng)級網(wǎng)表也用 來作為FPGA實現(xiàn)過程的一部分)。 此外,Platgen也產(chǎn)生BMM(BRAM Memory Map)文 件,該文件包含所用到的片上BRAM的地址。,設計流程及EDK工具 - 建立和導入IP向?qū)?該向?qū)椭O計人員建立自己的外設并且將它們導入 相應的XPS工程中。 在創(chuàng)建模式下,創(chuàng)建和輸入外設向?qū)Ы⒑芏辔募?這些文件的一些是模板文件幫助設計人員實現(xiàn)外設,而不 需要詳細的知道總線協(xié)議,命名規(guī)則和特殊接口文件的格 式。通過參考模板中的例子和使用不同的輔助設計支持文 件,設計人員可以很快的進行邏輯定制。 在導入模式下,該工具幫助設計人員建立接口文件和 目錄結(jié)構(gòu)。對于這種操作模式,必須遵守EDK的命名規(guī) 則。一旦導入完成,用戶的定制外設在EDK外設庫中可以 使用。,設計流程及EDK工具 -建立和導入IP向?qū)?當創(chuàng)建或輸入一個外設時,自動生成MPD (Microprocessor Peripheral Defination)文件和PAO (Peripheral Analyze Order)文件。MPD文件定義了外設 的接口,PAO文件通知其它工具(Platgen,Simgen),對 外設需要編譯哪個HDL文件和以什么樣的順序編譯。,設計流程及EDK工具 -配置協(xié)處理器向?qū)?如果設計中包含MicroBlaze和PowerPC處理器時,可 以使用該向?qū)АT撓驅(qū)砑雍瓦B接協(xié)處理器到CPU。協(xié)處 理器是一個硬件模塊用來實現(xiàn)用戶在FPGA內(nèi)定義的功能 和通過FSL接口與處理器連接。FSL通道是一個專用的32 位,點對點的通信接口。,設計流程及EDK工具 -庫產(chǎn)生器(Libgen),Libgen為嵌入式處理器系統(tǒng)配置庫,設備驅(qū)動,文件系 統(tǒng)和中斷句柄,以及創(chuàng)建板級支持包BSP。嵌入式軟件平臺 為每個處理器定義了系統(tǒng)內(nèi)外設的驅(qū)動(板級支持包), 可選擇的庫,標準的輸入/輸出設備,中斷句柄例程和其它 相關的軟件特征。SDK工程進一步定義了運行在每個處理 器上的軟件,這些軟件基于BSP運行。,設計流程及EDK工具 -庫產(chǎn)生器(Libgen),來自于EDK安裝的庫和驅(qū)動,以及設計人員提供的定 制庫和驅(qū)動,SDK將用戶程序,包括庫和驅(qū)動程序編譯 成處理器硬件平臺上可執(zhí)行可鏈接的文件(Executable Linked Format,ELF)。 Libgen讀取選擇的EDK庫和不同的處理器核軟件描述 文件(Microprocessor Driver Defination, MDD)和驅(qū)動代 碼。,設計流程及EDK工具 - GNU編譯工具(GCC),XPS調(diào)用GNU編譯工具用于編譯和鏈接應用程序。 1)對于MicroBlaze處理器的應用,XPS運行mb-gcc編 譯器; 2)對于PowerPC處理器的應用,XPS運行powerpc-eabi- gcc編譯器。 編譯器能讀取C代碼,頭文件和匯編代碼。鏈接器將 編譯的程序和選擇的庫連接在一起產(chǎn)生ELF可執(zhí)行文件。 連接器也讀取連接腳本(默認產(chǎn)生或用戶產(chǎn)生)。,設計流程及EDK工具 -Xilinx Microprocessor Debugger(XMD),設計人員可以使用指令集仿真器或者虛擬平臺調(diào)試軟 件程序。XMD讀ELF文件。對于調(diào)試物理的FPGA,XMD 和FPGA通訊使用和FPGA下載相同的電纜。,設計流程及EDK工具 -GNU調(diào)試器(GDB),GNU調(diào)試器是個強大和靈活的工具,它為在不同的開 發(fā)周期驗證MicroBlaze和PowerPC系統(tǒng)提供了統(tǒng)一的調(diào)試 和驗證手段。GDB使用了XMD作為最基本的引擎和處理 器目標通訊。,設計流程及EDK工具 - Simulation Model Generator(Simgen),仿真模型產(chǎn)生器Simgen為硬件產(chǎn)生和配置不同的模 型。為產(chǎn)生行為模型,Simgen使用MHS文件作為基本的 輸入。為產(chǎn)生結(jié)構(gòu)或時序模型,Simgen使用綜合后或布局 布線后的設計數(shù)據(jù)庫作為基本的輸入。 Simgen為每個處理器也讀取嵌入式應用ELF文件去初 始化片上存儲器;這樣處理器在仿真階段就可以執(zhí)行這些 軟件代碼。,設計流程及EDK工具 - Simulation Library Compiler(CompEDKLib),CompEDKLib使用不同仿真工具廠商提供的仿真器編譯 EDK基于HDL的仿真庫。這個工具可以運行在GUI和批處 理模式下。 在GUI模式下,允許設計人員使用CompXLib編譯Xilinx 的庫和EDK中可以使用的庫。,設計流程及EDK工具 - Virtual Platform Generator(VPgen),虛擬平臺是硬件系統(tǒng)的周期級的仿真模型??梢栽谥?機上用虛擬平臺來調(diào)試和評估軟件應用代碼,而不需要得 到運行在原型板上的硬件。,設計流程及EDK工具 -Bus Functional Model Compiler(BFM),總線功能仿真簡化了依附在總線上的硬件元件的驗證。,設計流程及EDK工具 -Bitstream Initializer(Bitinit),比特流初始化工具使用軟件信息來初始化與處理器 連接的片上BRAM存儲器。 這個工具讀取ISE工具產(chǎn)生的硬件比特流文件 (system.bit),產(chǎn)生一個新的輸出比特流文件 (download.bit),這個比特流文件包含ELF文件。 這個工具使用BMM文件,該文件由Platgen產(chǎn)生,通 過使用每個BRAM塊的物理的布局信息由ISE工具更新。 在內(nèi)部,比特流初始化工具Bitinit使用在ISE中提供的 Data2MEM工具來更新比特流文件。,設計流程及EDK工具 -System ACE File Generator(Gen ACE),從FPGA比特流中產(chǎn)生 Xilinx System ACE配置文件和 ELF/數(shù)據(jù)文件。 產(chǎn)生的ACE文件用于配置FPGA,初始化BRAM,使 用有效的程序或數(shù)據(jù)初始化外部存儲器和啟動處理器。 EDK提供了工具命令語言(Tool Command Language,Tcl)腳本,genace.tcl。該腳本使用XMD命令 產(chǎn)生ACE文件。 使用MDM系統(tǒng)可以為PowerPC或MicroBlaze產(chǎn)生ACE 文件。,設計流程及EDK工具 -Flash Memory Programmer,編程解決方案被設計成通用的,面向不同的Flash硬件 和布局。,設計流程及EDK工具 -Format Revision(revup)Tool and Version Management Wizard,格式版本工具revup更新已經(jīng)存在EDK工程到當前的版 本。revup工具只執(zhí)行格式的變化,對設計不進行更新。 在應用revup前,備份MHS,MSS,XMP等文件。 當使用新版本的EDK工具打開老版本的工程時,就會 顯示版本管理向?qū)А?當執(zhí)行revup后,調(diào)用版本管理向?qū)АO驅(qū)峁┯嘘P設 計中使用的Xilinx處理器IP核的變化信息。如果新版本的 IP核可以使用,向?qū)⑸壍叫碌陌姹尽?設計流程及EDK工具- LibXil Memory File System Generator (LibXil MFS),以文件句柄的形式提供管理程序存儲器的能力。設 計人員可以建立目錄,并在目錄中存放不同文件。文件 系統(tǒng)能通過使用高級C語言進行函數(shù)調(diào)用來訪問。,設計流程及EDK工具 -Platform Specification Utility,平臺規(guī)范工具能夠自動產(chǎn)生建立IP核的MPD文件。通 過建立和導入外設向?qū)У膸椭?,能夠使用這個工具提供的 功能。,平臺產(chǎn)生器,硬件的產(chǎn)生是由平臺產(chǎn)生器(Platform Generator, Platgen)生成。 Platgen以硬件網(wǎng)表的形式(HDL和實現(xiàn)網(wǎng)表文件)建 立片上可編程系統(tǒng)。 Platgen使用MHS文件作為輸入并建立硬件平臺。除了 以NGC、EDIF等網(wǎng)表文件格式外,Platgen為下面的工具 和頂層的HDL封裝提供支持文件,可以使設計者添加其它 元件并且自動的產(chǎn)生硬件平臺。,平臺產(chǎn)生器,當運行Platgen時,F(xiàn)PGA的實現(xiàn)工具運行完成硬件的 實現(xiàn)。 典型的,XPS為實現(xiàn)工具調(diào)用項目管理器(Project Navigator)前端,用于控制實現(xiàn)過程。 ISE流程結(jié)后,產(chǎn)生用于配置FPGA的比特流文件。這 個比特流文件包括為FPGA片上BRAM的初始化信息。 如果設計的代碼或數(shù)據(jù)必須在啟動時放在這些存儲器 時,Data2MEM工具使用包含在可執(zhí)行文件內(nèi)的代碼/數(shù)據(jù) 信息來更新比特流文件,這個可執(zhí)行文件在軟件應用程序 建立和驗證流程的結(jié)束時產(chǎn)生。,平臺產(chǎn)生器 -加載路徑,圖5.3給出了外設IP路徑的結(jié)構(gòu)。Platgen使用查 找優(yōu)先級機制來確定外設的位置:,平臺產(chǎn)生器 -加載路徑,(1)在工程目錄下,尋找pcore目錄 (2)通過-lp選項尋找指定的/pcores位置 (3)查找XILINX_EDK/hw/pcores 從pcores目錄中,外設的名字就是根目錄的名字。從根 目錄中,基本的目錄結(jié)構(gòu)為:data、hdl和netlist。,平臺產(chǎn)生器 -輸出文件,Platgen產(chǎn)生下面的文件和目錄:hdl、implementation和 synthesis。在工程目錄下,這是最基本的目錄結(jié)構(gòu)。 1、HDL目錄 HDL目錄包含下面的文件: 1)system.vhd|v:這是嵌入式處理器系統(tǒng)得HDL文件,該文件 在MHS中定義。該文件包含了IOB原語(當指定-toplevel yes 選項)。 2)system_stub.vhd|v:這是例化系統(tǒng)和IOB原語的頂層HDL文 件模版。使用這個文件作為設計者自己的頂層HDL設計文件 的開始點(當指定-toplevel no選項)。否則,system.vhd|v 為頂層。,平臺產(chǎn)生器 -輸出文件,3)_wapper.vhd|v:在MHS中定義的單獨的IP元件 的HDL封裝文件。 2、Implementation目錄 該目錄包含peripheral_wrapper.ngc實現(xiàn)網(wǎng)表文件。 3、Synthesis目錄 該目錄包含system.prj|scr綜合工程文件;,平臺產(chǎn)生器-存儲器的產(chǎn)生 -BMM策略,Platgen在/implementation目錄下,產(chǎn)生 .bmm和_stub. Bmm。 (1)當EDK是頂層系統(tǒng)時,實現(xiàn)工具使用.bmm; (2)當EDK是頂層系統(tǒng)的子模塊時,實現(xiàn)工具使用 _stub.bmm;,平臺產(chǎn)生器-存儲器的產(chǎn)生 -BMM流程,EDK工具的實現(xiàn)工具流程采用了Data2MEM,下面給 出了其流程: 1)ngdbuild bm .bmm .ngc 2)map 3)par 4)bitgen bd .elf Bitgen輸出_bd.bmm,包含了BRAM的物理位 置。_bd.bmm和.bit文件輸入到 Data2MEM。Data2MEM將數(shù)據(jù)片斷轉(zhuǎn)換為正確的初始化 記錄,這些記錄用于Virtex系列的BRAM。,仿真模型產(chǎn)生器,仿真模型產(chǎn)生器(Simulation Model Generator, Simgen)為一個給定的硬件生成和配置不同的VHDL和 Verilog仿真模型。 MHS文件作為Simgen的輸入,MHS文件描述了硬 件元件的例化和連接。Simgen也為指定廠商的綜合工具生 成腳本。腳本編譯產(chǎn)生的仿真模型。,仿真庫,仿真網(wǎng)表使用低層次的Xilinx FPGA可使用的硬件原 語。Xilinx為這些原語提供了仿真模型。下面介紹了Xilinx 的仿真流程中所使用的庫。HDL代碼必須參考相對應的編 譯庫。 HDL仿真庫必須將邏輯庫與物理編譯的庫相對應。 Xilinx的庫可以使用CompXLib工具進行編譯。,仿真庫 -UNISIM庫,UNISIM庫是功能模型庫,用于行為和結(jié)構(gòu)仿真。該 庫包含所有的Xilinx統(tǒng)一的庫元件,這些庫元件可以被大 部分的綜合工具識別。UNISIM庫也包含了那些通用的例 化元件,比如I/O和存儲器單元。 設計人員在設計中例化UNISIM庫,并且在行為仿真 時進行仿真。Simgen產(chǎn)生的結(jié)構(gòu)仿真模型例化UNISIM庫 元件。 在UNISIM庫中的所有元件都是0延遲的。所有的同步 元件有一個單位的延遲避免競爭條件,對于同步元件的 clock-to-out延遲是100ps。,仿真庫 -SIMPRIM庫,SIMPRIM庫用于時序仿真。它包含所有的Xilinx實現(xiàn) 工具中使用的Xilinx的原語庫元件。Simgen產(chǎn)生的時序仿 真模型例化SIMPRIM庫元件。,仿真庫 -XilinxCoreLib庫,Xilinx的核產(chǎn)生器是一個圖形化的IP設計工具用來產(chǎn) 生高層次模塊,比如FIR濾波器,F(xiàn)IFOs,CAMs和其它高 級IP。設計人員可以定制和預優(yōu)化模塊來利用Xilinx FPGA芯片的固有的結(jié)構(gòu)特點,比如,塊乘法器,SRL, 快速進位邏輯和片上的單端口或雙端口RAM。 核產(chǎn)生器HDL庫模型用于行為仿真。設計人員選擇合 適的HDL模型添加到HDL設計中。模型不使用用于全局信 號的庫元件。,仿真庫 - EDK庫,EDK庫用于行為仿真。該庫保存了所有的EDK IP元 件,這些元件預編譯用于ModelSim SE、PE或NcSim。庫 免除了需要為每一個工程重新編譯EDK元件,減少了編譯 的時間。EDK IP元件庫只提供VHDL語言,并且可能加密。 未加密的EDK IP元件能使用Xilinx的CompEDKLib工 具編譯。對于加密的EDK IP元件提供了預編譯庫。,仿真模型產(chǎn)生器 -仿真模型,功能仿真設計輸入設計綜合設計網(wǎng)表設計實現(xiàn)設計實 現(xiàn)的網(wǎng)表時序仿真行為仿真結(jié)構(gòu)仿真圖4.4 FPGA設計仿 真階段 該部分介紹行為仿真模型、結(jié)構(gòu)仿真模型和時序仿真 模型。圖5.4給出了FPGA的設計仿真階段。在設計過程的 每個點,Simgen建立一個合適的仿真模型模型。,仿真模型產(chǎn)生器 -仿真模型,仿真模型產(chǎn)生器 -行為模型,圖5.5給出了行為仿真模型。Simgen要求MHS文件作為 輸入。Simgen建立一系列的仿真模型。可選的,Simgen為 指定廠商的仿真器產(chǎn)生編譯腳本。如果指定,Simgen能用 數(shù)據(jù)產(chǎn)生HDL文件去初始化與存在設計中的BRAM相關 聯(lián)。這個數(shù)據(jù)從存在在可執(zhí)行和連接格式(ELF)文件中 得到。,仿真模型產(chǎn)生器 -行為模型,仿真模型產(chǎn)生器 -結(jié)構(gòu)模型,圖5.6所示,Simgen要求MHS文件和相關的綜合網(wǎng)表 文件作為輸入。從這些網(wǎng)表文件中建立一系列的HDL文 件結(jié)構(gòu)建模設計功能。Simgen可以為指定廠商的仿真器 產(chǎn)生一個編譯腳本。如果指定,Simgen能用數(shù)據(jù)產(chǎn)生 HDL文件去初始化與存在設計中的BRAM相關聯(lián)。這個 數(shù)據(jù)從存在在可執(zhí)行和連接格式(ELF)文件中得到。,仿真模型產(chǎn)生器 -結(jié)構(gòu)模型,仿真模型產(chǎn)生器 -時序模型,圖5.7所示,Simgen要求MHS文件和相關的實現(xiàn)網(wǎng)表 文件作為輸入。從這些網(wǎng)表文件中建立一個的HDL文件對 設計建模和包含合適的時序信息的SDF文件。Simgen可以 為指定廠商的仿真器產(chǎn)生一個編譯腳本。如果指定, Simgen能用數(shù)據(jù)產(chǎn)生HDL文件去初始化與存在設計中的 BRAM相關聯(lián)。這個數(shù)據(jù)從存在在可執(zhí)行和連接格式 (ELF)文件中得到。,仿真模型產(chǎn)生器 -時序模型,仿真模型產(chǎn)生器-輸出文件,Simgen在輸出目錄的仿真目錄下產(chǎn)生所有的仿真文件 和每個仿真模型的子目錄。 Output_directory/simulation/sim_model 當Simgen成功執(zhí)行后,仿真目錄下包含下面的文件: (1)peripheral_wapper.vhd|v:每個元件的模塊化仿真文件。對 時序仿真不適用; (2)system_name.vhd|v:設計的頂層HDL (3)system_name.sdf:標準延遲格式sdf,包含合適的快和網(wǎng)絡 延遲,這些信息來自布局布線過程,只用于時序仿真; (4)system_name.do|sh:用于編譯HDL文件和編譯仿真模型 的腳本文件。,仿真模型產(chǎn)生器-輸出文件,(5) test_harness_setup.do|sh:建立仿真器的助手腳本,并且 指定了在波形窗口或者列表窗口顯示的信號。 (6)test_harness_wave.do|sv:koam;建立仿真波形顯示助手 腳本; (7)test_harness_list.do:建立仿真列表顯示助手腳本; (8)instance_wave.do|sv:為指定實例建立仿真波形顯示的助 手腳本; (9)instance_list.do:為指定實例建立列表顯示的助手腳本;,仿真模型產(chǎn)生器 -存儲器初始化,如果設計中包含存儲器時,使用數(shù)據(jù)初始化相 應的仿真模型。使用-pe選項,可以指定與給定處 理器實例的ELF文件。通過選擇合適的GNU編譯 器,產(chǎn)生被編譯的可執(zhí)行文件。,庫產(chǎn)生器,庫產(chǎn)生器(Library Generator,Libgen)通常是第一 個工具用于配置庫和設備驅(qū)動。Libgen使用設計人員建 立的MSS文件。MSS文件定義了與外設,標準I/O設備, 中斷句柄例程和其它軟件特性相關的驅(qū)動。Libgen使用 這些信息配置庫和驅(qū)動。運行 libgen options filename命 令來運行庫產(chǎn)生器。,庫產(chǎn)生器加載路徑,庫產(chǎn)生器加載路徑,庫產(chǎn)生器輸出文件,Libgen在設計工程目錄下產(chǎn)生目錄和輸出文件。對于 MSS文件的每個處理器實例,Libgen產(chǎn)生和處理器實例名 字相對應的目錄。在每一個處理器實例目錄下,Libgen產(chǎn) 生下面的目錄和文件:include目錄、lib目錄、libsrc目 錄、code目錄。,庫產(chǎn)生器輸出文件,1、include目錄 Include目錄包含驅(qū)動程序必須的C頭文件。Libgen在這 個目錄下創(chuàng)建xparameter.h文件。該文件定義了系統(tǒng)中外 設的基地址,#define是驅(qū)動,OS,庫和用戶程序以及函 數(shù)原型所需要的。微處理器驅(qū)動定義文件 (Microprocessor Driver Definition,MDD)為每一個驅(qū)動指 定了定義,這些定義用于需要驅(qū)動的外設。 2、lib目錄 lib目錄包含libc.a,libm.a和libxil.a庫。Libxil庫包含特 定處理器能夠訪問的驅(qū)動函數(shù)。,庫產(chǎn)生器輸出文件,3、libsrc目錄 Libsrc目錄包含中間文件和MAKE文件,這些文件是 用來編譯OS,庫和驅(qū)動。該目錄包含外設指定的驅(qū)動文 件,用于OS的BSP文件和庫文件。這些文件從EDK和設計 的驅(qū)動,OS和庫目錄中復制。 4、code目錄 該目錄包含EDK可執(zhí)行文件。Libgen在該目錄中創(chuàng)建 xmdstub.elf文件(該文件用于MicroBlaze的板上調(diào)試)。,庫產(chǎn)生器 生成庫和驅(qū)動 -基本觀點,MHS和MSS文件定義了系統(tǒng)。對于系統(tǒng)中的每個處理 器,Libgen找到可尋址的外設清單。對于每一個處理器, 建立一個唯一的驅(qū)動和庫的清單。Libgen為每個處理器完 成下面的過程:,庫產(chǎn)生器生成庫和驅(qū)動 -基本觀點,(1)建立在輸出文件部分所定義的目錄結(jié)構(gòu) (2)為驅(qū)動,OS和庫拷貝必要的源文件到處理器實例指定的區(qū) 域:OUTPUT_DIR/ processor_instance_name/libsrc. (3)為處理器可見的每一個驅(qū)動、OS和庫調(diào)用設計規(guī)則檢查 DRC程序(作為可選項在MDD/MLD文件中定義)。 (4)為處理器可見的每一個驅(qū)動、OS和庫調(diào)用generate Tcl程 序。為每一個在include目錄下的驅(qū)動,OS和庫產(chǎn)生必要的 配置文件。 (5)為處理器可見的每一個驅(qū)動、OS和庫調(diào)用post_generate Tcl程序(如果在和MDD和MLD相關的Tcl文件中定義),庫產(chǎn)生器生成庫和驅(qū)動 -基本觀點,(6)為處理器指定的OS,驅(qū)動和庫運行make。在UNIX平 臺下,使用gmake工具。在Windows環(huán)境下,make用于編 譯。 (7)為處理器指定的OS,驅(qū)動和庫調(diào)用execs_generate Tcl 程序(如果在和MDD和MLD相關的Tcl文件中定義)。,庫產(chǎn)生器生成庫和驅(qū)動 MDD/MLD和Tcl,一個驅(qū)動或庫需要兩個數(shù)據(jù)文件關聯(lián): 1)數(shù)據(jù)定義文件(MDD或MLD文件):這個文件定義了用 于驅(qū)動、OS和庫的可配置參數(shù); 2)數(shù)據(jù)產(chǎn)生文件(Tcl):這個文件使用了在MSS文件中配置 的參數(shù)(這些參數(shù)用于驅(qū)動、OS或庫)來產(chǎn)生數(shù)據(jù)。產(chǎn) 生的數(shù)據(jù)包括但不局限于產(chǎn)生頭文件,C文件,運行 DRC,這些文件用于驅(qū)動、OS或庫和產(chǎn)生可執(zhí)行文件。,庫產(chǎn)生器生成庫和驅(qū)動 MDD/MLD和Tcl,Tcl文件包括Libgen在執(zhí)行不同級別時所調(diào)用的程序。 在Tcl中不同的程序包括: 1)DRC 在MDD/MLD中給出了DRC的名字 2)generate Libgen定義的程序,當文件被拷貝后被調(diào)用 3)post_generate Libgen定義的程序,當generate被調(diào)用后調(diào)用該 程序 4)execs_generate Libgen定義的程序,當BSP,庫和驅(qū)動產(chǎn)生后 調(diào)用該程序;,庫產(chǎn)生器生成庫和驅(qū)動 驅(qū)動,大多數(shù)外設都需要軟件驅(qū)動。MSS文件包含一個驅(qū)動 塊用于每一個外設實例。塊包含對驅(qū)動的名字 (DRIVER_NAME參數(shù))和版本(DRIVER_VER)參考。 這些參數(shù)沒有默認值。驅(qū)動LEVEL與所要求的驅(qū)動功能 有關。驅(qū)動目錄中為不同級的驅(qū)動包含源文件和頭文 件,以及用于驅(qū)動的MAKE文件。,庫產(chǎn)生器生成庫和驅(qū)動 驅(qū)動,驅(qū)動有一個MDD文件和/或Tcl文件關聯(lián)。 MDD文件為驅(qū)動指定了所有可配置的參數(shù)。這是數(shù) 據(jù)定義文件。每一個MDD文件有一個相關的Tcl文件。 Tcl文件產(chǎn)生數(shù)據(jù),其中包括頭文件的產(chǎn)生、C文件的 產(chǎn)生,用于運行驅(qū)動的DRC,產(chǎn)生可執(zhí)行文件。,庫產(chǎn)生器生成庫和驅(qū)動 驅(qū)動,設計者可以編寫自己的驅(qū)動。這些驅(qū)動必須在一個指 定的目錄下 (YOUR_PROJECT /driver或library_name/drivers)。 DRIVER_NAME屬性允許設計人員為驅(qū)動指定任何名 字(該名字也是驅(qū)動目錄的名字)。源文件和MAKE文件 必須在DRIVER_NAMEsrc目錄下。MAKE應該有對象 (include和libs)。每個驅(qū)動應該包含MDD文件和Tcl文件 (在data子目錄中)。參考已經(jīng)存在的EDK驅(qū)動來了解驅(qū) 動的結(jié)構(gòu)。,庫產(chǎn)生器生成庫和驅(qū)動 庫,MSS文件為每一個庫包含一個庫塊。庫塊包含對庫名 字(LIBRARY_NAME參數(shù))和版本(LIBRARY_VER)參 考。這些參數(shù)沒有默認值。庫目錄中包含用于庫的C源文 件、頭文件和MAKE文件。 MLD文件為每一個庫指定了可配置的選項。每個 MLD文件都有Tcl文件與之關聯(lián)。,庫產(chǎn)生器生成庫和驅(qū)動 庫,設計人員可以編寫自己的庫。這些必須在一個指定的 目錄中(YOUR_PROJECT/sw _services或 library_name/sw_services)。LIBRARY_NAME屬性允許 設計人員為驅(qū)動指定任何名字(該名字也是庫目錄的名 字)。源文件和MAKE文件必須在LIBRARY_NAMEsrc 目錄下。MAKE應該有對象(include和libs)。每個庫應 該包含MLD文件和Tcl文件(在data子目錄中)。參考已 經(jīng)存在的EDK庫來了解庫的結(jié)構(gòu)。,庫產(chǎn)生器生成庫和驅(qū)動 OS Block,MSS文件包含為每個處理器實例包含一個OS塊。OS 塊包含對OS名字(OS_NAME參數(shù))和版本(OS_VER)參 考。這些參數(shù)沒有默認值。bsp目錄中包含用于OS的C源 文件、頭文件和MAKE文件。 MLD文件為每一個OS指定了可配置的選項。每個 MLD文件都有Tcl文件與之關聯(lián)。,庫產(chǎn)生器生成庫和驅(qū)動 OS Block,設計人員可以編寫自己的OS。這些必須在一個指定的 目錄中(YOUR_PROJECT/bsp或library_name/bsp)。 OS_NAME屬性允許設計人員為OS指定任何名字(該名字 也是OS目錄的名字)。源文件和MAKE文件必須在 OS_NAMEsrc目錄下。MAKE應該有對象(include和 libs)。每OS庫應該包含MLD文件和Tcl文件(在data子目 錄中)。參考已經(jīng)存在的EDK的操作系統(tǒng)OS來了解OS的 結(jié)構(gòu)。,平臺規(guī)范工具,平臺說明工具(Platform Specification Utility, PsfUtility)工具能自動生成微處理器外設定義 (Microprocessor Peripheral Defination,MPD)文 件。MPD文件用于建立EDK相容的IP核。這個工具的 特性能通過XPS的創(chuàng)建和導入外設向?qū)В–reate and Import Peripheral Wizard)提供。,平臺規(guī)范工具,設計者使用psfUtility從IP核的VHDL規(guī)范來建立MPD 規(guī)范。建立核和通過EDK提供的步驟為: 1)用VHDL或Verilog語言編碼,對所有的總線信號 (時鐘信號、復位信號和中斷信號)使用嚴格的命名規(guī)范。 2)建立一個XST工程文件或者PAO文件,列出實現(xiàn)IP 的所有的HDL源文件。 3)通過提供XST工程文件或PAO文件使用PsfUtility工具。,FLASH存儲器編程 -flash編程,典型的,設計者可以對flash進行下面進行編程: 可執(zhí)行/可引導的應用程序的映像文件 FPGA的硬件比特流文件 文件系統(tǒng)的映像,數(shù)據(jù)文件,例如簡單數(shù)據(jù)和算法的表格,FLASH存儲器編程 -flash編程,第一種情況最普遍,當處理器離開復位狀態(tài)時, 開始執(zhí)行保存在處理器復位位置指定的BRAM內(nèi)的代 碼。 典型的,BRAM非常小以至于不能提供整個設計 的軟件應用程序的映像。 因此,設計人員可以將軟件應用程序的映像保存 在flash中。設計一個可以裝在BRAM內(nèi)的小的引導啟動 代碼,離開復位后,從flash中讀取軟件應用程序的映 像文件,然后將其復制復制到外部的存儲器中,然后 將控制傳送到設計的軟件應用程序中。,FLASH存儲器編程 -flash編程,設計人員通過工程所建立的軟件應用程序是可執(zhí)行 的ELF格式。通常并不存儲和引導ELF映像文件本身, 這是因為啟動引導一個ELF映像文件會增加啟動引導的 復雜度。取而代之的是,ELF的映像文件被轉(zhuǎn)化成一個 通用的引導啟動映像格式,例如:SREC(Motorola-S記 錄格式)或IHEX,這樣啟動引導就變得簡單,代碼長度 也減少了。,FLASH存儲器編程 -支持Flash硬件,FLASH存儲器編程對話框允許設計人員對板上的 外部CFI(Common Flash Interface,CFI)接口兼容的并行 存儲器進行編程,方法是通過外部存儲器(Externel Memory Controller, EMC)IP核連接。編程方案被設計 成是通用的,并且面向不同F(xiàn)lash硬件和布局。,FLASH存儲器編程 -支持Flash硬件,通過與處理器連接的調(diào)試器來實現(xiàn)編程。XPS 或者SDK在目標處理器上下載和執(zhí)行小的系統(tǒng)內(nèi) Flash編程存根(stub)。主機Tcl腳本使用命令驅(qū)動 系統(tǒng)內(nèi)Flash編程存根(stub)來完成對Flash的編 程。對話框不處理或理解被編程的映像文件,只是 將其編程到flash存儲器上。設計的軟件應用和硬件 設置必須推斷出編程所期望的文件內(nèi)容。表4.5給出 了所支持的Flash的配置。表5.6給出了CFI定義的命 令集。,FLASH存儲器編程 -支持Flash硬件,FLASH存儲器編程 -支持Flash硬件,FLASH存儲器編程 -支持Flash硬件,默認情況下,flashwriter程序只支持那些CFI設備, 即其扇區(qū)映射匹配存放在CFI表中的內(nèi)容。一些flash廠 商知道在CFI中存放扇區(qū)映射,但是根據(jù)flash啟動結(jié)構(gòu) 有所不同。 當對flash進行編程時,假定滿足下面條件: (1)flash硬件假定在復位狀態(tài); (2)所有的flash扇區(qū)都假定在非保護狀態(tài); (3)flash編程存根不會解鎖或者初始化flash。如果flash不 在準備狀態(tài)或者非鎖定狀態(tài)時,將產(chǎn)生錯誤報告。,FLASH存儲器編程 -編程的先決條件,在使用編程Flash存儲器對話框時,必須滿足下面先決 條件: 1)在合適的EDK工程中,打開對話框;對話框從當前打開的 EDK工程中推斷和使用數(shù)據(jù); 2)設計的硬件必須在flash和至少一個處理器之間通過 PLB/AXI EMC外設正確的連接; 3)設計人員必須確認通過JTAG和主機連接,使用工程 的比特流文件初始化FPGA,這是因為對話框通過下載和 執(zhí)行flashwritter程序來工作。,FLASH存儲器編程 -編程的先決條件,4)必須使用XMD調(diào)試選項對話框來指定當前設計的調(diào)試器的 信息。如果使用MicroBlaze處理器來編程flash存儲器,處理 器必須將MDM和flash連接。如果XMD STUB軟件插入的監(jiān) 視器用于與處理器的調(diào)試連接,則不能執(zhí)行flash編程操作。 5)在之前必須執(zhí)行產(chǎn)生庫和BSP的步驟,這是因為flashwritter使 用處理器的庫。 6)Flashwritter必須有至少8KB的空間。Flashwritter本身會占用一 大部分的儲存器。剩余的一大塊區(qū)域用于緩沖來自主機的比 特流。因此,當分配給flashwritter的空間多余8KB時,將大大 提高flashwritter的速度,這對于大的映像文件的編程是非常重 要的。,FLASH存儲器編程 -編程對話框,單擊TOOLS-Program Flash Memory來打開編程Flash 存儲器對話框。在對話框下給出下面的信息。 1、需要編程的文件 通過瀏覽文件和選擇文件,或者給出文件的路徑,來 選擇需要編程到flash設備上的文件。,FLASH存儲器編程 -編程對話框,2、自動轉(zhuǎn)換文件 選擇自動轉(zhuǎn)換文件檢驗欄(check box),當文件要 編程到flash中時,必須轉(zhuǎn)化和以映像文件的格式保存在 flash中。選擇映像文件的格式,比如,SREC。只有當 編程的文件是ELF格式的時候,才可以使用自動轉(zhuǎn)換文 件選項。 當創(chuàng)建啟動裝入(bootloader)代碼時或者將ELF格 式的啟動裝入代碼轉(zhuǎn)換成普通的啟動裝入映像格式 (SREC)時,這個選項非常有用。,FLASH存儲器編程 -編程對話框,3、處理器實例 選擇通過EMC控制器和flash設備連接的處理器。這個 處理器將被用來執(zhí)行flashwriter程序。 4、Flash存儲器屬性 1)實例名字 選擇存儲器控制器的實例名,該控制器用來和目標版上的flash 設備接口。 2)編程的偏移地址 選擇編程flash的偏移地址,在該偏移地址下開始編程映像文 件。如果設計人員想在flash不同的區(qū)域編程不同的文件映像, 每次可以改變這個參數(shù)來選擇在flash內(nèi)不同的位置來編程文 件。,FLASH存儲器編程 -編程對話框,5、便箋式(Scratch Pad)存儲器屬性 選擇便箋式存儲器控制器的實例名,該控制器用來和 目標版上的空閑的便箋式存儲器連接,而該存儲器用來存 儲flashwritter。該存儲器必須滿足前面的大小要求。不要 和flash選擇相同的存儲器控制器。 6、創(chuàng)建Flash啟動代碼 選擇Create Flash Bootloader檢查欄來自動的為該配置 創(chuàng)建啟動裝入應用程序。 在SW Application Project域內(nèi),指定啟動裝入應用程 序的名字。使用自動產(chǎn)生的值來初始化啟動裝入應用程序 的名字,如果需要的話,設計人員可以改變這個值。,FLASH存儲器編程 -編程對話框,7、編程存儲器 單擊Program Flash按鈕開始flashwriter。對話框在XPS 控制臺釋放XMD。算法的剩余部分從控制臺執(zhí)行。,FLASH存儲器編程 -定制Flash編程,上面所介紹的編程flash的配置可能不適合設計者的要 求,比如,硬件和前面的CFI命令集不兼容或者存儲器大 小的限制。該部分簡單的介紹flash編程的算法,設計人員 可以為特殊的配置進行定制。 當單擊Program Flash按鈕時,產(chǎn)生下面的事件序列: 1、flash_params.tcl文件被寫入到etc/文件夾下。這包含用來描 述flash編程會話的參數(shù),并且被Tcl文件使用。,FLASH存儲器編程 -定制Flash編程,2、XPS使用在XMD上執(zhí)行的Tcl腳本來發(fā)布XMD,比如: xmd tcl flashwriter.tcl 這個flashwriter主腳本來自安裝程序。當運行Program Flash按鈕 時,如果運行自己的驅(qū)動腳本,需要在設計工程的根目錄下存放自 己的fashwriter.tcl腳本。XMD首先在該目錄下查找該腳本,然后才會 在其它目錄下查找該腳本;,FLASH存儲器編程 -定制Flash編程,3、flashwriter Tcl腳本從etc/flashwriter文件夾下拷貝flashwriter 應用程序源代碼。在本地編譯應用程序,在所選的便箋式存儲器 的地址范圍外執(zhí)行程序。如果希望編譯自己設計的flashwriter源代 碼,需要修改在本地工程文件夾下的fashwriter.tcl腳本,使其編譯自 己的flashwriter源代碼。,FLASH存儲器編程 -定制Flash編程,4、腳本下載flashwriter到處理器。通過存儲器內(nèi)的郵箱,腳本和 flashwriter程序通信。換句話說,根據(jù)在flashwriter地址空間的變量 寫參數(shù)到存儲器位置,并且執(zhí)行flashwriter。 5、腳本在每個操作結(jié)束時,等待flashwriter調(diào)用一個回調(diào)函數(shù), 通過在函數(shù)上設置斷點,在回調(diào)函數(shù)時停止執(zhí)行程序。一旦 flashwriter停止執(zhí)行時,主機上的Tcl將處理結(jié)果,并且繼續(xù)執(zhí)行更 多要求的命令;,FLASH存儲器編程 -定制Flash編程,6、當編程時,flashwriter只擦寫那些需要保存映射文件的存儲器 區(qū)域; 7、如果試圖進行一次編程,Tcl下載整個映像文件到存儲器中, 并且讓flashwriter完成編程操作。如果在流模式下編程,它反復的操 作(stream)映像文件的每一塊,并且讓flashwriter以大塊方式對 flash編程。它在flashwriter內(nèi)的存儲器緩沖區(qū)保存這些大塊。 8、一旦編程完成,flashwriter Tcl發(fā)生退出命令到flashwriter,并 且終止XMD會話。,FLASH存儲器編程 -定制Flash編程,下面給出用于定制流程的步驟示例: 1從/data/xmd/flashwriter.tcl目錄復制 flashwriter.tcl到EDK的工程文件下; 2在EDK工程下建立sw_services目錄(如果不存在) 3復制/data/xmd/flashwriter目錄到sw_services目 錄; 4編輯flashwriter.tcl文件的行 set flashwriter_srcfile join $xilinx_edk “data” “xmd” “flashwriter” “src” 將其改為 set flashwriter_srcfile join “.” “sw_services” “flashwriter” “src”,FLASH存儲器編程 -定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論