<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > SOPC系統中如何利用Flash來(lái)保存用戶(hù)程序

SOPC系統中如何利用Flash來(lái)保存用戶(hù)程序

作者: 時(shí)間:2012-04-18 來(lái)源:網(wǎng)絡(luò ) 收藏

1 中的作用

本文引用地址:http://dyxdggzs.com/article/149208.htm

中的作用主要表現在兩方面:一方面,可用來(lái)FPGA的配置文件,從而可以省去EPCS芯片或解決EPCS芯片容量不夠的問(wèn)題。當上電后,從Flash中讀取配置文件,對FPGA進(jìn)行配置。另一方面,可用Flash來(lái)。對于較為復雜的,一般較大,用EPCS來(lái)存儲是不現實(shí)的。完成配置后,將Flash中的轉移到外接RAM或片內配置生成的RAM中,然后系統開(kāi)始運行。

2 Flash編程的實(shí)現

本文以某項目的具體電路為例,闡述在SOPC系統中Flash來(lái)用戶(hù)程序。FPGA為Altera公司的Cyclone EP1C6,Flash為AMD公司的AM29LV160D,外接RAM為Samsung公司的K4S643232H,串行配置器件為EPCS1。開(kāi)發(fā)工具采用Altera公司提供的QuartusII和NioslI軟件。

NiosII的開(kāi)發(fā)環(huán)境中提供了Flash Programmer工具,對目標板上遵守CFI(Common Flash InteRFace)規范的Flash進(jìn)行編程。CFI是一種Flash接口規范,只要Flash符合該規范,通過(guò)專(zhuān)門(mén)的命令就能獲得其詳細的參數,并根據這些參數訪(fǎng)問(wèn)Flash。Altera公司的下載電纜,Flash Programmer工具可以對Flash器件中的任意偏移地址進(jìn)行任意內容的編程。Flash Programmer工具對Flash編程分為2個(gè)步驟:

①根據目標板編程描述對FPGA進(jìn)行配置;

②Flash Programmer工具將要編程到Flash的文件內容傳送到FPGA的數據緩沖區,然后FPGA將收到的數據寫(xiě)入Flash中。

2.1 目標板編程描述的創(chuàng )建

目標板編程描述實(shí)際就是一個(gè)由SOPC Builder系統生成的最小FPGA設計,其作用是對FPGA進(jìn)行適當配置以實(shí)現對Flash的編程。不同的電路板(目標板)往往使用不同的Flash器件,并且Flash與FPGA的引腳連接以及FPGA的型號也不相同,因此每個(gè)目標板編程描述都是與具體的目標板相關(guān)聯(lián)的,不能用于其他目標板。目標板提供了Flash Programmer工具對Flash進(jìn)行編程的全部信息,包括Flash的容量、Flash的引腳連接等。

一個(gè)目標板編程描述包含以下信息:每個(gè)接到FPGA上Flash器件的參考元件標號;Flash器件在目標板編程描述中的基地址;用于配置FPGA的SOF文件。

目標板編程描述的創(chuàng )建分2步:

①在Nios SDK Shell中使用mk_target_board命令創(chuàng )建一個(gè)工程模板;

②使用SoPC Builder對模板進(jìn)行編輯,從而形成完整的目標板編程描述。

每個(gè)目標板編程描述應包含下列元件:NiosII CPU;JTAG_UART接口;本目標板中采用串行配置器件EPCS存儲FPGA的配置文件,因此需要Active Serial MemoryInterface(ASMI);Tri-State Bridge(三態(tài)橋);CFI接口的Flash;System ID Peripheral;用于存放程序以及作為數據緩沖的On-chip memory。

下面以本目標板為例,介紹創(chuàng )建目標板編程描述的步驟:

①啟動(dòng)NiosII SDK shell;

②運行mk_target_board命令,創(chuàng )建一個(gè)目標板Flash編程描述模板(參數name=flash_board,family=cyclone,clock=80,index=1,epcs=U5,buffer_size=2 048,class=flash_programer);

③啟動(dòng)QuartusII軟件并打開(kāi)剛才創(chuàng )建的目標板編程描述工程flash_programer.qPf;

④在QuartusII軟件中選擇Assignments→Device打開(kāi)setting對話(huà)框,選取FPGA型號,本例為EP1C6Q240C8;

⑤啟動(dòng)SOPC Builder,在Target選項區的Board下拉列表框中選擇Unspecified Board,Clock欄的時(shí)鐘頻率取50 MHz,在模板的基礎上添加三態(tài)橋Avalon Tri-State Bridge和CFI接口的Flash(Flash的參考標號為U5,地址為20位,數據為16位);

⑥選擇System Generation選項卡,關(guān)閉Simulation選項,然后單擊Generate按鈕;

⑦當生成完成后,退出SOPC Builder,并返回到QuartuslI;

⑧在QuartuslI中更新原理圖,然后添加、鏈接并命名引腳;

⑨進(jìn)行引腳分配,確保與FPGA各引腳的連接一致;

⑩編譯并保存工程。

編譯成功后,目標板編程描述即成功創(chuàng )建。打開(kāi)SOPC Builder即可在Target選項區的Board下拉列表框中找到該目標板編程描述,本例為flash_board。(該目標板編程描述的頂層圖略——編者注)

創(chuàng )建好的目標板編程描述在任何設計的SOPC Builder中都能使用。如果想讓該目標板編程描述在其他PC機上使用,將整個(gè)設計文件夾拷貝到NiosII安裝路徑安裝盤(pán)>\altera\kits\nios2\components目錄下即可。 function ImgZoom(Id)//重新設置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>