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

基于FPGA的SPI接口Flash控制器設(shè)計(jì)及在存儲(chǔ)配置數(shù)據(jù)中的應(yīng)用

2014-02-05 05:11:57趙慶平姜恩華
關(guān)鍵詞:指令設(shè)計(jì)

趙慶平,姜恩華

(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)

基于FPGA的SPI接口Flash控制器設(shè)計(jì)及在存儲(chǔ)配置數(shù)據(jù)中的應(yīng)用

趙慶平,姜恩華

(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)

介紹了SPI工作原理,給出了一種基于FPGA的SPI控制器的設(shè)計(jì)方法。利用FPGA豐富的邏輯資源以及產(chǎn)生精確時(shí)序的能力,非常方便地對(duì)SPI flash進(jìn)行讀寫、擦除等操作,從而能快速、準(zhǔn)確地存儲(chǔ)數(shù)據(jù)。闡述SPI控制器的設(shè)計(jì)過程,使用Modelsim進(jìn)行仿真驗(yàn)證,并用VHDL硬件描述語言進(jìn)行編程,下載到FPGA開發(fā)板上進(jìn)行測(cè)試驗(yàn)證,對(duì)SPI接口Flash進(jìn)行操作。證明了系統(tǒng)設(shè)計(jì)方法的正確性和可靠性。該方法對(duì)FLASH存儲(chǔ)控制系統(tǒng)的設(shè)計(jì)具有普遍適用性,可用于對(duì)FPGA配置進(jìn)行保存。

SPI控制器;FPGA;VHDL設(shè)計(jì);Modelsim仿真

1 系統(tǒng)總體方案設(shè)計(jì)

使用德致倫公司出品的開發(fā)板Genesys,該開發(fā)板使用的FPGA芯片是xilinx公司的Virtex-5,Virtex-5系列采用第二代高級(jí)芯片組合模塊(ASMBLTM)列式架構(gòu),采用業(yè)界一流的65 nm銅工藝技術(shù),支持多達(dá)330 000個(gè)邏輯單元,6個(gè)時(shí)鐘管理模塊,多達(dá)1 200個(gè)用戶接口,提供從1.2 V到3.3 V的廣泛的I/O標(biāo)準(zhǔn)范圍,高達(dá)16.4 Mb的集成模塊存儲(chǔ)器,與Select IO技術(shù)配合使用,簡(jiǎn)化源同步接口[4]。

Flash芯片采用ST Microelectronics公司的M25P16。該芯片是16 Mbit(2 M×8)串行flash存儲(chǔ)器,兼容高速SPI接口。M25P16包含32個(gè)扇區(qū),每個(gè)扇區(qū)有256頁,每一頁有256個(gè)字節(jié)。該芯片由2.7 V~3.6 V單電源供電,最大50 MHz工作時(shí)鐘,100 000次的擦除和重寫,可以保持20年時(shí)間[5]。

本系統(tǒng)的系統(tǒng)框圖如圖1所示。

圖1 系統(tǒng)總體方案設(shè)計(jì)

圖1中,F(xiàn)PGA作為電路核心,連接上位機(jī)和SPI Flash存儲(chǔ)器。一方面接收來自上位機(jī)PC串口的數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到Flash中。另一方面,從Flash中讀出數(shù)據(jù)并通過串口發(fā)送到上位機(jī)。

在FPGA芯片中需要構(gòu)建三個(gè)模塊,分別是UART控制器,F(xiàn)IFO模塊以及SPI控制器。如圖2所示。

圖2 FPGA內(nèi)部模塊設(shè)計(jì)

上位機(jī)和FPGA之間是通過RS232進(jìn)行通信的。RS232是PC機(jī)通信常用的接口,遵循異步傳輸標(biāo)準(zhǔn)。RS232采用UART協(xié)議,需要在FPGA內(nèi)構(gòu)建UART模塊,實(shí)現(xiàn)數(shù)據(jù)在上位機(jī)和FPGA之間的傳輸。在FPGA中構(gòu)建SPI控制器,為flash提供時(shí)鐘,并對(duì)其進(jìn)行擦除和讀寫操作。UART和SPI模塊的時(shí)鐘不同,因此需要添加FIFO作為兩者之間數(shù)據(jù)緩沖。因?yàn)榻邮盏拇跀?shù)據(jù)被串并轉(zhuǎn)換為8 bits,與之相連的FIFO(即先進(jìn)先出隊(duì)列)位寬定為8 bits,深度設(shè)為256個(gè)單元。

2 SPI接口工作原理

SPI接口可以分為主機(jī)(Master)以及從機(jī)(Slave)兩個(gè)部分,其結(jié)構(gòu)框圖如圖3所示。

圖3 SPI接口

主機(jī)以及從機(jī)之間是通過4根信號(hào)線進(jìn)行連接的,它們分別是CS、SCK、MOSI和MISO。對(duì)它們的定義如下:

CS:從機(jī)片選信號(hào),由主機(jī)控制輸出;

SCK:同步時(shí)鐘信號(hào)線,用來對(duì)主機(jī)和從機(jī)的數(shù)據(jù)傳輸進(jìn)行同步,由主機(jī)發(fā)出控制輸出,從機(jī)則在SCK的上升沿和下降沿接收以及發(fā)送數(shù)據(jù);

MOSI:主機(jī)作為輸出、從機(jī)作為輸入信號(hào),主機(jī)在下降沿(或上升沿)由此信號(hào)線發(fā)數(shù)據(jù)給從機(jī),而從機(jī)在上升沿(或下降沿)由此信號(hào)線接收發(fā)來的數(shù)據(jù);

MISO:主機(jī)輸入、從機(jī)輸出信號(hào),從機(jī)在上升沿(或下降沿)通過該信號(hào)線發(fā)送數(shù)據(jù)給主機(jī),主機(jī)在下降沿(或上升沿)通過該信號(hào)線接收該數(shù)據(jù)[6]。

其工作原理為:當(dāng)無數(shù)據(jù)需要傳輸在主機(jī)和從機(jī)之間時(shí),主機(jī)通過控制SCK輸出低電平,CS則輸出高電平,SPI總線就會(huì)處于空閑的狀態(tài);如果有數(shù)據(jù)需要進(jìn)行傳輸時(shí),主機(jī)通過控制CS輸出為高電平,SCK則輸出時(shí)鐘信號(hào),SPI總線就會(huì)處在工作狀態(tài);在某個(gè)時(shí)鐘邊沿,從機(jī)或主機(jī)并行發(fā)送數(shù)據(jù),將數(shù)據(jù)各自傳輸?shù)組OSI以及MISO上;而在下一個(gè)時(shí)鐘沿,從機(jī)以及主機(jī)同時(shí)接收數(shù)據(jù),各自將MISO以及MOSI上的數(shù)據(jù)接收并進(jìn)行存儲(chǔ);而當(dāng)數(shù)據(jù)所有全部傳輸完成后,主機(jī)就會(huì)控制SCK輸出為空閑的電平,CS則輸出為無效的電平,而SPI總線就會(huì)又回到空閑的狀態(tài)。到此,一個(gè)完整的SPI數(shù)據(jù)總線傳輸過程完成[7]。

3 SPI控制器

SPI控制器的設(shè)計(jì)采用的是verilog HDL硬件語言。Verilog HDL是目前使用非常廣泛的硬件描述語言之一。Verilog描述的器件在編譯和綜合時(shí)適應(yīng)能力強(qiáng),系統(tǒng)可以自動(dòng)優(yōu)化。雖然對(duì)應(yīng)語言的解讀性能較弱。但是仿真以后的糾錯(cuò)能力強(qiáng)[8]。

本文設(shè)計(jì)的SPI控制器主要完成以下兩個(gè)主要任務(wù):

寫flash:將上位機(jī)發(fā)送來的256字節(jié)數(shù)據(jù)寫入flash的某一頁中;

讀flash:從flash寫有數(shù)據(jù)的一頁中讀出并傳送到上位機(jī)顯示。

將FPGA配置數(shù)據(jù)存儲(chǔ)在Flash芯片內(nèi),重新上電,讀取Flash中數(shù)據(jù)對(duì)FPGA重新配置。

寫flash操作首先要對(duì)flash進(jìn)行擦除操作,輸入擦除指令并等待3 s,然后進(jìn)行寫操作。寫操作要輸入8位WREN指令、8位PP指令、24位地址,隨后輸入數(shù)據(jù)。流程圖如圖4所示。

圖4 寫操作

開始時(shí)處于檢測(cè)輸入狀態(tài)idle,當(dāng)有數(shù)據(jù)從上位機(jī)發(fā)送過來,立即進(jìn)入SPI工作模式;wren指令將寫寄存器的寫使能位WEL置1,輸入擦除指令se和要擦除的頁的地址,需要等待3 s,這時(shí)寫使能位WEL復(fù)位為0,重新輸入wren指令將WEL位置1;輸入頁寫指令、頁寫地址和頁寫數(shù)據(jù);完成以后回到檢測(cè)狀態(tài)。

讀操作相對(duì)簡(jiǎn)單些,輸入讀指令、讀地址之后,數(shù)據(jù)即從flash中輸出。狀態(tài)如圖5所示。

圖5 讀操作

開始處于檢測(cè)讀使能狀態(tài),當(dāng)允許讀,發(fā)送讀指令和讀地址,數(shù)據(jù)就從flash中輸入到FPGA芯片內(nèi)。經(jīng)過FIFO傳送到上位機(jī)進(jìn)行顯示。

4 仿真與調(diào)試

本設(shè)計(jì)采用ISE + modelsim的方法進(jìn)行聯(lián)合設(shè)計(jì)。ISE是賽靈思公司推出的EDA設(shè)計(jì)軟件。它集成HDL代碼編輯、原理圖編輯,代碼編譯、綜合,工程仿真以及鎖定管腳和下載程序的功能。ISE提供了設(shè)計(jì)開發(fā)工具的所有功能,支持Xilinx的全系列邏輯器件產(chǎn)品,并集成了XST綜合工具,支持核生成工具和PACE[9]。明導(dǎo)國際公司的Modelsim是目前業(yè)界非常優(yōu)秀的HDL硬件語言仿真軟件,它可以提供很好的仿真環(huán)境,是目前業(yè)界內(nèi)唯一的實(shí)現(xiàn)單內(nèi)核支持VHDL以及Verilog HDL混合仿真的仿真軟件[10]。

寫操作的仿真圖如圖6所示。

圖6 寫操作仿真圖

由圖6可以看出,當(dāng)上位機(jī)有數(shù)據(jù)發(fā)送到FPGA的時(shí)候,接收放在FIFO中。FIFO存儲(chǔ)滿之后,F(xiàn)PGA使能SPI控制器開始工作。在scl信號(hào)的下降沿準(zhǔn)備指令、地址,并從FIFO中讀出數(shù)據(jù),逐位在scl上升沿輸入到flash中。

讀操作的仿真圖如圖7所示。

圖7 讀操作仿真圖

由圖7可以看出,當(dāng)要讀取flash中的數(shù)據(jù),使能讀信號(hào)start_read,然后SPI控制器進(jìn)入讀數(shù)據(jù)狀態(tài)。在scl的下降沿flash輸出數(shù)據(jù),在scl上升沿采集到FPGA芯片中,緩存在FIFO中。FIFO寫滿之后,由串口回傳給PC機(jī),進(jìn)行核對(duì)。

由仿真圖可以看出,滿足了時(shí)鐘和數(shù)據(jù)的建立和保持時(shí)間,可以避免毛刺的產(chǎn)生。在仿真通過后,將工程下載到開發(fā)板上進(jìn)行運(yùn)行測(cè)試。本文所使用的開發(fā)板是德致倫公司設(shè)計(jì)出品的Xilinx FPGA開發(fā)板。下載測(cè)試,上位機(jī)發(fā)送到FPGA寫入flash芯片的256字節(jié)數(shù)據(jù),再用FPGA讀出flash中剛剛存儲(chǔ)的數(shù)據(jù)并返回到上位機(jī)。如圖8所示,完全相同,說明SPI flash讀寫測(cè)試成功。

圖8 讀取SPIFlash數(shù)據(jù)

最后,將FPGA編譯產(chǎn)生的數(shù)據(jù)下載到該SPI Flash芯片中,重新上電,系統(tǒng)自動(dòng)加載硬件數(shù)據(jù),實(shí)現(xiàn)了FPGA配置數(shù)據(jù)的掉電不丟失功能。

5 結(jié)論

介紹了基于FPGA的SPI控制器的設(shè)計(jì)方法,使用Digilent公司的FPGA開發(fā)板Genesys進(jìn)行了驗(yàn)證。完成了SPI Flash控制器的邏輯仿真,對(duì)SPI Flash的讀寫進(jìn)行了驗(yàn)證,并且利用此Flash實(shí)現(xiàn)了對(duì)FPGA的重新上電的自動(dòng)配置功能。

本設(shè)計(jì)在FPGA芯片上實(shí)現(xiàn),具有較高的可移植性,控制器經(jīng)過簡(jiǎn)單修改就可以用于控制其它型號(hào)的SPI flash芯片,因此具有廣泛的適用性。

[1] 李冬梅,王延杰,王長宇,等.基于FPGA的高速實(shí)時(shí)圖像采集和自適應(yīng)閾值算法[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2010, 40(2):534-537.

[2] 羅莉,夏軍,鄧宇.通用SPI Flash控制器的設(shè)計(jì)與驗(yàn)證[J].計(jì)算機(jī)工程,2011,37(8):22-27.

[3] 鄭川.Step by Step現(xiàn)場(chǎng)可編程門陣列設(shè)計(jì)入門與進(jìn)階[M].西安:西安電子科技大學(xué)出版社,2008.

[4] 佟吉?jiǎng)?張振新.基于FPGA的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2009,22(3):417-421.

[5] 關(guān)珊珊,周潔敏.基于Xilinx FPGA的SPI Flash控制器的設(shè)計(jì)與驗(yàn)證[J].電子器件,2012,35(2):216-220.

[6] 趙新雨,許忠仁,付貴增,朱文偉.基于FPGA與單片機(jī)的SPI接口的實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2010(2):32-33.

[7] 王松.基于FPGA的串行外圍接口SPI設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(11-2):117-119.

[8] 王軍海.基于Verilog HDL的DDS設(shè)計(jì)[D].武漢:武漢理工大學(xué),2007.

[9] 孫航.Xilinx可編程邏輯器件的高級(jí)應(yīng)用與設(shè)計(jì)技巧[M].北京:電子工業(yè)出版社,2004.

[10] 范靜,陳文藝.基于Modelsim與Matlab/Simulink聯(lián)合仿真技術(shù)的接口與應(yīng)用研究[J].西安郵電學(xué)院報(bào),2010, 15(3):72-75.

(責(zé)任編輯、校對(duì):田敬軍)

Design of SPI Interface Flash Controller Based on FPGA and the Application in Storing Configuration Data

ZHAO Qing-ping, JIANG En-hua
(School of Physics and Electronic Information, Huaibei Normal University, Huaibei 235000, China)

It introduces the operating principles of SPI (serial peripheral interface) and gives a designed method by using SPI controller based on FPGA (Field Programmable Gate Array). We can expediently read-write and wipe SPI flash to quickly and accurately storage data with rich logical resources and accurate time series making by FPGA. It also expounds the designing process of SPI controller, which utilizes the simulation and verification by Modelsim and uses VHDL hardware description language controller to program, and then download the program to FPGA development board to test and verify and finally operates the SPI interface flash. It is proved that the method is correct and reliable, and has general applicability to the system designing of the FLASH controller and can be used to save the FPGA configuration.

SPI controller; FPGA; VHDL design; Modelsim simulation

TP332.3

A

1009-9115(2014)02-0069-04

10.3969/j.issn.1009-9115.2014.02.020

國家自然科學(xué)基金(41275027),安徽高校省級(jí)自然科學(xué)研究項(xiàng)目(KJ2013Z228),安徽高校省級(jí)自然科學(xué)研究重大項(xiàng)目(KJ2012ZD06)

2013-11-2

趙慶平(1972-),男,遼寧阜新人,碩士,講師,研究方向?yàn)镕PGA及嵌入式系統(tǒng)設(shè)計(jì)。數(shù)據(jù)的掉電不丟失。

FPGA(Field Programmable Gat Array,現(xiàn)場(chǎng)可編程門陣列)是在PAL、GAL、EPLD以及CPLD等可編程邏輯器件的基礎(chǔ)上發(fā)展出來的產(chǎn)物。由于FPGA芯片需要被反復(fù)燒寫,只能采用一種易于反復(fù)配置的結(jié)構(gòu)。目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu)。由于FPGA采用SRAM工藝,芯片無非易失性,所依掉電后丟失其內(nèi)部的邏輯配置[1]。

串行外設(shè)接口(Serial Peripheral Interface, SPI)是一種高速度、全雙工、同步串行通信接口,主要用于微處理器、微控制器和外圍擴(kuò)展芯片之間的連接[2]。利用SPI Flash大容量、讀寫速度快、成本低廉以及數(shù)據(jù)在斷電后不丟失的特點(diǎn),可以將FPGA的配置數(shù)據(jù)存儲(chǔ)于SPI Flash中[3]。

文中采用賽靈思公司的Virtex-5和意法半導(dǎo)體公司的M25P16進(jìn)行設(shè)計(jì)。對(duì)SPI控制器進(jìn)行仿真,符合SPI時(shí)序要求。與PC機(jī)進(jìn)行通信測(cè)試,寫入和讀出的數(shù)據(jù)吻合。將FPGA配置數(shù)據(jù)存儲(chǔ)在M25P16中,實(shí)現(xiàn)了FPGA配置

猜你喜歡
指令設(shè)計(jì)
聽我指令:大催眠術(shù)
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
瞞天過海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機(jī)的脆弱性分析
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 88国产经典欧美一区二区三区| 真人高潮娇喘嗯啊在线观看| 日韩av在线直播| 91在线播放国产| 国产国产人成免费视频77777 | a级毛片网| 国产精品成| 国产精品免费久久久久影院无码| 久久永久视频| 欧美成人怡春院在线激情| 波多野结衣无码中文字幕在线观看一区二区 | 欧美成人午夜在线全部免费| 国产一二三区视频| 无码内射中文字幕岛国片 | 久久亚洲国产视频| 国产高潮流白浆视频| swag国产精品| A级全黄试看30分钟小视频| 91探花国产综合在线精品| 91精品情国产情侣高潮对白蜜| 四虎精品黑人视频| 亚洲人成色在线观看| 91在线精品麻豆欧美在线| 美女一区二区在线观看| 欧美日韩福利| 最新午夜男女福利片视频| 九色在线视频导航91| 日韩精品成人在线| 亚洲中文字幕在线观看| 色偷偷av男人的天堂不卡| 91久久偷偷做嫩草影院| 国产91av在线| 国产麻豆精品在线观看| 亚洲精品免费网站| 97人妻精品专区久久久久| 中国一级毛片免费观看| 久久视精品| 91久久国产热精品免费| 国产亚洲欧美另类一区二区| 亚洲一级无毛片无码在线免费视频 | 亚洲美女久久| 久久精品aⅴ无码中文字幕| 欧美午夜在线播放| 国产在线视频福利资源站| 9啪在线视频| 一级高清毛片免费a级高清毛片| 日韩毛片免费| 日韩毛片在线播放| 少妇极品熟妇人妻专区视频| 最新亚洲人成网站在线观看| 一级毛片免费不卡在线| 成人午夜精品一级毛片| 99精品在线看| 久久婷婷五月综合97色| lhav亚洲精品| 婷婷色一区二区三区| 国产导航在线| 日韩精品免费一线在线观看| 人人91人人澡人人妻人人爽| 亚洲一区二区精品无码久久久| 国产永久免费视频m3u8| 精品91视频| 天堂岛国av无码免费无禁网站| 国产亚洲视频中文字幕视频| 91欧洲国产日韩在线人成| 欧洲亚洲欧美国产日本高清| 在线观看无码av免费不卡网站| 日韩在线2020专区| 国产美女无遮挡免费视频网站 | 麻豆精品久久久久久久99蜜桃| 欧美日韩国产在线人| 亚洲永久精品ww47国产| 中文字幕人成乱码熟女免费| 国产一级二级在线观看| 久久综合婷婷| 国产黑丝视频在线观看| 国产18在线播放| 亚洲欧美国产五月天综合| 国产97视频在线观看| 久草视频一区| 国产美女人喷水在线观看| 午夜成人在线视频|