基于SoPC目標(biāo)板Flash編程設(shè)計(jì)的創(chuàng)建及應(yīng)用
隨著集成電路工藝技術(shù)的不斷發(fā)展和集成度的提高,嵌入式系統(tǒng)由板級向芯片級過渡,形成一種新的設(shè)計(jì)方法一片上系統(tǒng)(System on Chip,簡稱SoC)。SoC從整個系統(tǒng)的角度出發(fā),把處理機(jī)制、模型算法、芯片結(jié)構(gòu)、各層次電路,直至器件的實(shí)際電路緊密連接起來,在單個(少數(shù)幾個)芯片上實(shí)現(xiàn)整個系統(tǒng)的功能。同時隨著現(xiàn)場可編程邏輯陣列(FPGA)技術(shù)的日益成熟,將PLD與嵌入式處理器IP軟核相結(jié)合,形成基于可編程片上系統(tǒng)(System on Programmable Chip,簡稱 SOPC)的SoC解決方案,使得更加靈活的SOPC成為現(xiàn)代嵌入式系統(tǒng)設(shè)計(jì)的發(fā)展趨勢。SoPC是Altera公司提出的一種靈活、高效的SoC解決方案。它將處理器、存儲器、I/O口、LVDS、CDR等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一個可編程器件上,構(gòu)成一種特殊的可編程片上嵌入式系統(tǒng)。一方面,它是可編程片上系統(tǒng),即由單個芯片完成整個系統(tǒng)的主要功能,并具備軟硬件系統(tǒng)可編程的能力;另一方面,它內(nèi)嵌處理器IP核,具有靈活的設(shè)計(jì)方式,用戶可根據(jù)需要隨意配置、構(gòu)建、裁剪處理器IP核。目前最具有代表性的IP軟核嵌入式處理器是Altera的NiosII軟核。NiosII嵌入式CPU是一種專門為SoPC設(shè)計(jì)應(yīng)用而優(yōu)化的CPU軟核。
在基于NiosII的SoPC嵌入式系統(tǒng)中,幾乎所有的應(yīng)用設(shè)計(jì)都需要使用Flash來保存在NiosII中運(yùn)行的程序代碼、非易失性數(shù)據(jù)和FPGA的配置數(shù)據(jù)。因此Flash編程便成為在調(diào)試完SoPC系統(tǒng)后的重要工作。要對Flash編程,首先要保證在SoPC Builder中Target選項(xiàng)區(qū)域的Board下拉列表框中選擇用戶使用的目標(biāo)板F1ash編程設(shè)計(jì)。基于實(shí)際設(shè)計(jì)需求,詳細(xì)介紹SoPC目標(biāo)板Flash編程設(shè)計(jì)的創(chuàng)建,并以一個最小SoPC系統(tǒng)為例,說明目標(biāo)板Flash編程設(shè)計(jì)的應(yīng)用及Flash編程。
2 Flash Programmer簡介
NiosII IDE提供了Flash Programmer工具來對目標(biāo)板上遵循通用Flash接口(Common Flash Interface,簡稱CFI),規(guī)范的Flash及EPCS配置器件進(jìn)行編程。IDE的FlashProgrammer通過使用Altera的下載電纜能夠方便地對目標(biāo)板上連接在FPGA上的Flash及串行配置器件EPCS進(jìn)行編程。
2.1 Flash Programmer編程工作過程
NiosII的IDE Flash Programmer采用兩步驟將數(shù)據(jù)寫入Flash中。第一步,用一個Altera提供的特殊Flash編程設(shè)計(jì)(Flash Programmer Design)對FPGA進(jìn)行配置;第二步,IDEFlash Programmer將要編程到Flash中的文件內(nèi)容傳送到在FPGA上運(yùn)行的Flash編程設(shè)計(jì),然后Flash編程設(shè)計(jì)將接收到的數(shù)據(jù)編寫到Flash中。其編程工作過程如圖1所示。
2.2 Flash編程設(shè)計(jì)
Flash編程設(shè)計(jì)實(shí)際就是一個由SoPC Builder系統(tǒng)生成的最小FPGA設(shè)計(jì)。Flash編程設(shè)計(jì)是IDE Flash Programmer的關(guān)鍵組成部分。不同的目標(biāo)板往往使用不同的Flash器件,并且Flash與FPGA的引腳連接以及FPGA的型號也不相同。因此,每個Flash編程設(shè)計(jì)都是與具體的目標(biāo)板相聯(lián)系的,不能用于其他的目標(biāo)板。如果使用自己的目標(biāo)板,那么設(shè)計(jì)者必須創(chuàng)建該目標(biāo)板的Flash編程設(shè)計(jì)。Altem公司的Nios開發(fā)板都提供了相應(yīng)的Flash編程設(shè)計(jì),可以在NiosII開發(fā)套件安裝目錄的、ipnios2_ip文件夾中找到。
2.3 Flash編程設(shè)計(jì)信息
目標(biāo)板Flash編程設(shè)計(jì)描述了系統(tǒng)與目標(biāo)板之間的關(guān)系。目標(biāo)板Flash編程設(shè)計(jì)對Flash編程必不可少,它提供了Flash Programmer對Flash編程所需的全部信息。一個目標(biāo)板Flash編程設(shè)計(jì)是一組SOPC Builder文件,其中必須指明FPGA與Flash的連接關(guān)系。一個目標(biāo)板Flash編程設(shè)計(jì)包含下列信息:①每一個連接到電路板FPGA上的F1ash的參考元件標(biāo)號,如U7,U7Flash,U3EPCS等;②Flash器件在F1ash編程設(shè)計(jì)中的基地址;③用于配置目標(biāo)板上FPGA的Flash編程設(shè)計(jì)的SOF文件。
參考元件標(biāo)號用于區(qū)分設(shè)計(jì)中不同的Flash器件。目標(biāo)板上的Flash器件在設(shè)計(jì)時的命名和基地址可能不同,但參考元件標(biāo)號總是相同的。
3 目標(biāo)板Flash編程設(shè)計(jì)的創(chuàng)建
用戶自制目標(biāo)板,而在Target選項(xiàng)區(qū)中的Board下拉列表框中沒有相應(yīng)的目標(biāo)板Flash編程設(shè)計(jì),用戶就必須自己創(chuàng)建目標(biāo)板Flash編程設(shè)計(jì)。
3.1目標(biāo)板Flash編程設(shè)計(jì)文件創(chuàng)建
下面以QuaausII 7.0為例,詳細(xì)說明目標(biāo)板Flash編程設(shè)計(jì)的創(chuàng)建。目標(biāo)板Flash編程設(shè)計(jì)在SoPC Builder中實(shí)現(xiàn)。在QuaausII中新建一個工程,在[Tools]菜單中選擇[SoPC Builder],打開Ahera SOPC Builder圖形編輯界面環(huán)境。在SoPC Builder圖形編輯界面中,在[File]菜單中選擇[New Board Description],打開Board Description Editor對話框,在此對話框中選擇NetList頁面,在Device Familv欄中正確選擇目標(biāo)板的FPGA系列,這里以Cyclone II為例,如圖2所示。
選擇Flash Memory頁面,單擊New Flash Memory按鈕添加目標(biāo)板的Flash器件,并輸入正確的連接到目標(biāo)板FPGA的參考元件標(biāo)號和Flash器件類型。參考元件標(biāo)號可命名為用戶的任意字符串,如U7,EPCS,F(xiàn)lash等,但不能命名成U7(CFIFlash),U3(EPCS)等形式。再單擊此頁面的New HardwareImage按鈕,指定FPGA硬件配置程序的存儲位置,一般選擇EPCS器件。如果設(shè)置為Flash器件,需要有相應(yīng)的外部控制器、單片機(jī)或CPLD配合使用。設(shè)置如圖3所示。
FPGA硬件配置可放在NOR Flash中,也可放在EPCS中。在Hardware Image Name欄下輸入硬件配置映像的名稱,如epcs,user,factory等。對于每一個Hardware Image Name,都要選擇一個用來存儲的Flash。如果用戶設(shè)計(jì)中,即采用EPCS,又采用NOR Flash對FPGA的配置數(shù)據(jù)進(jìn)行存儲,則可在Hardware Image Name欄下輸入兩個硬件配置映像名,如user,factory,然后分別指定為前面的參考元件標(biāo)號;對于offset欄的設(shè)置,如果對應(yīng)的Device欄為Flash器件,則可以指定硬件映像在Flash中的編程偏移地址;如果對應(yīng)的Device欄為EPCS器件,則不能在offset欄中指定偏移地址。最后選擇Files頁面,輸入Board Description Name,Version和System Template,單擊Finish按鈕完成目標(biāo)板Flash編程設(shè)計(jì)的創(chuàng)建,如圖4所示。
評論