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

并行NOR Flash在SOPC開發中的應用

發布時間:2010-6-4 16:49    發布者:李寬
關鍵詞: NOR , SoPC
引言

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

1 存儲FPGA配置比特流

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


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

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

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

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

J3D可以同時配置多塊 FPGA,也可對同一塊FPGA進行多比特流配置。例如先配置一個診斷測試比特流,測試成功后,再重新配置應用比特流。

2 存儲可引導的軟處理器代碼

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


圖2 Generate Linker Script對話框

雙擊相應軟件工程下的Compiler Options選項,進入Set Compiler Options對話框,設定Link Script項為剛才產生的腳本文件,并指定Output ELF File項的路徑與名稱。現在可以編譯相應的軟件工程,產生相應的可執行ELF文件,設為Bootable.elf。

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


圖3 Program Flash Memory對話框

3 存儲可直接執行的軟處理器代碼

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

① 創建存儲在BRAM中的鏡像volatile.elf。在XPS中,選擇Project → Launch EDK Shell,并執行下列命令:



② 創建存儲在Flash中的鏡像J3D.bin。在XPS中,選擇Project → Launch EDK



將volatile.elf合并到系統配置比特流system.bit,生成 dowload.bit,再經iMPCT轉為MCS格式后下載到配置PROM中。再將J3D.bin通過Program Flash Memory對話框下載到J3D中。這樣系統上電并完成配置后,J3D中的代碼無需引導便可以直接執行。

4 存儲非易失數據或參數

有時候系統需要存儲非易失的數據或參數,這就需要通過編寫程序直接對J3D進行讀/寫操作。當然,前提是先要在EDK中為J3D添加一個XPS MCH EMC接口。這個接口對并行NOR Flash和SRAM來說都是適用的,如果用于SRAM則可以直接讀/寫,不需要驅動,而用于并行Flash則需要自己編寫相應的驅動程序。下面為自行編寫的一個執行塊擦除、單字寫、單字讀操作的程序。需要注意的是:寫操作前一定要先進行擦除操作,寫命令或寫數據之后一定要對狀態寄存器進行判斷是否完成相應操作;讀操作則很簡單,像SRAM的讀/寫一樣。



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

結語

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

參考文獻

  [1] 薛小剛,葛毅敏.Xilinx ISE 9.x FPGA/CPLD設計指南[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.

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

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • dsPIC® DSC:攻克各種觸摸傳感挑戰的電容式觸摸解決方案
  • 探索PIC16F13145 MCU系列——快速概覽
  • PIC32CM LS00 Curiosity Pro評估工具包
  • PIC32CK SG單片機——輕松滿足新型網絡安全要求
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本国产亚洲| 亚洲精品免费观看| 日韩亚洲一区中文字幕在线| 四虎在线永久免费观看| 亚洲视频在线播放| 色偷偷97| 狍和美女一级aa毛片| 亚洲天天在线| 色之综合网| 人妖在线播放| 欧美无遮挡一区二区三区| 亚州中文字幕| 日本一区中文字幕| 亚洲xx在线| 亚色中文字幕| 人人人人干| 四虎www.| 亚洲午夜久久久久久91| 欧美一区二区三区四区在线观看| 四虎一影院区永久精品| 青青青视频精品中文字幕| 亚洲第一在线观看| 亚洲天天在线| 日韩免费黄色片| 日本天天操| 青草国产在线视频| 亚洲欧美日韩综合一区久久| 亚洲国内自拍| 亚洲精品第一第二区| 日韩一及片| 亚洲国产天堂| 亚洲午夜在线观看| 亚洲日本中文字幕| 日本a黄色片| 欧美激情在线精品一区二区| 欧美综合成人| 欧美激情a∨在线视频播放| 视频在线h| 婷婷色伊人| 日本免费观看完整视频| 色偷偷亚洲男人天堂|