999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的SPI接口Flash控制器設計及其在存儲配置數據中的應用

2014-09-06 08:34:01趙慶平李素文杜偉寧姜恩華
吉林大學學報(理學版) 2014年5期
關鍵詞:指令設計

趙慶平,李素文,杜偉寧,姜恩華

(1. 淮北師范大學 物理與電子信息學院,安徽 淮北 235000; 2. 空軍航空大學 飛行訓練基地,長春 130062)

基于FPGA的SPI接口Flash控制器設計及其在存儲配置數據中的應用

趙慶平1,李素文1,杜偉寧2,姜恩華1

(1. 淮北師范大學 物理與電子信息學院,安徽 淮北 235000; 2. 空軍航空大學 飛行訓練基地,長春 130062)

針對現場可編程門陣列(FPGA)豐富的邏輯資源及產生精確時序的能力,給出一種基于FPGA的SPI控制器的設計方法. 可方便地對SPI flash進行讀寫、 擦除等操作,從而能快速、 準確地存儲數據. 在SPI控制器設計過程中使用Modelsim進行仿真驗證,并用VHDL硬件描述語言進行編程,下載到FPGA開發板上進行測試,對SPI接口flash進行操作,證明了系統設計方法的正確性和可靠性,該方法對flash存儲控制系統的設計具有普遍適用性,實現了對以FPGA為控制核心的系統數據長時間存儲.

串行外設接口控制器; 現場可編程門陣列; VHDL設計; Modelsim仿真

現場可編程門陣列(field programmable gate array,FPGA)是在PAL,GAL,EPLD和CPLD等可編程邏輯器件基礎上發展的產物[1]. 由于FPGA芯片需要被反復燒寫,因此只能采用一種易于反復配置的結構. 目前主流的FPGA都采用基于SRAM工藝的查找表結構,由于FPGA采用SRAM工藝,芯片無易失性,所以掉電后易丟失其內部的邏輯配置.

串行外設接口(serial peripheral interface,SPI)是一個快速、 多雙工、 支持串行通信的接口,主要用于微型處理芯片、 小控制器及與外圍擴展器件間進行連接[2-3]. 利用SPI flash大容量、 讀寫速度快、 成本低廉及數據在斷電后不丟失的特點,可將FPGA的配置數據存儲于SPI flash中.

本文采用美國Xilinx公司的Virtex-5和意法半導體公司的M25P16進行設計. 對SPI控制器進行仿真,符合SPI時序要求. 與PC機進行通信測試表明,寫入和讀出的數據相符. 將FPGA配置數據存儲在M25P16中,實現了FPGA配置數據的掉電不丟失.

1 系統總體設計

設計使用美國Digilent公司出品的開發板Genesys,該開發板使用的FPGA芯片是Xilinx公司的Virtex-5,Virtex-5系列采用第二代高級芯片組合模塊(ASMBLTM)列式架構,采用65 nm銅工藝技術,支持330 000個邏輯單元,6個時鐘管理模塊,1 200個用戶接口,提供從1.2~3.3 V的廣泛I/O標準范圍,16.4 Mb的集成模塊存儲器,與SelectIO技術配合使用,簡化源同步接口. Flash芯片采用意法ST Microelectronics公司的M25P16. 該芯片是16 Mb(2 M×8)串行flash存儲器,兼容高速SPI接口. M25P16包含32個扇區,每個扇區有256頁,每頁256個字節. 該芯片由2.7~3.6 V單電源供電,最大50 MHz工作時鐘,100 000次的擦除和重寫,可保持20年時間. 系統的總體設計框圖如圖1所示. 圖1中,FPGA作為電路核心,連接上位機和SPI flash存儲器. 一方面接收來自上位機PC串口的數據,并將數據存儲到flash中; 另一方面,從flash中讀出數據并通過串口發送到上位機.

在FPGA芯片中需要構建3個模塊,分別是UART控制器、 FIFO模塊及SPI控制器,如圖2所示.

圖1 系統總體方案設計Fig.1 Overall designment of system

圖2 FPGA內部模塊設計Fig.2 Designment of FPGA internal module

上位機和FPGA間通過RS232進行通信. RS232是PC機通信常用的接口,遵循異步傳輸標準. RS232采用UART協議,需要在FPGA內構建UART模塊,實現數據在上位機和FPGA間的傳輸. 在FPGA中構建SPI控制器,為flash提供時鐘,并對其進行擦除和讀寫操作. UART和SPI模塊的時鐘不同,因此需要添加FIFO(即先進先出隊列)作為兩者間的數據緩沖. 因為接收的串口數據被串并轉換為8字節,與之相連的FIFO位寬定為8字節,深度設為256個單元.

2 SPI接口工作原理

圖3 SPI接口Fig.3 SPI interface

SPI接口可分為主機(master)和從機(slave)兩部分,其結構框圖如圖3所示. 主機和從機間用4根數據線進行連通,分別為CS,SDK,MDSI和MISD[4],其中: CS為從機片選信號,由主機控制輸出; SDK為同步時鐘數據線,用于對主機及從機的內容傳輸實現同步,由主機向外發出控制輸出,下位機則在SDK的上升沿及下降沿進行接收或發送數據; MDSI為主機用于輸出、 從機用于輸入信號,主機在下降沿時(或上升沿)由此信號線發數據給從機,而從機在上升沿時(或下降沿)由此信號線接收發來的內容; MISD為主機用于輸入、 從機用于輸出信號,從機在上升沿時(或下降沿)使用此信號線發送內容給主機,主機在下降沿時(或上升沿)使用此信號線接收該內容[5-6].

SPI工作原理: 當沒有數據需要傳輸在主機和下位機間時,主機由控制SDK輸出低電壓,CS則輸出高電壓,SPI總線則處于不忙狀態; 如果有內容需要進行傳輸時,主機可控制CS輸出為高電壓,SDK則輸出為時鐘信號,SPI總線則處于工作狀態; 在某個時鐘的邊沿,從機或主機會并行發送數據,將內容各自傳輸到MDSI及MISD上; 而在下一個時鐘沿時,從機或主機同時接收內容,各自將MISD及MDSI上的內容接收并進行存儲; 而當內容全部傳輸完成后,主機就會控制SDK輸出為空閑的電平,而CS則輸出無效電位,SPI總線又回到空閑狀態,至此,完成一個完整的SPI數據總線傳送過程[7-9].

3 SPI控制器

SPI控制器的設計采用Verileg HDL硬件描述語言[10-11]. Verileg描述的器件在編譯和綜合時適應能力強,系統可自動優化[12]處理. 雖然對應語言的解讀性能較弱,但仿真后的糾錯能力較強. 本文設計的SPI控制器主要完成以下任務:

1) 寫flash: 將上位機發送來的256字節數據寫入flash的某頁中;

2) 讀flash: 從flash寫有數據的一頁中讀出并傳送到上位機顯示;

3) 將FPGA配置數據存儲在flash芯片內,重新上電,讀取flash中數據對FPGA重新配置.

寫flash操作首先要對flash進行擦除操作,輸入擦除指令并等待3 s,然后進行寫操作. 寫操作要輸入8位wren指令、 8位pp指令、 24位地址,隨后輸入數據,流程如圖4所示. 由圖4可見,寫操作開始時處于檢測輸入狀態idle,當有數據從上位機發送過來時,立即進入SPI工作模式; wren指令將寫寄存器的寫使能位WEL置1,輸入擦除指令se和要擦除頁的地址,等待3 s,這時寫使能位WEL復位為0,重新輸入wren指令并將WEL位置1; 輸入頁寫指令、 頁寫地址和頁寫數據; 完成后回到檢測狀態. 讀操作相對簡單,輸入讀指令和讀地址后,數據即從flash中輸出,狀態如圖5所示. 由圖5可見,讀操作開始處于檢測讀使能狀態,當允許讀時,發送讀指令和讀地址,數據即從flash中輸入到FPGA芯片內,經過FIFO傳送到上位機進行顯示.

圖4 寫操作Fig.4 Writing operation

圖5 讀操作Fig.5 Reading operation

4 仿真與調試

本文設計采用ISE+Modelsim的方法進行聯合設計. ISE是Xilinx公司推出的EDA設計軟件,它集成HDL代碼編輯、 原理圖編輯、 代碼編譯、 綜合、 工程仿真及鎖定管腳和下載程序的功能. ISE提供了設計開發工具的所有功能,支持Xilinx的全系列邏輯器件產品,并集成了XST綜合工具,支持核生成工具和PACE. 明導國際公司的Modelsim是目前廣泛使用的HDL硬件描述語言的仿真軟件,能很好地仿真測試環境,可以單內核支持VHPL和Veralog HDL混合仿真的軟件[10]. 寫操作的仿真結果如圖6所示.

圖6 寫操作仿真結果Fig.6 Simulation result of writing operation

由圖6可見,當上位機有數據發送到FPGA時,接收并放在FIFO中. FIFO存儲滿后,FPGA使能SPI控制器開始工作. 在scl信號的下降沿準備指令、 地址,并從FIFO中讀出數據,逐位在scl上升沿輸入到flash中.

讀操作的仿真結果如圖7所示. 由圖7可見,當要讀取flash中的數據,使能讀信號start_read,然后SPI控制器進入讀數據狀態. 在scl的下降沿flash輸出數據,在scl上升沿采集到FPGA芯片中,緩存在FIFO中. FIFO寫滿后,由串口回傳給PC機,進行核對.

圖7 讀操作仿真結果Fig.7 Simulation result of reading operation

由仿真結果可見,該設計方案滿足了時鐘和數據的建立和保持時間,可避免毛刺的產生. 在仿真通過后,將工程下載到開發板上進行運行測試. 本文使用的開發板是Digilent公司的Xilinx FPGA開發板. 下載測試: 上位機發送到FPGA寫入flash芯片的256字節數據,再用FPGA讀出flash中剛存儲的數據并返回到上位機. 若結果完全相同,則表明SPI flash讀寫測試成功,如圖8所示.

圖8 讀取SPI flash數據Fig.8 SPI flash data reading

最后,將FPGA編譯產生的數據下載到該SPI flash芯片中,重新上電,系統動加載硬件數據,實現了FPGA配置數據的掉電不丟失功能.

綜上所述,本文介紹了基于FPGA的SPI控制器設計方法,并使用Digilent公司的FPGA開發板Genesys進行了驗證. 結果表明,該方法能完成SPI flash控制器的邏輯仿真,可以對SPI flash的讀寫進行驗證,利用此flash實現了對FPGA重新上電的自動配置功能. 本文設計在FPGA芯片上實現,具有較高的可移植性,控制器經過簡單修改即可應用于控制其他型號的SPI flash芯片,具有廣泛的適用性.

[1]蔚接鎖. 基于FPGA與流水線CORDIC算法的FFT處理器的實現 [D]. 天津: 天津大學,2009. (WEI Jiesuo. The Implementation of a FFT Processor Based on FPGA and CORDIC Algorithm [D]. Tianjin: Tianjin University,2009.)

[2]羅莉,夏軍,鄧宇. 通用SPI Flash控制器的設計與驗證 [J]. 計算機工程,2011,37(8): 22-24. (LUO Li,XIA Jun,DENG Yu. Design and Verification of General SPI Flash Controller [J]. Computor Engineering,2011,37(8): 22-24.)

[3]鄭川. Step by Step現場可編程門陣列設計入門與進階 [M]. 西安: 西安電子科技大學出版社,2008. (ZHENG Chuan. Design of Step by Step Field-Programmable Gate Array [M]. Xi’an: Xidian University Press,2008.)

[4]唐琳,方方,張保靜,等. 基于ARM的多通道SPI Flash控制器設計 [J]. 核電子學與探測技術,2012,32(5): 583-586. (TANG Lin,FANG Fang,ZHANG Baojing,et al. Design of a Multi-channel SPI Flash Controller Based on STM32 [J]. Nuclear Electronics & Detection Technology,2012,32(5): 583-586.)

[5]關珊珊,周潔敏. 基于Xilinx FPGA的SPI Flash控制器的設計與驗證 [J]. 電子器件,2012,35(2): 216-220. (GUAN Shanshan,ZHOU Jiemin. Design and Verification of SPI Flash Controller Based on Xilinx FPGA [J]. Chinese Journal of Electron Devices,2012,35(2): 216-220.)

[6]趙新雨,許忠仁,付貴增,等. 基于FPGA與單片機的SPI接口的實現 [J]. 工業儀表與自動化裝置,2010(2): 32-33. (ZHAO Xinyu,XU Zhongren,FU Guizeng,et al. The Design of SPI Interface Connection Based on FPGA and MCU [J]. Industrial Instrumentation & Automation,2010(2): 32-33.)

[7]王松. 基于FPGA的串行外圍接口SPI設計與實現 [J]. 微計算機信息,2010,26(11): 117-119. (WANG Song. Design and Implementation of Serial Peripheral Interface Based on FPGA [J]. Microcomputer Information,2010,26(11): 117-119.)

[8]楊翰文. 基于FPGA的單向網閘專用控制系統的設計與實現 [D]. 北京: 北京交通大學,2010. (YANG Hanwen. Design and Implementation of FPGA-Based One-Way GAP-Specific Control System [D]. Beijing: Beijing Jiaotong University,2010.)

[9]侯偉先. 基于FPGA的IP核設計技術在慣測系統中的應用與研究 [D]. 長沙: 國防科學技術大學,2009. (HOU Weixian. Research and Application of IPcore Design Technique Based on FPGA in Inertial Measurement System [D]. Changsha: National University of Defense Technology,2009.)

[10]張萍. 基于Verilog語言的DDS設計與仿真 [D]. 西安: 西安電子科技大學,2007. (ZHANG Ping. Design and Simulation of DDS Based on Verilog HDL [D]. Xi’an: Xidian University,2007.)

[11]程琤. 幾種硬件描述語言HDL的現狀與發展 [J]. 重慶工業高等??茖W校學報,2004,19(5): 36-38. (CHENG Cheng. The Status Quo and Development of Several Hardware Description Languages [J]. Journal of Chongqing Polytechnic College,2004,19(5): 36-38.)

[12]孔昕,吳武臣,侯立剛,等. 基于Verilog的有限狀態機設計與優化 [J]. 微電子學與計算機,2010,27(2): 180-183. (KONG Xin,WU Wuchen,HOU Ligang,et al. Verilog Design and Optimization of FSMs [J]. Microelectronics & Computer,2010,27(2): 180-183.)

(責任編輯: 韓 嘯)

DesignofSPIInterfaceFlashControllerBasedonFPGAandApplicationinStoringConfigurationData

ZHAO Qingping1,LI Suwen1,DU Weining2,JIANG Enhua1(1.SchoolofPhysicsandElectronicInformation,HuaibeiNormalUniversity,Huaibei235000,AnhuiProvince,China;
2.FlightTrainingBasic,AviationUniversityofAirForce,Changchun130062,China)

The authors presented a designed method using serial peripheral interface controller based on field programmable gate array. Using logic resources of FPGA with the ability to produce accurate time series,we can expediently read-write and wipe SPI flash and store data rapidly and accurately. It also expounds the designing process of SPI controller,which utilizes the simulation and verification by Modelsim and uses VHDL hardware description language to programme. Then we downloaded the program to FPGA development board to test and verify the read-write and wipe SPI flash and finally operated the SPI interface flash. It is proved that the method is correct and reliable,and has general applicability to the system designment of the flash controller. This method with FPGA as the control core of system achieved data storage for a long time.

serial peripheral interface (SPI) controller; field programmable gate array(FPGA); VHDL design; Modelsim simulation

2014-04-11.

趙慶平(1972—),男,漢族,碩士,講師,從事FPGA及嵌入式系統設計的研究,E-mail: zhaoqingping1215@163.com.

國家自然科學基金(批準號: 41275027)和安徽省高校自然科學研究項目(批準號: KJ2013Z228).

TP332.3

A

1671-5489(2014)05-1022-05

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 一本无码在线观看| 日韩中文无码av超清 | 91亚洲视频下载| 中日韩一区二区三区中文免费视频 | 国产自在线播放| 亚洲丝袜中文字幕| 国产呦视频免费视频在线观看| 97se亚洲综合不卡| 亚洲AV无码乱码在线观看代蜜桃| 国产精品女主播| 国产精品所毛片视频| 天天摸夜夜操| 国产SUV精品一区二区6| 成人va亚洲va欧美天堂| 精品视频91| 欧美成人手机在线视频| 久热re国产手机在线观看| 亚洲高清资源| 国产成人精品2021欧美日韩| 欧美精品另类| 欧美日韩午夜| 中文字幕免费视频| 国产成人精品第一区二区| 亚洲人成网站观看在线观看| av在线人妻熟妇| 国产白浆一区二区三区视频在线| a毛片在线播放| 欧洲在线免费视频| 国产自视频| 国产偷国产偷在线高清| 久久精品亚洲专区| 欧美www在线观看| 久久精品国产免费观看频道| 毛片国产精品完整版| 2019年国产精品自拍不卡| 久久久久无码国产精品不卡| 亚欧成人无码AV在线播放| 成年人福利视频| 欧美中文一区| 欧美黄网在线| 亚洲无码37.| 日韩久久精品无码aV| 国产成人1024精品| 中文国产成人精品久久一| 尤物国产在线| 广东一级毛片| 被公侵犯人妻少妇一区二区三区 | 欧美丝袜高跟鞋一区二区| 四虎永久免费地址在线网站| 亚洲中文无码av永久伊人| 99国产在线视频| 1769国产精品免费视频| 中文国产成人精品久久| 2020国产精品视频| 欧美区一区| 韩国v欧美v亚洲v日本v| 久久亚洲中文字幕精品一区| 综合网天天| 国产理论最新国产精品视频| 99久视频| 久久久四虎成人永久免费网站| 久久国产香蕉| 国产丝袜无码精品| 国产精品视频系列专区| 激情综合激情| 怡春院欧美一区二区三区免费| 欧美日韩激情| 91国语视频| 国产综合欧美| 97精品国产高清久久久久蜜芽 | 成人欧美在线观看| 欧美日韩精品在线播放| 国产精品亚洲一区二区在线观看| 欧美国产日韩一区二区三区精品影视| 激情无码字幕综合| 欧美日韩一区二区在线免费观看| 香蕉久久国产精品免| av大片在线无码免费| 丁香综合在线| 99人妻碰碰碰久久久久禁片| 国产精品一区在线麻豆| 欧美成人一级|