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

?

基于FPGA和FLASH的多路數(shù)據(jù)存儲(chǔ)技術(shù)

2020-07-23 06:27吳嘉偉魏志強(qiáng)張會(huì)新
現(xiàn)代電子技術(shù) 2020年4期

吳嘉偉 魏志強(qiáng) 張會(huì)新

摘? 要: 針對多路數(shù)據(jù)存儲(chǔ)中所采集數(shù)據(jù)傳輸與存儲(chǔ)速率不匹配的問題,提出一種基于FPGA和FLASH的多路數(shù)據(jù)存儲(chǔ)技術(shù)。FPGA芯片可以通過RS 422串并轉(zhuǎn)換模塊將輸入的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)存入第一級數(shù)據(jù)緩存,主控模塊對其重新編幀后存入第二級數(shù)據(jù)緩存中,最后在FLASH控制模塊作用下把數(shù)據(jù)存入FLASH存儲(chǔ)器中。經(jīng)測試,從FLASH存儲(chǔ)器中讀取的數(shù)據(jù)正確,該系統(tǒng)工作可靠。

關(guān)鍵詞: 多路數(shù)據(jù)存儲(chǔ); FPGA; FLASH; 串并轉(zhuǎn)換; 數(shù)據(jù)緩存; 數(shù)據(jù)重新編幀

中圖分類號(hào): TN919?34? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 1004?373X(2020)04?0034?04

Multi?channel data storage technology based on FPGA and Flash

WU Jiawei1,2, WEI Zhiqiang3, ZHANG Huixin1,2

(1. Key Laboratory of Electronic Measurement Technology, North University of China, Taiyuan 030051, China;

2. MOE Key Laboratory of Instrumentation Science & Dynamic Measurement, North University of China, Taiyuan 030051, China;

3. Beijing Institute of Aerospace Metrology and Testing Technology, Beijing 100076, China)

Abstract: A multi?channel data storage technology based on FPGA and Flash is proposed to improve the mismatch between the collected data transmission rate and its storage rate in multi?channel data storage. The FPGA chip is adopted to convert the inputted serial data into the parallel data by means of the RS?422 serial?to?parallel conversion module and store them into the first?level data caching, refresh their frame and store them in the second?level data caching by means of the master control module, and store the data in Flash memory by means of the Flash control module. The testing results show that the data read from the flash memory is correct and the system is provided with reliable run.

Keywords: multi?channel data storage; FPGA; FLASH, serial?to?parallel conversion; data?caching; data frame refreshing

隨著我國工業(yè)、農(nóng)業(yè)、軍事、航天等事業(yè)的不斷發(fā)展,各種電子系統(tǒng)、自動(dòng)化裝置以及傳感器等也在不斷對其功能和結(jié)構(gòu)進(jìn)行改進(jìn),需要記錄和存儲(chǔ)的數(shù)據(jù)也越來越多,常常需要同時(shí)采集和存儲(chǔ)多個(gè)通道的數(shù)據(jù)。而所采集的數(shù)據(jù)傳輸速率不一定可以與FLASH存儲(chǔ)器的存儲(chǔ)速率相匹配。針對此,提出一種基于FPGA和FLASH的多路數(shù)據(jù)存儲(chǔ)技術(shù),利用FPGA內(nèi)部的RAM構(gòu)造兩級數(shù)據(jù)緩存,有效解決了該問題。

1? 整體方案

系統(tǒng)需要完成RS 422數(shù)據(jù)的串行?并行轉(zhuǎn)換、數(shù)據(jù)緩存和FLASH接口控制,這幾項(xiàng)工作可以由FPGA來完成,而不需要借助其他器件。整體方案的結(jié)構(gòu)框圖如圖1所示。

2? FPGA邏輯功能

FPGA的邏輯功能模塊主要由RS 422數(shù)據(jù)[1?2]串并轉(zhuǎn)換模塊(2 KB和8 KB的雙口RAM緩存)、FLASH接口控制模塊和主控模塊組成,其組成框圖如圖2所示。

串并轉(zhuǎn)換模塊可以實(shí)現(xiàn)UART[3]通信功能,將由1位起始位、8位數(shù)據(jù)、1位停止位組成的串行數(shù)據(jù)轉(zhuǎn)換成8位的并行數(shù)據(jù),再輸入到第一級的2 KB雙口RAM緩存中。主控模塊是整個(gè)FPGA邏輯功能模塊的核心,主要負(fù)責(zé)接收如系統(tǒng)復(fù)位、啟動(dòng)采集,以及對FLASH的擦除、讀取等控制命令,還能在采集狀態(tài)中判斷一級緩存中的數(shù)據(jù)量是否達(dá)到可以輸出的標(biāo)準(zhǔn),若達(dá)到,就將其中的數(shù)據(jù)讀取,按照一定的幀結(jié)構(gòu)編幀并輸入到下一級緩存。FLASH控制模塊的功能是向FLASH芯片發(fā)出命令來控制芯片的讀寫和擦除。本設(shè)計(jì)所運(yùn)用的兩級數(shù)據(jù)緩存,第一級為2 KB雙口RAM緩存,用來存放經(jīng)過串并轉(zhuǎn)換的輸入數(shù)據(jù),主控模塊對其數(shù)量進(jìn)行檢測,達(dá)到讀取標(biāo)準(zhǔn)后即將其讀取并重新編幀,寫入第二級的8 KB雙口RAM緩存中,在FLASH控制模塊的作用下寫入FLASH存儲(chǔ)器中。

在本文設(shè)計(jì)的系統(tǒng)中,輸入的串行數(shù)據(jù)速率為921.6 Kb/s,所使用的時(shí)鐘信號(hào)的頻率為36.864 MHz,將輸入數(shù)據(jù)按每504 B數(shù)據(jù)和8 B幀標(biāo)記為一組編為一幀,主控模塊判斷一級緩存中的數(shù)據(jù)量是否達(dá)到512 B,若達(dá)到,則從中讀取504 B數(shù)據(jù),重新編幀輸入第二級緩存。

3? 兩級數(shù)據(jù)緩存模塊設(shè)計(jì)

本設(shè)計(jì)使用的FPGA芯片是Xilinx公司的XC3S400,其中設(shè)計(jì)有RAMB16_SM_SN隨機(jī)存儲(chǔ)器[4],其中每塊RAM都有2 KB的數(shù)據(jù)存儲(chǔ)空間和256 B的校驗(yàn)位存儲(chǔ)空間,可以選擇適應(yīng)實(shí)際需求的地址和數(shù)據(jù)寬度。以下分別介紹內(nèi)部數(shù)據(jù)緩存模塊的兩級。

1) 2 KB雙口RAM緩存。本設(shè)計(jì)使用了型號(hào)為RAMB16_S9_S9的2 KB雙口RAM緩存,其原理圖如圖3所示,端口A和端口B具有相同的結(jié)構(gòu),操作方法也是一致的,兩個(gè)端口的相同地址對應(yīng)的是RAM的同一個(gè)存儲(chǔ)單元,且都可以進(jìn)行讀寫操作。將端口A和端口B分別設(shè)置為寫數(shù)據(jù)端口和讀數(shù)據(jù)端口。ENA是讀寫、復(fù)位使能信號(hào),為低電平時(shí),數(shù)據(jù)無法寫入RAM,輸出也不會(huì)變化,所以必須使ENA為高電平才能進(jìn)行讀寫操作。當(dāng)SSRA為低電平,WEA(寫使能)為高電平時(shí),在時(shí)鐘信號(hào)上升沿,數(shù)據(jù)由DIA端口寫入由ADDRA指示的存儲(chǔ)單元;而當(dāng)SSRA與WEA均為低電平時(shí),在時(shí)鐘信號(hào)上升沿,ADDRA指示單元中的數(shù)據(jù)會(huì)由DOB端口輸出[5]。

2) 8 KB雙口RAM緩存。8 KB雙口RAM緩存的WEA(B),ENA(B),SSRA(B),CLKA(B)的接法可以參照8 KB雙口RAM緩存中相同管腳的接法,ADDRA(B),DIA(B)和DOA(B)的接法有所變化。將4塊RAMB16_S2_S2組合起來構(gòu)成8 KB雙口RAM緩存。將存入一級緩存的8位并行數(shù)據(jù)拆解成兩位一組分別存入4塊RAMB16_S2_S2中,4塊RAMB16_S2_S2共用地址線和控制信號(hào),工作狀態(tài)一致。當(dāng)輸出信號(hào)時(shí),將之前被拆分為4組兩位數(shù)據(jù)的8位并行數(shù)據(jù)重新組合,再輸出。8 KB雙口RAM緩存的組成框圖如圖4所示。

4? 主控模塊控制兩級緩存的邏輯

主控模塊讀取一級緩存中的數(shù)據(jù),重新編幀并存入二級緩存。重新編幀的數(shù)據(jù)以512 B為一幀,包括4 B的幀頭FDB18540、1 B的幀標(biāo)志(分別為00H,33H,66H,99H,CCH,F(xiàn)FH)、3 B的幀計(jì)數(shù)以及數(shù)據(jù)。幀頭在每一幀數(shù)據(jù)的最前面,用來指示一幀數(shù)據(jù)的開始,使數(shù)據(jù)更有條理便于查看;幀標(biāo)志的作用是對來自不同通道的數(shù)據(jù)進(jìn)行區(qū)分;一幀數(shù)據(jù)結(jié)束后幀計(jì)數(shù)就加一,幀計(jì)數(shù)可以用來統(tǒng)計(jì)數(shù)據(jù)的量,而且如果幀計(jì)數(shù)不是連續(xù)遞增的,就說明有數(shù)據(jù)丟失的情況出現(xiàn)。幀頭、幀標(biāo)志、幀計(jì)數(shù)共8 B,從一級緩存中讀取的數(shù)據(jù)有504 B。

主控模塊控制兩級緩存的工作流程圖如圖5所示。設(shè)備加電之后,直接往第二級緩存中寫入設(shè)定好的幀頭;主控模塊對第一級緩存中的數(shù)據(jù)量進(jìn)行輪詢,如果有完整的一幀,就依次將幀標(biāo)志、幀計(jì)數(shù)和第一級緩存中的數(shù)據(jù)寫入第二級。完成以上工作之后,幀計(jì)數(shù)加一。

5? FLASH控制模塊邏輯

FLASH控制模塊對FLASH存儲(chǔ)器發(fā)出指令,F(xiàn)LASH存儲(chǔ)器收到指令后執(zhí)行相應(yīng)的擦除、寫入、讀取操作[6]。擦除命令優(yōu)先級最高,其次為寫入命令,最后是讀取命令。本設(shè)計(jì)中擦除和寫入是按照順序進(jìn)行的。FLASH控制模塊的工作流程圖見圖6。

圖6? FLASH控制模塊工作流程圖

本設(shè)計(jì)選用型號(hào)為K9WBG08U1M的FLASH存儲(chǔ)器。該器件的擦除、寫入、讀取等一系列操作都是通過寫入相應(yīng)的命令來實(shí)現(xiàn)的[7],K9WBG08U1M只有一組8位的并行總線,配合鎖存信號(hào)ALE和CLE來決定輸入的是命令、地址,還是數(shù)據(jù),從而達(dá)到這8位總線的復(fù)用[8]。一片K9WBG08U1M有8 192個(gè)數(shù)據(jù)塊,每塊又包含64頁,每頁有4 096 B數(shù)據(jù)。

該芯片按塊擦除,按頁寫入和讀取。在擦除、寫入、讀取前首先要檢測無效塊[9],方法是:讀取每塊前兩頁的數(shù)據(jù),如果都為FF,就說明該塊有效,可以進(jìn)行操作;否則,該塊為無效塊,后續(xù)操作應(yīng)該跳過無效塊[10]。

5.1? 擦除操作

擦除FLASH的流程圖如圖7所示。

5.2? 寫入操作

寫入操作的流程圖如圖8所示。

5.3? 讀取操作

讀取操作的流程圖如圖9所示。

6? 測試結(jié)果

測試數(shù)據(jù)設(shè)置為步長為1的遞增數(shù),用上位機(jī)軟件讀取FLASH中的數(shù)據(jù),測試結(jié)果如圖10所示。

從圖10可以看出數(shù)據(jù)幀結(jié)構(gòu)與設(shè)定的編幀結(jié)構(gòu)一致,每幀數(shù)據(jù)都由4 B的幀頭、1 B的幀標(biāo)志、3 B的幀計(jì)數(shù)以及504 B數(shù)據(jù)組成(圖中只顯示了部分?jǐn)?shù)據(jù))。

7? 結(jié)? 語

本文提出一種基于FPGA和FLASH的多路數(shù)據(jù)存儲(chǔ)技術(shù),F(xiàn)PGA完成了對輸入數(shù)據(jù)的串并轉(zhuǎn)換、數(shù)據(jù)緩存和對FLASH存儲(chǔ)器的控制。測試結(jié)果表明,通過這種技術(shù),數(shù)據(jù)輸入速率和存儲(chǔ)速率不匹配的問題可以得到解決,能夠正常完成數(shù)據(jù)記錄工作,提高了系統(tǒng)可靠性。

參考文獻(xiàn)

[1] 張芹芹,葉冰.一種新型RS 422總線數(shù)據(jù)提取技術(shù)[J].中國科技信息,2018(2):26?27.

[2] 呂波,張涌,黃侃,等.基于FPGA的四口RAM設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2017(1):34?37.

[3] 賈亮,冀源.基于FPGA的串口通信控制器設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(22):33?35.

[4] 吳文杰,李利品,王杏卓,等.多道能譜儀ARM與FPGA高速數(shù)據(jù)并行通信設(shè)計(jì)[J].核電子學(xué)與探測技術(shù),2017,37(11):1151?1155.

[5] 趙倩,唐磊.一種基于NAND FLASH的多通道存儲(chǔ)系統(tǒng)編址方式研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2018,35(9):32?36.

[6] 代明清,邊慶,周嘯,等.基于NAND FLASH的高速大容量存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2018,14(13):208?210.

[7] 張惠臻,周炎,王成.基于 NAND FLASH的嵌入式大規(guī)模數(shù)據(jù)存儲(chǔ)機(jī)制[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2017,45(1):46?51.

[8] 高陽,王代華,王曉楠.存儲(chǔ)測試系統(tǒng)中FLASH的存儲(chǔ)可靠性技術(shù)研究[J].現(xiàn)代電子技術(shù),2017,40(18):131?134.

[9] 王美麗.FPGA中BRAM的設(shè)計(jì)[D].西安:西安電子科技大學(xué),2012.

[10] 邊大亮.基于閃存的雙通道圖像記錄器設(shè)計(jì)與實(shí)現(xiàn)[D].太原:中北大學(xué),2015.

[11] 童巍.散貨堆場地圖系統(tǒng)關(guān)鍵技術(shù)的研究和實(shí)現(xiàn)[D].上海:上海交通大學(xué),2017.