国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的SPI Flash配置存儲器復用的實現(xiàn)

2018-01-05 18:08:44陳燕文莫璧銘
測試技術(shù)學報 2017年6期
關(guān)鍵詞:存儲空間扇區(qū)存儲器

陳燕文, 韓 焱, 徐 磊, 莫璧銘

(中北大學 信息探測與處理技術(shù)山西省重點實驗室, 山西 太原 030051)

基于FPGA的SPIFlash配置存儲器復用的實現(xiàn)

陳燕文, 韓 焱, 徐 磊, 莫璧銘

(中北大學 信息探測與處理技術(shù)山西省重點實驗室, 山西 太原 030051)

FPGA是一種基于SRAM技術(shù)制造的可編程器件, 內(nèi)部數(shù)據(jù)具有掉電即失的特點. 因此, 配置電路是FPGA系統(tǒng)中必不可少的部分. 本文提出一種復用FPGA配置存儲器的方法:配置存儲器既能滿足FPGA系統(tǒng)的配置需要, 又可以作為通用存儲器滿足用戶存儲數(shù)據(jù)的需求, 提高了配置存儲器的利用率, 使得采集存儲系統(tǒng)小型化、 集成化成為可能. 制定了SPI Flash復用的方案, 分析了復用配置存儲器的可行性. 并且編寫基于FPGA的SPI接口控制程序, 實現(xiàn)對配置存儲器的擦除、 讀寫等操作. 利用Modelsim, Chipscope等調(diào)試工具驗證了控制程序的可靠性.

FPGA; 配置存儲器復用; SPI接口控制; Chipscope

FPGA(現(xiàn)場可編程門陣列)是在PAL, GAL, CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物[1]. 目前主流的FPGA制造工藝均是基于SRAM技術(shù), 這種技術(shù)使得FPGA能夠?qū)崿F(xiàn)較高的工作頻率, 但是也決定了FPGA中數(shù)據(jù)掉電即失的特點[2-3]. 因此, 配置電路是FPGA系統(tǒng)中必不可少的一部分. 隨著存儲技術(shù)的快速發(fā)展, 存儲顆粒密度越來越高, 儲存器向大容量、 小體積方向發(fā)展[4-7]. FPGA的配置存儲器往往在滿足存儲自身配置程序的同時, 仍富余較大的存儲空間. 本文提出一種復用FPGA配置存儲器的方案, 提高了存儲器的利用率.

本系統(tǒng)采用Xilinx公司的Spartan6-LX16作為主控芯片、 華邦公司的W25Q128BV作為數(shù)據(jù)存儲和配置芯片、 MAX1308作為數(shù)據(jù)轉(zhuǎn)換模塊, 設(shè)計構(gòu)建了存儲采集系統(tǒng). 制定了SPI Flash配置芯片的復用方案, 編寫了存儲器控制程序, 并且對程序功能和復用方案進行了驗證, 最終實現(xiàn)了對配置芯片的復用.

1 系統(tǒng)設(shè)計

圖 1 系統(tǒng)框圖Fig.1 System diagram

系統(tǒng)組成如圖 1 所示, 本系統(tǒng)中使用的MAX1308模數(shù)轉(zhuǎn)換芯片擁有8個采樣通道、 最高采樣率為1 MPS. MAX1308為并行數(shù)據(jù)傳輸, 采集一次產(chǎn)生的12 bit數(shù)據(jù)被同時輸出至數(shù)據(jù)端口. FIFO1與FIFO2是位寬為8、 深度為1 024的數(shù)據(jù)緩沖器. 在采集完成之后, 數(shù)據(jù)的低8 b被寫入數(shù)據(jù)FIFO1, 通道標識號(4 bit)和數(shù)據(jù)的高4 b被寫入數(shù)據(jù)FIFO2. 在SPI讀寫控制器的協(xié)調(diào)下, 數(shù)據(jù)被有序地從FIFO中讀出并寫入SPI FLASH. 系統(tǒng)中的SPI FLASH為復用存儲器, 既能滿足FPGA系統(tǒng)的配置需要, 又可以作為通用存儲器滿足用戶存儲數(shù)據(jù)的需求.

2 復用方案設(shè)計

2.1 FPGA配置方式

按照主從關(guān)系劃分, FPGA中常用的配置方式有主動配置、 被動配置和JTAG配置[8], 按照數(shù)據(jù)總線的位寬又可分為串行配置和并行配置[9-10]. 本文中使用SPI Flash作為程序存儲器的配置方案是主動串行配置方式的一種. Xilinx公司Spartan6系列芯片程序加載過程如圖 2 所示.

圖 2 程序加載過程Fig.2 Program loading process

Spartan 6系列FPGA程序加載方式可以通過模式控制引腳M[1∶0]進行選擇. 在采用SPI主動串行配置方式時, M[1∶0]應(yīng)被設(shè)置為10. 在FPGA系統(tǒng)上電之后, 外部向FPGA的PROGRAM_B引腳送入一個寬度不小于500ns的低脈沖, 清除配置空間, 重啟配置過程[11]. 接下來初始化標志位INT_B拉低并對模式控制引腳進行采樣, 當初始化完成之后INT_B拉高. 隨后FPGA通過CCLK引腳將時鐘送入存儲控制器, 并且向FLASH發(fā)送讀命令及數(shù)據(jù)起始地址[12]. 在接受到讀命令和地址信息之后, FLASH將配置信息有序地放入DOUT引腳供FPGA讀取[13].

2.2 SPI FLASH的復用

在完成配置程序的加載之后, CCLK, DIN, DOUT, CSO等引腳恢復成為普通的用戶引腳, 這使得在不改變硬件連接的前提下, 利用配置FLASH余下的存儲空間成為可能.

圖 3 配置空間與用戶通用存儲空間分配Fig.3 Allocation of space and user general storage space allocation

對于確定型號的FPGA來講, 配置文件所需要的儲存空間是一定的. 廠家會在芯片手冊中對配置文件的大小進行說明. 以Spartan 6 系列中LX16型芯片為例, 配置的bit文件的大小為3 731 264 bit, 約為456 KB. 為了滿足第三方存儲器對數(shù)據(jù)格式的要求, 開發(fā)工具還需要將bit文件轉(zhuǎn)換為MCS文件. 在轉(zhuǎn)換過程中, 加入了校驗及地址信息, 因此轉(zhuǎn)換之后文件所占的空間變大, 轉(zhuǎn)換之后的文件大小為2 MB. 本課題中用到的W25Q128BV配置存儲器容量為16 MB, 按照配置程序在存儲器中的存放規(guī)則, 將前2 MB的空間作為程序的配置空間, 后14 MB作為用戶的通用存儲空間. 配置空間與通用存儲空間對應(yīng)地址關(guān)系如圖 3 所示.

3 SPI FLASH接口控制程序的實現(xiàn)

設(shè)計中使用的W25Q128BV型SPI FLASH存儲空間為128 Mbit, 由65 536頁組成. 頁是該Flash最基本的組成單元, 一頁的容量為256 Byte. 16頁組成一個扇區(qū)sector(4 KB), 8個扇區(qū)組成一塊block(32 KB). 該芯片具有先進的寫保護機制, 并且具有整體擦除和扇區(qū)擦除、 靈活的頁編程指令和寫保護功能.

3.1 FLASH讀寫操作

本節(jié)重點介紹頁編程操作、 數(shù)據(jù)讀取操作、 扇區(qū)擦除操作的過程. 本設(shè)計中供用戶存放數(shù)據(jù)的地址區(qū)間為200 000H-FFFFFFH, 因此存儲器的讀寫及擦除操作均是以200 000h為起始地址.

3.1.1 頁編程操作

在片選信號CS拉低之后, 外部向FLASH寫入頁編程令碼02H, 隨后寫入所要目標區(qū)域的地址. 地址的一般格式為一個標準的頁地址, 即數(shù)據(jù)位的低8 b全為‘0’. 當寫入地址的低8 b不為‘0’時, 若數(shù)據(jù)寫入時鐘周期數(shù)多于剩余的字節(jié)位數(shù), 則在完成從當前位置寫到結(jié)束位置之后重新回到開始位置進行數(shù)據(jù)寫入, 若數(shù)據(jù)寫入時鐘周期數(shù)小于或者等于剩余的字節(jié)位數(shù), 則在時鐘結(jié)束之后就停止數(shù)據(jù)的寫入.

在寫入地址之后, 向FLASH發(fā)送256B的數(shù)據(jù). 在數(shù)據(jù)編程期間BUSY信號為1. 在FLASH完成數(shù)據(jù)編程后, 狀態(tài)寄存器WEL位轉(zhuǎn)換為‘0’. 若要進行下一頁數(shù)據(jù)的編程, 需要在BUSY信號拉低之后向FLASH寫入寫使能命令將WEL位置至1. 圖5是讀操作程序的仿真圖形. 對比圖 4 與圖 5 可以發(fā)現(xiàn), 二者時序操作一致.

圖 4 頁編程操作時序Fig.4 Page programming sequence

圖 5 頁編程仿真波形Fig.5 Programming simulation waveform

3.1.2 數(shù)據(jù)讀取操作

該FLASH支持數(shù)據(jù)單字節(jié)讀出和多字節(jié)讀出. 在片選信號CS拉低之后, 向FLASH寫入數(shù)據(jù)讀取命令碼03H, 然后寫入所要讀取區(qū)域的地址. 在地址寫入之后, FLASH在下一個時鐘下降沿時將目標地址的數(shù)據(jù)加載到數(shù)據(jù)輸出端口. 若片選信號和時鐘信號一直有效, FLASH的地址會自動遞加并且將數(shù)據(jù)加載到數(shù)據(jù)輸出總線, 直到將FLASH中所有數(shù)據(jù)讀出. 設(shè)計中使用此種模式對SPI FLASH進行讀操作. 圖 7 是Verilog程序仿真圖.

圖 6 讀操作時序圖Fig.6 Reading operation sequence diagram

圖 7 讀操作仿真圖Fig.7 Read operation simulation

3.1.3 擦除操作

擦除操作可以將存儲器中的存儲字節(jié)由‘0’置為‘1’, 而寫數(shù)操作只能將‘1’置為‘0’. 因此, 擦除操作是數(shù)據(jù)寫入FLASH之前必須要進行的步驟. W25Q128BV型FLASH支持3種擦除方式: 扇區(qū)擦除、 塊擦除和雙塊擦除. 本設(shè)計中使用扇區(qū)擦除方式對FLASH進行格式化.

圖 8 扇區(qū)擦除操作時序Fig.8 Sector erase operation sequence

由圖 8 可以看出, 在片選信號有效之后向FLASH中寫入擦除命令碼20 H. 隨后寫入所要擦除區(qū)域的地址即可. 數(shù)據(jù)擦除期間BUSY為1. 在擦除命令執(zhí)行之后, 狀態(tài)寄存器WEL位轉(zhuǎn)換為‘0’. 若要進行下一地址的擦除, 需要在BUSY信號拉低之后向FLASH寫入寫使能命令將狀態(tài)寄存器的WEL標志位至1. 圖 9 是程序仿真圖.

圖 9 擦除操作仿真圖Fig.9 Erase operation simulation diagram

3.2 SPI接口設(shè)計

該型FLASH支持3種SPI模式, 本設(shè)計中使用標準SPI模式. SPI的時鐘為25 MHz, 使用的是模式3, 即在不工作時時鐘線是低電平, 在時鐘下降沿時將數(shù)據(jù)鎖存進設(shè)備. 為了便于程序的編寫, 現(xiàn)對命令碼進行分類編碼, 如表 1 所示.

根據(jù)SPI的基本控制時序及FLASH對于時序的要求, 編寫控制程序. 控制狀態(tài)機如圖 10 所示.

表 1 命令碼編碼

圖 10 SPI控制狀態(tài)機Fig.10 SPI control status machine

當前狀態(tài)為IDLE時, 不斷查詢外部是否有命令碼寫入. 若有命令碼寫入跳轉(zhuǎn)至cmd_send狀態(tài). cmd_send狀態(tài)時, 首先讓spi的片選及時鐘使能信號有效, 并且完成命令碼的接收. 然后根據(jù)接收命令碼的類型判斷狀態(tài)機下一步的轉(zhuǎn)向. 如果接收到命令碼為寫使能或?qū)憻o效命令則直接轉(zhuǎn)到完成狀態(tài)fini_done; 如果是讀狀態(tài)命令跳轉(zhuǎn)則到讀等待狀態(tài), 并且把所要讀的數(shù)據(jù)個數(shù)置為1(讀一個字節(jié))、 位數(shù)置為7(8 b); 若是為其它命令碼, 則轉(zhuǎn)至地址發(fā)送狀態(tài)addr_send. 在地址發(fā)送完成之后, 再次對命令碼類型cmd_type進行判斷. 處于寫狀態(tài)writ_data時, FIFO控制器將數(shù)據(jù)從FIFO1和FIFO2中讀出并完成并串轉(zhuǎn)換, 在時鐘時加載至數(shù)據(jù)輸入總線. 在完成讀寫數(shù)之后, 轉(zhuǎn)向完成狀態(tài)fini_done. 處于完成狀態(tài)fini_done時, spi的片選及時鐘使能信號均轉(zhuǎn)成無效.

4 調(diào)試與分析

程序是在ISE14.2環(huán)境下編寫的, 結(jié)合自帶的嵌入式邏輯分析儀Chipscope進行在線調(diào)試分析. 調(diào)試時對系統(tǒng)輸入的模擬信號為峰值為5 V、 直流偏置為+2.5 V、 頻率為1 kHz的正弦波, 將AD的采樣率設(shè)置為400 KPS. 通過設(shè)置觸發(fā)條件抓取不同采集通道上的數(shù)據(jù). 圖 11, 圖 12 給出的是采集通道為1時的板級信號.

圖 11 板級信號Fig.11 Board level signal

圖 12 數(shù)據(jù)波形Fig.12 Data waveform

在寫入讀命令和地址(200000H), 測試時采集線連接flash_addr的高16 b, 因此顯示的是2000H)之后, SPI Flash在時鐘下降沿時將目標地址的數(shù)據(jù)加載至數(shù)據(jù)輸出端口. FPGA在上升沿時把數(shù)據(jù)鎖存進讀寄存器(mydata_o)并完成移位操作. 圖12是以波形形式顯示的讀寄存器中數(shù)據(jù). 對比模擬輸入與的數(shù)據(jù)輸出, 二者數(shù)據(jù)一致. 關(guān)閉系統(tǒng)電源之后, 重新給系統(tǒng)上電, FPGA將SPI Flash中的配置程序加載至片內(nèi). 此時程序同樣能夠?qū)崿F(xiàn)預(yù)設(shè)的功能, 說明用戶寫入的數(shù)據(jù)并未對配置程序產(chǎn)生影響, 驗證了復用方案的正確性.

5 結(jié) 論

本文設(shè)計了一種復用FPGA配置存儲器方案, 并且經(jīng)過仿真與在線調(diào)試驗證了復用方案的可行性. 此種方案使得FPGA的配置存儲器的存儲空間得到充分利用, 并且節(jié)省采集卡板的空間, 使得采集存儲系統(tǒng)小型化、 集成化成為可能. 此外, 本設(shè)計中采用的是模塊化設(shè)計, SPI控制程序可以作為一個模塊被例化進其他工程中, 因此具有很高的兼容性.

[1] 黃耀興. 現(xiàn)場可編程門陣列性能初探[J]. 硅谷, 2011(5): 193.

Huang Yaoxing. Preliminary performance of field programmable gate array [J]. Silicon Valley, 2011(5): 193. (in Chinese)

[2] 李騫, 汪學剛, 李漢釗. 基于3-DES算法的FPGA加密應(yīng)用[J]. 電子技術(shù)應(yīng)用, 2008, 34(1): 132-134.

Li Qian, Wang Xuegang, Li Hanzhao. Application of FPGA encryption based on 3-DES algorithm[J]. Application of Electronic Technology, 2008, 34(1): 132-134.(in Chinese)

[3] 李艷, 張東曉, 于芳. RTL綜合中FPGA片上RAM工藝映射[J]. 電子學報, 2016, 44(11): 2660-2667.

Li Yan, Zhang Dongxiao, Yu Fang. RTL synthesis, FPGA on chip RAM process mapping, Acta[J]. Acta Electronical Sinica, 2016, 44(11): 2660-2667.(in Chinese)

[4] 鄭文靜, 李明強, 舒繼武. Flash存儲技術(shù)[J]. 計算機研究與發(fā)展, 2010, 47(4): 716-726.

Zheng Wenjing, Li Mingqiang, Shu Jiwu. Flash storage technology[J]. Computer Research and Development, 2010, 47(4): 716-726. (in Chinese)

[5] Grupp L M, Caulfield A M, Coburn J, et al. Characterizing flash memory: anomalies, observations, and applications[C]. Ieee/acm International Symposium on Microarchitecture. IEEE, 2010: 24-33.

[6] 高劍, 郭士瑞, 蔣常斌. FLASH存儲器的測試方法[J]. 電子測量技術(shù), 2008, 31(7): 117-120.

Gao Jian, Guo Shirui, Jiang Changbin. Test methods for FLASH memory[J]. Electronic Measurement Technology, 2008, 31(7): 117-120. (in Chinese)

[7] Kang D, Jeong W, Kim C, et al. 256 Gb 3 b/Cell V-nand Flash Memory With 48 Stacked WL Layers[J]. IEEE Journal of Solid-State Circuits, 2017, 52(1): 210-217.

[8] 張立哲, 劉麗靜. 適應(yīng)遠程升級的FPGA配置方法[J]. 計算機與網(wǎng)絡(luò), 2011(14): 56-59.

Zhang Lizhe, Liu Lijing. FPGA configuration method for remote upgrade[J]. Computer and Network, 2011(14): 56-59. (in Chinese)

[9] Wirthlin M, Johnson E, Rollins N, et al. The reliability of FPGA circuit designs in the presence of radiation induced configuration upsets[C]. IEEE Symposium on Field-Programmable Custom Computing Machines. IEEE Computer Society, 2003: 133.

[10] 寧李譜, 楊賓峰, 苗青林. FPGA器件的配置方式研究[J]. 河南科技學院學報(自然科學版), 2008, 36(3): 109-110.

Ning Lipu, Yang Binfeng, Miao Qinglin. Study of configuration schemes of FPGAs[J]. Journal of Henan Institute of Science and Technology (Natural Science Edition), 2008, 36(3): 109-110. (in Chinese)

[11] 李飛飛, 蘇延川, 王鵬. 基于DSP的FPGA配置方法研究與實現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2011, 34(24): 60-62.

Li Feifei,Su Yanchuan,Wang Peng. Research and implementation of FPGA configuration with DSP[J]. Modern Electronics Technique, 2011, 34(24): 60-62. (in Chinese)

[12] Xie T T. A FPGA Configuration Method for Improving System Initial Efficiency[J]. Computer & Modernization, 2012, 203(7): 215-217.

[13] Gomez-Cornejo J, Zuloaga A, Villalta I, et al. A novel BRAM content accessing and processing method based on FPGA configuration bitstream[J]. Microprocessors & Microsystems, 2017, 49: 64-76.

ImplementationofMemoryMultiplexinginSPIFlashConfigurationBasedonFPGA

CHEN Yanwen, HAN Yan, XU Lei, MO Biming

(Key Laboratory of Information Detection and Processing Technology of Shanxi Province, North University of China, Taiyuan 030051, China)

FPGA is a programmable device based on SRAM technology, and the internal data in FPGA will be lost when the power fails. Therefore, the configuration circuit is an essential part of the FPGA system. This paper puts forward a method of multiplexing FPGA configuration memory: memory allocation can not only meet the needs of FPGA system configuration, but also be used as a universal memory data storage to meet needs of user. This method improves the utilization rate of the memory allocation, and makes it possible to make the acquisition storage system miniaturization and integration. Firstly, the scheme of SPI Flash reuse is worked out, and the feasibility of reusing configuration memory is analyzed. And the SPI interface control program based on FPGA is written to realize the erasure, reading and writing of configuration memory. The reliability of the control program is verified by using Modelsim, Chipscope and other debugging tools.

FPGA; the multiplexing of configuration memory; SPI interface control; Chipscope

1671-7449(2017)06-0491-07

2017-01-07

陳燕文(1994-), 男, 碩士生, 主要從事信息與通信工程、 智能信息處理等研究.

TN98

A

10.3969/j.issn.1671-7449.2017.06.005

猜你喜歡
存儲空間扇區(qū)存儲器
分階段調(diào)整增加扇區(qū)通行能力策略
南北橋(2022年2期)2022-05-31 04:28:07
基于多種群協(xié)同進化算法的數(shù)據(jù)并行聚類算法
靜態(tài)隨機存儲器在軌自檢算法
蘋果訂閱捆綁服務(wù)Apple One正式上線
綜藝報(2020年21期)2020-11-30 08:36:49
用好Windows 10保留的存儲空間
U盤故障排除經(jīng)驗談
基于貝葉斯估計的短時空域扇區(qū)交通流量預(yù)測
重建分區(qū)表與FAT32_DBR研究與實現(xiàn)
存儲器——安格爾(墨西哥)▲
基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
东城区| 阿拉尔市| 卢氏县| 五常市| 柘城县| 湖口县| 镇江市| 望奎县| 彭水| 四会市| 图们市| 曲周县| 都江堰市| 义乌市| 武威市| 南靖县| 城固县| 迁西县| 苍南县| 新丰县| 澄城县| 托里县| 涞源县| 和田县| 张北县| 正宁县| 土默特左旗| 凤台县| 廊坊市| 台东县| 麟游县| 普格县| 当阳市| 无为县| 庆阳市| 武隆县| 崇仁县| 萨迦县| 额尔古纳市| 尼勒克县| 绥棱县|