国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

并行NOR Flash在SOPC開發(fā)中的應(yīng)用

發(fā)布時(shí)間:2010-6-4 16:49    發(fā)布者:李寬
關(guān)鍵詞: NOR , SoPC
引言

隨著FPGA技術(shù)的發(fā)展,出現(xiàn)了一種新概念的嵌入式系統(tǒng),即SOPC(System On Programmable Chip)。SOPC技術(shù)融合了SoC和FPGA的優(yōu)點(diǎn),將處理器、片上總線、片上存儲(chǔ)器、內(nèi)部外設(shè)、I/O接口以及自定義邏輯集成在同一片F(xiàn)PGA中,而且軟硬件可裁剪、可升級(jí)、可修改,具有軟硬件在系統(tǒng)編程能力,在保證高性能的同時(shí)具有非常高的靈活性。由于大部分功能部件在FPGA內(nèi)實(shí)現(xiàn),外部只需要很少的器件,如大容量的RAM、Flash、DACADC等。在系統(tǒng)需要脫離計(jì)算機(jī)獨(dú)立運(yùn)行時(shí)(絕大部分情況如此),非易失的存儲(chǔ)器件Flash是必不可少的。Flash可以用來存儲(chǔ)配置比特流、代碼、數(shù)據(jù)或參數(shù)等重要信息。本文以Intel StrataFlash 3V Memory系列的JS28F128J3D75并行NOR Flash(簡(jiǎn)稱“J3D”)和Xilinx FPGA Spartan3E系列的XC3S1600E(簡(jiǎn)稱“1600E”)為背景,在結(jié)合項(xiàng)目開發(fā)經(jīng)驗(yàn)和參閱相關(guān)文獻(xiàn)的基礎(chǔ)上,介紹了并行NOR Flash在SOPC開發(fā)中的4種不同應(yīng)用。

1 存儲(chǔ)FPGA配置比特流

1600E工作在BPI(Bytewide Peripheral InteRFace)配置模式時(shí),通過專門的引腳與J3D連接,這些引腳在配置完成后可以作為用戶I/O使用。連接時(shí),大部分引腳參考1600E的數(shù)據(jù)手冊(cè)直接連接即可,但有些引腳需要特別注意。J3D有×8(數(shù)據(jù)總線寬度為8位)和×16(數(shù)據(jù)總線寬度為16位)兩種工作模式。配置時(shí)應(yīng)工作在×8模式,配置完成后,根據(jù)需要可以設(shè)置為×8或×16模式。圖1為1600E與J3D引腳連接示意圖。


圖1 1600E與J3D引腳連接示意圖

若配置后需要切換至×16模式,則需綜合考慮1600E的HSWAP腳。HSWAP接高電平時(shí),1600E所有用戶I/O的內(nèi)部上拉電阻禁用,HDC通過4.7kΩ電阻接高電平,LDC2通過4.7 kΩ電阻接地,LDC1和LDC0通過4.7kΩ電阻接高電平,同時(shí)這3個(gè)信號(hào)應(yīng)分別連到J3D的BYTE#、OE#、CE0腳。這樣上電后的瞬間,J3D工作在×8模式,且因CE0腳被拉高而處于非選中狀態(tài),不會(huì)導(dǎo)致對(duì)J3D的誤操作;然后在1600E的控制下進(jìn)入配置狀態(tài),配置結(jié)束可通過控制 LDC2輸出高電平而將J3D切換為×16模式。HSWAP接低電平時(shí),1600E所有用戶I/O的內(nèi)部上拉電阻使能,LDC1、LDC0和HDC無需外接上拉電阻;而LDC2應(yīng)接340Ω的下拉電阻,以使上電后J3D工作在×8模式,從而順利進(jìn)入配置狀態(tài),配置結(jié)束后可將J3D切換為×16模式。

若配置后工作在×8模式,則J3D的BYTE#腳接低電平,1600E的LDC2懸空。當(dāng)HSWAP接高電平時(shí),LCD1和LCD0分別連至OE#、 CE0腳,同時(shí)應(yīng)通過4.7kΩ電阻上拉;HSWAP接低電平時(shí),LCD1和LCD0不用上拉。

配置比特流文件首先通過iMPCT轉(zhuǎn)換成MCS文件,再通過PicoBlaze NOR Flash Programmer(http://www.xilinx.com/products/boards/s3estarter/files /s3esk_picoblaze_nor_flash_programmer.zip)下載到J3D中。

J3D可以同時(shí)配置多塊 FPGA,也可對(duì)同一塊FPGA進(jìn)行多比特流配置。例如先配置一個(gè)診斷測(cè)試比特流,測(cè)試成功后,再重新配置應(yīng)用比特流。

2 存儲(chǔ)可引導(dǎo)的軟處理器代碼

首先利用Xilinx嵌入式開發(fā)工具箱EDK創(chuàng)建一個(gè)嵌入式工程,包括 MicroBlaze硬件平臺(tái)和相應(yīng)的軟件工程。在EDK界面下,用鼠標(biāo)選中創(chuàng)建的軟件工程,右擊并在彈出的菜單中選擇Generate Linker Script...項(xiàng),進(jìn)入Generate Linker Script對(duì)話框。將Sections、Heap和Stack指定到BRAM或外部RAM(一般將Heap和Stack指定到BRAM,代碼和數(shù)據(jù)段指定到外部RAM),并指定輸出腳本文件名及路徑,如圖2所示。


圖2 Generate Linker Script對(duì)話框

雙擊相應(yīng)軟件工程下的Compiler Options選項(xiàng),進(jìn)入Set Compiler Options對(duì)話框,設(shè)定Link Script項(xiàng)為剛才產(chǎn)生的腳本文件,并指定Output ELF File項(xiàng)的路徑與名稱。現(xiàn)在可以編譯相應(yīng)的軟件工程,產(chǎn)生相應(yīng)的可執(zhí)行ELF文件,設(shè)為Bootable.elf。

在EDK主界面下,用鼠標(biāo)選擇Device Configuration → Program Flash Memory,進(jìn)入Program Flash Memory對(duì)話框,并按圖3進(jìn)行設(shè)置。單擊OK按鈕,會(huì)把Bootable.elf文件自動(dòng)轉(zhuǎn)為SREC格式,并下載到J3D的指定地址處,同時(shí)產(chǎn)生名為bootloadr_0的軟件工程。bootloadr_0工程編譯后產(chǎn)生的可執(zhí)行文件executable.elf用來執(zhí)行引導(dǎo)裝載功能,應(yīng)將其合并到系統(tǒng)比特流system.bit,從而生成dowload.bit。dowload.bit經(jīng)iMPCT轉(zhuǎn)為MCS文件后下載到配置PROM中(若使用同一片J3D,注意不能與Bootable.elf發(fā)生地址空間沖突)。這樣,系統(tǒng)上電后,首先對(duì)FPGA進(jìn)行配置,然后引導(dǎo)加載J3D中的代碼至相應(yīng)的 BRAM或SDRAM中(具體映射位置已在Generate Linker Script對(duì)話框中設(shè)定)。


圖3 Program Flash Memory對(duì)話框

3 存儲(chǔ)可直接執(zhí)行的軟處理器代碼

這里仍然使用上面創(chuàng)建的EDK工程,由于J3D具有類似 SRAM的接口,上電后可以直接像SRAM一樣進(jìn)行讀操作,但卻不能直接進(jìn)行寫操作。因此,應(yīng)將只讀段.code、.rodata、.sdata2、.sbss2指定到J3D中,其余段指定到BRAM中,這可以在Generate Linker Script對(duì)話框中完成。重新編譯后生成新的Bootable.elf文件。此時(shí),Bootable.elf仍是一個(gè)整體,需要將其在物理上分為2個(gè)文件:一個(gè)存放只讀段,另一個(gè)存放其余段。具體可以通過下面的操作實(shí)現(xiàn)。

① 創(chuàng)建存儲(chǔ)在BRAM中的鏡像volatile.elf。在XPS中,選擇Project → Launch EDK Shell,并執(zhí)行下列命令:



② 創(chuàng)建存儲(chǔ)在Flash中的鏡像J3D.bin。在XPS中,選擇Project → Launch EDK



將volatile.elf合并到系統(tǒng)配置比特流system.bit,生成 dowload.bit,再經(jīng)iMPCT轉(zhuǎn)為MCS格式后下載到配置PROM中。再將J3D.bin通過Program Flash Memory對(duì)話框下載到J3D中。這樣系統(tǒng)上電并完成配置后,J3D中的代碼無需引導(dǎo)便可以直接執(zhí)行。

4 存儲(chǔ)非易失數(shù)據(jù)或參數(shù)

有時(shí)候系統(tǒng)需要存儲(chǔ)非易失的數(shù)據(jù)或參數(shù),這就需要通過編寫程序直接對(duì)J3D進(jìn)行讀/寫操作。當(dāng)然,前提是先要在EDK中為J3D添加一個(gè)XPS MCH EMC接口。這個(gè)接口對(duì)并行NOR Flash和SRAM來說都是適用的,如果用于SRAM則可以直接讀/寫,不需要驅(qū)動(dòng),而用于并行Flash則需要自己編寫相應(yīng)的驅(qū)動(dòng)程序。下面為自行編寫的一個(gè)執(zhí)行塊擦除、單字寫、單字讀操作的程序。需要注意的是:寫操作前一定要先進(jìn)行擦除操作,寫命令或?qū)憯?shù)據(jù)之后一定要對(duì)狀態(tài)寄存器進(jìn)行判斷是否完成相應(yīng)操作;讀操作則很簡(jiǎn)單,像SRAM的讀/寫一樣。



還有一種情況是在系統(tǒng)運(yùn)行前就把數(shù)據(jù)寫入Flash中。首先,把數(shù)據(jù)寫入一個(gè)二進(jìn)制文件中。注意,MicroBlaze的存儲(chǔ)格式是BigEndian(即高字節(jié)數(shù)據(jù)保存在低地址,低字節(jié)數(shù)據(jù)保存在高地址),PC機(jī)的存儲(chǔ)格式則是 LittleEndian(即高字節(jié)數(shù)據(jù)保存在高地址,低字節(jié)數(shù)據(jù)保存在低地址),因此如果是用VC++產(chǎn)生的二進(jìn)制文件,一定要進(jìn)行高、低字節(jié)交換。在 Matlab中生成數(shù)據(jù)文件則可以在相應(yīng)的文件操作函數(shù)中添加參數(shù)'b'(表示以BigEndian格式存儲(chǔ)),如 FileID=fopen('data.bin','w+','b')。產(chǎn)生的二進(jìn)制文件可以通過Program Flash Memory對(duì)話框下載到J3D中,注意不要選中Auto?convert file to SREC format when programming flash和Create Flash Bootloader Application選項(xiàng)。

結(jié)語

本文討論了在以Xilinx Spartan XC3S1600E為基礎(chǔ)的SOPC設(shè)計(jì)中,Intel J3D并行NOR Flash的4種不同用途及其使用方法與技巧,尤其對(duì)一些技術(shù)關(guān)鍵問題予以詳細(xì)的闡述,其中融入了筆者在項(xiàng)目開發(fā)中的實(shí)際經(jīng)驗(yàn),具有較高的參考價(jià)值。 J3D既可以用于存儲(chǔ)FPGA配置比特流,又可以存儲(chǔ)軟處理器程序代碼,也可以存儲(chǔ)非易失的數(shù)據(jù)和參數(shù),甚至三者可以并存于同一片J3D中。本文只是以 Intel J3D并行NOR Flash為例討論其在SOPC開發(fā)中的用法,這些方法同樣適用于其他廠家具有CFI(Common Flash InteRFace)接口的并行NOR Flash。靈活地綜合運(yùn)用這些方法,對(duì)于SOPC開發(fā)具有重要意義。

參考文獻(xiàn)

  [1] 薛小剛,葛毅敏.Xilinx ISE 9.x FPGA/CPLD設(shè)計(jì)指南[M].北京:人民郵電出版社,2007.
  [2] Ying Sue.Connecting Intel StrataFlash to Memory to Spartan3E FPGAs,2005.
  [3] Intel Inc.Intel Embedden Flash Memory(J3 v.D),200702.
  [4] Xilinx Inc.Spartan3E FPGA Family:Complete Data Sheet,20070529.
  [5] Xilinx Inc. Executing and Debugging Software FromFlash Memory,20070924.

作者:趙飛 王炎 (東南大學(xué)) 付瑜 (江蘇天寶汽車電子有限公司)
來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 2008 (9)
本文地址:http://www.qingdxww.cn/thread-12046-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 無線充電基礎(chǔ)知識(shí)及應(yīng)用培訓(xùn)教程3
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • 5分鐘詳解定時(shí)器/計(jì)數(shù)器E和波形擴(kuò)展!
  • 為何選擇集成電平轉(zhuǎn)換?
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久极品视频 | 一级做a爰片久久毛片毛片 一级做a爰片久久毛片看看 | 亚洲高清一区二区三区久久 | 成人黄色在线播放 | 亚洲综合色在线观看 | 国产精品日韩欧美亚洲另类 | 精品伊人久久久久网站 | 国内91视频 | 美女视频黄的免费视频网页 | 亚洲精品亚洲人成在线麻豆 | 一级做a爰片久久毛片一 | 国产精品高清免费网站 | 国产一毛片 | 欧美日韩一区二区三区视频 | 国产精品国产国产aⅴ | 日本免费色 | 亚洲国内精品自在线影视 | 久草网站 | 99热这里只 | 国产只有精品 | 婷婷热 | 视频精品一区二区三区 | 欧美成a人片在线观看 | 国产一级高清视频免费看 | 日韩精品一区二区三区中文在线 | 欧美在线观看一区二区三 | 国产精品lululu在线观看 | 91在线播放免费不卡无毒 | 国内一卡2卡三卡四卡在线 国内一级一级毛片a免费 | 男女网站免费 | 国产欧美在线观看精品一区二区 | 在线免费观看亚洲视频 | 亚洲啊v天堂 | 国产日产高清欧美一区二区三区 | 国产精品黄 | 亚洲全黄| 秋霞看片亚洲先锋一区 | 午夜网页 | 手机在线黄色网站 | 久久久久久岛国免费网站 | 亚洲成人精品久久 |