秦 麗,江旭東*,李錦明
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051;2.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
基于AVR單片機(jī)+FPGA的U盤記錄器設(shè)計(jì)*
秦麗1,2,江旭東1,2*,李錦明1,2
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051;2.中北大學(xué)電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,太原030051)
為了滿足某民航導(dǎo)航系統(tǒng)中高速海量數(shù)據(jù)的存儲(chǔ)要求,提出了一種基于AVR單片機(jī)和FPGA結(jié)合控制的U盤記錄器設(shè)計(jì)方案。設(shè)計(jì)中以AVR單片機(jī)控制CH376讀寫U盤數(shù)據(jù)為核心,并利用FPGA控制大容量FLASH作為高速數(shù)據(jù)的緩存介質(zhì),解決了單片機(jī)緩存資源匱乏而造成的數(shù)據(jù)存儲(chǔ)不可靠的問題。同時(shí)設(shè)計(jì)了專門的掉電檢測(cè)電路,在掉電瞬間保存FLASH斷點(diǎn)地址,實(shí)現(xiàn)了系統(tǒng)再上電的續(xù)存功能。經(jīng)過多次測(cè)試與實(shí)驗(yàn)表明,系統(tǒng)性能表現(xiàn)優(yōu)良,工作穩(wěn)定可靠,能夠滿足實(shí)際工程應(yīng)用需求,并已成功應(yīng)用與某民航飛行數(shù)據(jù)記錄系統(tǒng)中。
AVR單片機(jī);FPGA;U盤記錄器;掉電檢測(cè)
在航天航空技術(shù)的飛速發(fā)展的今天,各類航空電子系統(tǒng)的集成度、復(fù)雜度不斷提高,正向著結(jié)構(gòu)多元化、設(shè)備智能化、數(shù)據(jù)高速海量化發(fā)展,尤其在GPS導(dǎo)航系統(tǒng)廣泛應(yīng)用于航空航天領(lǐng)域的今天,可靠地記錄各系統(tǒng)的導(dǎo)航數(shù)據(jù),對(duì)研究和探索這些先進(jìn)的技術(shù)有著重要的意義[1]。因此,對(duì)于數(shù)據(jù)存儲(chǔ)設(shè)備的存儲(chǔ)速度、容量、可靠性、便攜性等的要求也越來越高。而隨著USB接口技術(shù)的不斷發(fā)展,U盤存儲(chǔ)速度和存儲(chǔ)容量也不斷提高,因而基于U盤的存儲(chǔ)設(shè)備有著廣泛的應(yīng)用前景。
針對(duì)民航飛機(jī)上的兩路高速GPS導(dǎo)航數(shù)據(jù)的存儲(chǔ),提出了一種基于AVR單片機(jī)和FPGA結(jié)合控制的U盤記錄器設(shè)計(jì)方案。與傳統(tǒng)存儲(chǔ)設(shè)備相比,該記錄器以U盤為存儲(chǔ)介質(zhì),使存儲(chǔ)更方便;引入FPGA控制FLASH作為大容量緩存介質(zhì),使存儲(chǔ)更可靠;另外,設(shè)計(jì)了掉電檢測(cè)電路,實(shí)現(xiàn)了存儲(chǔ)器的續(xù)存功能。
U盤記錄器系統(tǒng)主要由FPGA數(shù)據(jù)采編及緩存單元、AVR單片機(jī)控制單元、U盤接口模塊、掉電檢測(cè)及復(fù)位電路組成。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)組成框圖
當(dāng)系統(tǒng)工作時(shí),通過422總線接口采集波特率達(dá)到460 800 bit/s的兩路高速GPS導(dǎo)航串行數(shù)據(jù)到FPGA,對(duì)兩路數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換及編幀處理,并通過仲裁后先后寫入寫FIFO中,然后在FPGA控制下將數(shù)據(jù)寫入作為緩存的大容量FLASH中。與此同時(shí),AVR單片機(jī)在檢測(cè)到U盤設(shè)備準(zhǔn)備就緒后,發(fā)出讀FLASH緩存命令給FPGA,將緩存的數(shù)據(jù)讀出到讀FIFO,然后單片機(jī)接收來自FPGA的數(shù)據(jù),并控制CH376將數(shù)據(jù)以扇區(qū)的形式寫入U(xiǎn)盤。FLASH讀寫控制模塊均衡FLASH的讀寫操作,使讀寫順序進(jìn)行。
2.1大容量緩存設(shè)計(jì)
當(dāng)僅采用單片機(jī)控制U盤的讀寫時(shí),單片機(jī)的數(shù)據(jù)處理速度低,內(nèi)部資源匱乏,難以滿足高速數(shù)據(jù)處理,而且會(huì)造成數(shù)據(jù)的丟失等問題,為了彌補(bǔ)單片機(jī)資源不足帶來的問題,可添加FPGA并利用其內(nèi)部FIFO作為數(shù)據(jù)緩存,但當(dāng)長(zhǎng)時(shí)間采集數(shù)據(jù)時(shí),F(xiàn)IFO資源仍然無法滿足數(shù)據(jù)的可靠性存儲(chǔ)。因此設(shè)計(jì)了以FPGA控制大容量FLASH作為數(shù)據(jù)的大容量緩存器的方案。系統(tǒng)設(shè)計(jì)的大容量緩存器如圖2所示。
圖2 大容量緩存器設(shè)計(jì)
設(shè)計(jì)中系統(tǒng)選用了 Spartan-3E系列的XC3S500E芯片作為緩存器的控制芯片,該芯片具有資源豐富、高性能、低功耗等特點(diǎn)[2]。且內(nèi)部雙端口RAM容量達(dá)到360 kbit,可以添加一些控制模塊,用來構(gòu)建高速異步FIFO,為FLASH數(shù)據(jù)的讀寫提供足夠的緩存沖空間。另外,該芯片的I/O口兼容多種電平標(biāo)準(zhǔn),有利于與單片機(jī)進(jìn)行連接通信。大容量非易失性FLASH選用了Samsung公司的K9LBG08U0M,其容量達(dá)到4 Gbyte,和U盤的存儲(chǔ)容量大小相當(dāng),經(jīng)驗(yàn)證,保證數(shù)據(jù)不溢出緩存時(shí)間超過40 h,因此能夠滿足海量數(shù)據(jù)長(zhǎng)時(shí)間緩存。
2.2AVR單片機(jī)控制CH376設(shè)計(jì)
單片機(jī)一方面與FPGA構(gòu)成的緩存部分進(jìn)行通信,另一方面又控制U盤的讀寫操作,需要以較快的速度處理大量數(shù)據(jù),因此對(duì)單片機(jī)的性能要求較高。普通的51單片機(jī)開發(fā)簡(jiǎn)單,但其處理數(shù)據(jù)速低、內(nèi)部資源匱乏,顯然不能滿足設(shè)計(jì)需要。而像ARM、DSP等性能優(yōu)越的處理器,數(shù)據(jù)處理能力強(qiáng),但開發(fā)難度和開發(fā)成本較高。
系統(tǒng)選用了ATmega128(AVR單片機(jī))作為U盤讀寫的主控芯片。該單片機(jī)為8位微處理器,具有128 kbyte的系統(tǒng)內(nèi)可編程FLASH和4 kbyte的片內(nèi)RAM,其先進(jìn)的指令集以及單周期執(zhí)行指令,使數(shù)據(jù)吞吐率達(dá)到1 MIPS/MHz[3]。其與FPGA和CH376進(jìn)行通信和數(shù)據(jù)傳輸都為8 bit并行方式。CH376是U盤文件管理控制芯片,其兼容USB2.0,支持12 Mbit/s全速USB通信,內(nèi)置了FAT32文件系統(tǒng)的管理固件,能夠?qū)崿F(xiàn)對(duì)U盤的FAT格式讀寫訪問。在硬件連接方面,支持2 Mbyte的8 bit被動(dòng)并行接口,能夠直接連接到單片機(jī)等處理器的數(shù)據(jù)總線上[4]。
CH376的硬件連接如圖3所示,TXD接地,其余引腳懸空,配置CH376為8 bit被動(dòng)并行接口,與單片機(jī)的PA口連接。控制引腳RD#、WR#、A0及PCS分別與單片機(jī)的讀選通引腳、寫選通引腳、PC4、PC7連接,實(shí)現(xiàn) 8 bit并口通信控制連接。ACT#引腳串接發(fā)光二級(jí)管,用于指示U盤的連接狀態(tài)。UD+和UD-引腳是USB信號(hào)線,主機(jī)方式下直接與U盤插座連接。
2.3掉電檢測(cè)電路及復(fù)位電路設(shè)計(jì)
實(shí)際應(yīng)用中系統(tǒng)會(huì)遇到電壓瞬間欠壓或掉電的問題,這會(huì)導(dǎo)致系統(tǒng)程序跑飛而不能繼續(xù)工作,甚至造成大量數(shù)據(jù)的丟失。由于儲(chǔ)能元件的存在,系統(tǒng)在欠壓或掉電時(shí),并不是立即停止工作,因此,系統(tǒng)設(shè)計(jì)中可以添加必要的掉電檢測(cè)電路,對(duì)系統(tǒng)的電源電壓進(jìn)行監(jiān)測(cè),并及時(shí)反饋系統(tǒng)的掉電信息,在掉電發(fā)生時(shí)快速保護(hù)FPGA及單片機(jī)程序和相關(guān)的數(shù)據(jù)[5]。
圖3CH376硬件連接圖
設(shè)計(jì)中選用MAX709對(duì)電源電壓進(jìn)行檢測(cè),其能夠在加電、掉電以及降壓惰況下提供復(fù)位信號(hào)。為充分利用資源,系統(tǒng)的復(fù)位信號(hào)也將由MAX709產(chǎn)生。MAX709掉電檢測(cè)電路如圖 4所示。
圖4 掉電檢測(cè)電路及復(fù)位電路設(shè)計(jì)
INVCC為電源電壓輸入,PD_RST為掉電反饋信號(hào),MCU_RST為初始復(fù)位信號(hào)。當(dāng)INVCC輸入低于閾值電壓時(shí),PD_RST產(chǎn)生負(fù)跳變,F(xiàn)PGA檢測(cè)到該信號(hào)為低電平時(shí),停止當(dāng)前正在處理的工作,轉(zhuǎn)入斷點(diǎn)保護(hù)程序,保證電源恢復(fù)或再上電后能繼續(xù)從斷點(diǎn)處讀寫數(shù)據(jù)。斷點(diǎn)保護(hù)的實(shí)質(zhì)是存儲(chǔ)當(dāng)前的讀寫地址,系統(tǒng)再上電后能讀取該地址并轉(zhuǎn)入該地址繼續(xù)執(zhí)行斷電前的工作。
系統(tǒng)軟件設(shè)計(jì)主要包括FPGA控制模塊和ATM128單片機(jī)控制模塊。FPGA控制模塊主要完成數(shù)據(jù)的串并轉(zhuǎn)換、編幀處理、FLASH數(shù)據(jù)讀寫控制以及斷點(diǎn)保護(hù)等功能,采用自下而上模塊化的思想進(jìn)行軟件程序設(shè)計(jì)。ATM128單片機(jī)模塊主要是控制CH376對(duì)U盤進(jìn)行讀寫操作,以及完成與FPGA的通信和數(shù)據(jù)傳輸功能。
3.1FPGA控制模塊設(shè)計(jì)
3.1.1數(shù)據(jù)接收模塊設(shè)計(jì)
FPGA前端接收模塊主要完成數(shù)據(jù)的接收、編幀及仲裁。數(shù)據(jù)接收模塊如圖5所示。Uart_Rec為串并轉(zhuǎn)換模塊,fifo8k為寫FIFO,signalsel為數(shù)據(jù)仲裁模塊。
圖5 數(shù)據(jù)接收模塊
系統(tǒng)時(shí)鐘為29.419 2 MHz,而兩路串行數(shù)據(jù)的波特率為460800bit/s,為保證數(shù)據(jù)可靠接收,設(shè)計(jì)以8倍于串行數(shù)據(jù)波特率的接收時(shí)鐘Rec_Clk對(duì)數(shù)據(jù)進(jìn)行采樣,即需要對(duì)主頻時(shí)鐘Main_Clk進(jìn)行8分頻。根據(jù)422數(shù)據(jù)的起始位特性,當(dāng)檢測(cè)到下降沿時(shí),每8個(gè)周期采樣一位數(shù)據(jù),連續(xù)采集8 bit數(shù)據(jù)并行寫入寫FIFO中,寫FIFO容量為8 kbyte。兩路數(shù)據(jù)采集互不影響,但兩路數(shù)據(jù)需要存入同一FLASH中,因此需要對(duì)兩路數(shù)據(jù)進(jìn)行仲裁。Signalsel接收并判斷兩個(gè)FIFO的半滿信號(hào)(f1、f2),依據(jù)兩個(gè)半滿信號(hào)的先后順序來決定哪路數(shù)據(jù)寫入FLASH中。另外,為了利于上位機(jī)對(duì)兩路數(shù)據(jù)的分?jǐn)?shù)處理,對(duì)存入FIFO中的數(shù)據(jù)進(jìn)行編幀處理,一幀數(shù)據(jù)由4 089 byte的數(shù)據(jù)、4 byte的幀標(biāo)志和3 byte的幀計(jì)數(shù)構(gòu)成。具體數(shù)據(jù)幀格式如表1所示。
表1 數(shù)據(jù)幀格式
3.1.2斷點(diǎn)保護(hù)程序設(shè)計(jì)
斷點(diǎn)保護(hù)是為防止系統(tǒng)因電源欠壓或掉電而造成的程序跑飛、數(shù)據(jù)丟失等問題而采取的一種保護(hù)措施。利用FPGA編程對(duì)FLASH讀寫地址進(jìn)行保護(hù),在電源電壓恢復(fù)后能夠繼續(xù)從斷點(diǎn)地址處繼續(xù)讀寫數(shù)據(jù)。斷點(diǎn)地址包括寫地址和讀地址,系統(tǒng)設(shè)計(jì)中將FLASH的第1頁、第2頁分別存儲(chǔ)寫斷點(diǎn)地址和讀斷點(diǎn)地址。而FLASH的擦除操作是以塊為單位的,因此在擦除操作時(shí)跳過第1塊,將第1塊用來存儲(chǔ)斷點(diǎn)地址。斷點(diǎn)保護(hù)程序設(shè)計(jì)流程如圖6所示[6]。
圖6 斷點(diǎn)保護(hù)程序流程圖
3.2ATM128控制模塊設(shè)計(jì)
ATM128控制CH376實(shí)現(xiàn)U盤數(shù)據(jù)存儲(chǔ)的流程圖如圖7所示。系統(tǒng)上電后單片機(jī)復(fù)位,使系統(tǒng)進(jìn)入工作狀態(tài)。然后單片機(jī)發(fā)送硬件連接測(cè)試命令CMD_CHECK_EXIST(06H)給CH376,緊接著發(fā)送數(shù)據(jù)55 H,若硬件連接正常,CH376將返回?cái)?shù)據(jù)AAH,否則說明硬件連接不正常或單片機(jī)不工作。CH376連接正常后,初始化CH376,先發(fā)送模式設(shè)置命令CMD_SET_USB_MODE(15H)之后再發(fā)送模式代碼06H,設(shè)置其工作模式為USB主機(jī)方式,返回模式設(shè)置狀態(tài)后,發(fā)送CMD_DISK_CONNECT(30H)命令檢測(cè)U盤是否連接,讀取返回中斷狀態(tài),若為USB_INT_CONNECT(15H)則U盤已連接成功,否則繼續(xù)檢測(cè)U盤連接狀態(tài)。若U盤連接成功,發(fā)送命令CMD_DISK_MOUNT(31H)對(duì)其進(jìn)行初始化,讀取中斷狀態(tài),若為 USB_INT_SUCESS(14H)則初始化完成。初始化成功后,將單片機(jī)RAM中的數(shù)據(jù)以扇區(qū)方式寫入U(xiǎn)盤文件,數(shù)據(jù)讀取完畢后結(jié)束操作[7]。
圖7 U盤數(shù)據(jù)存儲(chǔ)操作流程圖
為了驗(yàn)證系統(tǒng)的可靠性和穩(wěn)定性,設(shè)計(jì)了實(shí)驗(yàn)如下:設(shè)計(jì)一塊以FPGA為控制核心的信號(hào)源板,其可以模擬產(chǎn)生兩路波特率為460 800 bit/s的422高速串行數(shù)據(jù),數(shù)據(jù)可以設(shè)定為任意波形。為了便于分析結(jié)果,兩路數(shù)據(jù)設(shè)定為不同波形,其中第1路設(shè)為遞增的鋸齒波,第2路設(shè)為遞減的鋸齒波。
待數(shù)據(jù)存儲(chǔ)結(jié)束后,計(jì)算機(jī)讀取U盤中的數(shù)據(jù),并由上位機(jī)軟件對(duì)數(shù)據(jù)文件進(jìn)行分析。由于每個(gè)文件中的數(shù)據(jù)既包括第1路數(shù)據(jù),又包括第2路數(shù)據(jù),不能直觀的判斷數(shù)據(jù)的正確性,因此有必要將文件按照固定的幀格式進(jìn)行分?jǐn)?shù)處理,每個(gè)文件分?jǐn)?shù)后產(chǎn)生兩個(gè)子文件,分別命名為“m_POS_n第1路.NAV”和“m_POS_n第2路.NAV”,再分別對(duì)兩個(gè)子文件進(jìn)行波形顯示,圖8(a)為第1路數(shù)據(jù)波形圖,圖8(b)所示為第2路數(shù)據(jù)波形圖。
圖8 數(shù)據(jù)波形圖
從圖8可以看出波形穩(wěn)定,并無明顯丟數(shù)現(xiàn)象。將讀出的數(shù)據(jù)在UltraEdit中顯示,數(shù)據(jù)也沒有出現(xiàn)錯(cuò)誤并且?guī)袷秸_,另外,經(jīng)測(cè)試系統(tǒng)極限處理時(shí)間可以達(dá)到40 h,能夠滿足海量數(shù)據(jù)高速長(zhǎng)時(shí)間存儲(chǔ)。
該系統(tǒng)針對(duì)民航上的兩路422高速串行數(shù)據(jù),以AVR單片機(jī)控制CH376進(jìn)行U盤讀寫操作為基礎(chǔ),輔以FPGA控制FLASH存儲(chǔ)器作為數(shù)據(jù)“緩存”模塊,解決了由于緩存資源匱乏而造成的數(shù)據(jù)存儲(chǔ)不可靠的問題,實(shí)現(xiàn)了高速大容量數(shù)據(jù)的可靠性存儲(chǔ)。測(cè)試結(jié)果表明,系統(tǒng)總體性能優(yōu)良,工作穩(wěn)定可靠,能夠滿足實(shí)際工程應(yīng)用需求。另外,該系統(tǒng)還具有體積小、擴(kuò)展性強(qiáng)、成本低和便于攜帶等優(yōu)點(diǎn)。
[1]張乃燃,侯立剛,吳武臣.一種用于視頻顯示的高性能存儲(chǔ)器系統(tǒng)[J].電子器件,2008,31(1):268-272.
[2]劉智勇,陳鵬飛,宿磊,等.基于STM32芯片的U盤/SD卡文件傳輸技術(shù)研究[J].現(xiàn)代電子技術(shù),2014,37(18):107-109.
[3]陳瓊,李秀平,楊杰.一種基于AVRmage32的無線電能數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子器件,2014,37(5):1004-1008.
[4]溫田毅.基于GPRS無線數(shù)據(jù)傳輸及U盤海量存儲(chǔ)系統(tǒng)的研究與設(shè)計(jì)[D].東北石油大學(xué),2012.
[5]周之麗,孟令軍,文波,等.基于USB3.0的LVDS高速圖像記錄系統(tǒng)的設(shè)計(jì)[J].電子器件,2015,38(4):812-816.
[6]菅少坤,張會(huì)新.具有斷電續(xù)存功能固態(tài)存儲(chǔ)器的設(shè)計(jì)[J].電子器件,2015,38(3):592~596.
[7]劉佳.基于FPGA的U盤讀寫器的研制與應(yīng)用[D].西北農(nóng)林科技大學(xué),2012.
[8]張凱華,任勇峰.基于FPGA的高速數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電子器件,2015,38(1):135-139.
秦麗(1963-),漢族,博士,教授,博士生導(dǎo)師,主要從事動(dòng)態(tài)測(cè)試技術(shù)、微波技術(shù)、慣性測(cè)量等方面的研究;
江旭東(1988-),男,漢族,在讀碩士,主要從事存儲(chǔ)測(cè)試方向的研究,jiangxudong09@163.com。
Design of U Disk Recorder Based on AVR MCU and FPGA*
QIN Li1,2,JIANG Xudong1,2*,LI Jinming1,2
(1.National Key Laboratory for Electronic Measurement Technology,Taiyuan 030051,China;2.Key Laboratory of Instrumentation Science&Dynamic Measurement of Ministry of Education,North University of China,Taiyuan 030051,China)
In order to meet the demand for high speed and mass data in civil aviation navigation system,a design scheme of U disc recorder is proposed based on AVR MCU and FPGA.In design,taking AVR MCU as the core,it controls CH376 read and write U disk data.And using the large-capacity FLASH controled by FPGA as a cache medium for the high speed data to solve the problem of data storage,the method is not reliable caused by the lack of cache resources of MCU.At the same time,by designing a special brown-out detection circuit,and reserving the FLASH breakpoint address at the moment,and the function of the system can realize to continue and store when power is put on again.After many tests and experiments show that the system has good performance,stable and reliable,and can meet the needs of practical engineering application,and has been successfully applied to a civil aviation flight data recording system.
AVR MCU;FPGA;U disk recorder;brown-out detection
TN919
A
1005-9490(2016)05-1232-05
項(xiàng)目來源:山西省自然科學(xué)基金項(xiàng)目(2014011021-5)
2015-11-16修改日期:2015-12-11
EEACC:7250G10.3969/j.issn.1005-9490.2016.05.041