秦 麗,江旭東*,李錦明
(1.中北大學儀器科學與動態測試教育部重點實驗室,太原030051;2.中北大學電子測試技術重點實驗室,太原030051)
基于AVR單片機+FPGA的U盤記錄器設計*
秦麗1,2,江旭東1,2*,李錦明1,2
(1.中北大學儀器科學與動態測試教育部重點實驗室,太原030051;2.中北大學電子測試技術重點實驗室,太原030051)
為了滿足某民航導航系統中高速海量數據的存儲要求,提出了一種基于AVR單片機和FPGA結合控制的U盤記錄器設計方案。設計中以AVR單片機控制CH376讀寫U盤數據為核心,并利用FPGA控制大容量FLASH作為高速數據的緩存介質,解決了單片機緩存資源匱乏而造成的數據存儲不可靠的問題。同時設計了專門的掉電檢測電路,在掉電瞬間保存FLASH斷點地址,實現了系統再上電的續存功能。經過多次測試與實驗表明,系統性能表現優良,工作穩定可靠,能夠滿足實際工程應用需求,并已成功應用與某民航飛行數據記錄系統中。
AVR單片機;FPGA;U盤記錄器;掉電檢測
在航天航空技術的飛速發展的今天,各類航空電子系統的集成度、復雜度不斷提高,正向著結構多元化、設備智能化、數據高速海量化發展,尤其在GPS導航系統廣泛應用于航空航天領域的今天,可靠地記錄各系統的導航數據,對研究和探索這些先進的技術有著重要的意義[1]。因此,對于數據存儲設備的存儲速度、容量、可靠性、便攜性等的要求也越來越高。而隨著USB接口技術的不斷發展,U盤存儲速度和存儲容量也不斷提高,因而基于U盤的存儲設備有著廣泛的應用前景。
針對民航飛機上的兩路高速GPS導航數據的存儲,提出了一種基于AVR單片機和FPGA結合控制的U盤記錄器設計方案。與傳統存儲設備相比,該記錄器以U盤為存儲介質,使存儲更方便;引入FPGA控制FLASH作為大容量緩存介質,使存儲更可靠;另外,設計了掉電檢測電路,實現了存儲器的續存功能。
U盤記錄器系統主要由FPGA數據采編及緩存單元、AVR單片機控制單元、U盤接口模塊、掉電檢測及復位電路組成。系統框圖如圖1所示。

圖1 系統組成框圖
當系統工作時,通過422總線接口采集波特率達到460 800 bit/s的兩路高速GPS導航串行數據到FPGA,對兩路數據進行串并轉換及編幀處理,并通過仲裁后先后寫入寫FIFO中,然后在FPGA控制下將數據寫入作為緩存的大容量FLASH中。與此同時,AVR單片機在檢測到U盤設備準備就緒后,發出讀FLASH緩存命令給FPGA,將緩存的數據讀出到讀FIFO,然后單片機接收來自FPGA的數據,并控制CH376將數據以扇區的形式寫入U盤。FLASH讀寫控制模塊均衡FLASH的讀寫操作,使讀寫順序進行。
2.1大容量緩存設計
當僅采用單片機控制U盤的讀寫時,單片機的數據處理速度低,內部資源匱乏,難以滿足高速數據處理,而且會造成數據的丟失等問題,為了彌補單片機資源不足帶來的問題,可添加FPGA并利用其內部FIFO作為數據緩存,但當長時間采集數據時,FIFO資源仍然無法滿足數據的可靠性存儲。因此設計了以FPGA控制大容量FLASH作為數據的大容量緩存器的方案。系統設計的大容量緩存器如圖2所示。

圖2 大容量緩存器設計
設計中系統選用了 Spartan-3E系列的XC3S500E芯片作為緩存器的控制芯片,該芯片具有資源豐富、高性能、低功耗等特點[2]。且內部雙端口RAM容量達到360 kbit,可以添加一些控制模塊,用來構建高速異步FIFO,為FLASH數據的讀寫提供足夠的緩存沖空間。另外,該芯片的I/O口兼容多種電平標準,有利于與單片機進行連接通信。大容量非易失性FLASH選用了Samsung公司的K9LBG08U0M,其容量達到4 Gbyte,和U盤的存儲容量大小相當,經驗證,保證數據不溢出緩存時間超過40 h,因此能夠滿足海量數據長時間緩存。
2.2AVR單片機控制CH376設計
單片機一方面與FPGA構成的緩存部分進行通信,另一方面又控制U盤的讀寫操作,需要以較快的速度處理大量數據,因此對單片機的性能要求較高。普通的51單片機開發簡單,但其處理數據速低、內部資源匱乏,顯然不能滿足設計需要。而像ARM、DSP等性能優越的處理器,數據處理能力強,但開發難度和開發成本較高。
系統選用了ATmega128(AVR單片機)作為U盤讀寫的主控芯片。該單片機為8位微處理器,具有128 kbyte的系統內可編程FLASH和4 kbyte的片內RAM,其先進的指令集以及單周期執行指令,使數據吞吐率達到1 MIPS/MHz[3]。其與FPGA和CH376進行通信和數據傳輸都為8 bit并行方式。CH376是U盤文件管理控制芯片,其兼容USB2.0,支持12 Mbit/s全速USB通信,內置了FAT32文件系統的管理固件,能夠實現對U盤的FAT格式讀寫訪問。在硬件連接方面,支持2 Mbyte的8 bit被動并行接口,能夠直接連接到單片機等處理器的數據總線上[4]。
CH376的硬件連接如圖3所示,TXD接地,其余引腳懸空,配置CH376為8 bit被動并行接口,與單片機的PA口連接。控制引腳RD#、WR#、A0及PCS分別與單片機的讀選通引腳、寫選通引腳、PC4、PC7連接,實現 8 bit并口通信控制連接。ACT#引腳串接發光二級管,用于指示U盤的連接狀態。UD+和UD-引腳是USB信號線,主機方式下直接與U盤插座連接。
2.3掉電檢測電路及復位電路設計
實際應用中系統會遇到電壓瞬間欠壓或掉電的問題,這會導致系統程序跑飛而不能繼續工作,甚至造成大量數據的丟失。由于儲能元件的存在,系統在欠壓或掉電時,并不是立即停止工作,因此,系統設計中可以添加必要的掉電檢測電路,對系統的電源電壓進行監測,并及時反饋系統的掉電信息,在掉電發生時快速保護FPGA及單片機程序和相關的數據[5]。

圖3CH376硬件連接圖
設計中選用MAX709對電源電壓進行檢測,其能夠在加電、掉電以及降壓惰況下提供復位信號。為充分利用資源,系統的復位信號也將由MAX709產生。MAX709掉電檢測電路如圖 4所示。

圖4 掉電檢測電路及復位電路設計
INVCC為電源電壓輸入,PD_RST為掉電反饋信號,MCU_RST為初始復位信號。當INVCC輸入低于閾值電壓時,PD_RST產生負跳變,FPGA檢測到該信號為低電平時,停止當前正在處理的工作,轉入斷點保護程序,保證電源恢復或再上電后能繼續從斷點處讀寫數據。斷點保護的實質是存儲當前的讀寫地址,系統再上電后能讀取該地址并轉入該地址繼續執行斷電前的工作。
系統軟件設計主要包括FPGA控制模塊和ATM128單片機控制模塊。FPGA控制模塊主要完成數據的串并轉換、編幀處理、FLASH數據讀寫控制以及斷點保護等功能,采用自下而上模塊化的思想進行軟件程序設計。ATM128單片機模塊主要是控制CH376對U盤進行讀寫操作,以及完成與FPGA的通信和數據傳輸功能。
3.1FPGA控制模塊設計
3.1.1數據接收模塊設計
FPGA前端接收模塊主要完成數據的接收、編幀及仲裁。數據接收模塊如圖5所示。Uart_Rec為串并轉換模塊,fifo8k為寫FIFO,signalsel為數據仲裁模塊。

圖5 數據接收模塊
系統時鐘為29.419 2 MHz,而兩路串行數據的波特率為460800bit/s,為保證數據可靠接收,設計以8倍于串行數據波特率的接收時鐘Rec_Clk對數據進行采樣,即需要對主頻時鐘Main_Clk進行8分頻。根據422數據的起始位特性,當檢測到下降沿時,每8個周期采樣一位數據,連續采集8 bit數據并行寫入寫FIFO中,寫FIFO容量為8 kbyte。兩路數據采集互不影響,但兩路數據需要存入同一FLASH中,因此需要對兩路數據進行仲裁。Signalsel接收并判斷兩個FIFO的半滿信號(f1、f2),依據兩個半滿信號的先后順序來決定哪路數據寫入FLASH中。另外,為了利于上位機對兩路數據的分數處理,對存入FIFO中的數據進行編幀處理,一幀數據由4 089 byte的數據、4 byte的幀標志和3 byte的幀計數構成。具體數據幀格式如表1所示。

表1 數據幀格式
3.1.2斷點保護程序設計
斷點保護是為防止系統因電源欠壓或掉電而造成的程序跑飛、數據丟失等問題而采取的一種保護措施。利用FPGA編程對FLASH讀寫地址進行保護,在電源電壓恢復后能夠繼續從斷點地址處繼續讀寫數據。斷點地址包括寫地址和讀地址,系統設計中將FLASH的第1頁、第2頁分別存儲寫斷點地址和讀斷點地址。而FLASH的擦除操作是以塊為單位的,因此在擦除操作時跳過第1塊,將第1塊用來存儲斷點地址。斷點保護程序設計流程如圖6所示[6]。

圖6 斷點保護程序流程圖
3.2ATM128控制模塊設計
ATM128控制CH376實現U盤數據存儲的流程圖如圖7所示。系統上電后單片機復位,使系統進入工作狀態。然后單片機發送硬件連接測試命令CMD_CHECK_EXIST(06H)給CH376,緊接著發送數據55 H,若硬件連接正常,CH376將返回數據AAH,否則說明硬件連接不正常或單片機不工作。CH376連接正常后,初始化CH376,先發送模式設置命令CMD_SET_USB_MODE(15H)之后再發送模式代碼06H,設置其工作模式為USB主機方式,返回模式設置狀態后,發送CMD_DISK_CONNECT(30H)命令檢測U盤是否連接,讀取返回中斷狀態,若為USB_INT_CONNECT(15H)則U盤已連接成功,否則繼續檢測U盤連接狀態。若U盤連接成功,發送命令CMD_DISK_MOUNT(31H)對其進行初始化,讀取中斷狀態,若為 USB_INT_SUCESS(14H)則初始化完成。初始化成功后,將單片機RAM中的數據以扇區方式寫入U盤文件,數據讀取完畢后結束操作[7]。

圖7 U盤數據存儲操作流程圖
為了驗證系統的可靠性和穩定性,設計了實驗如下:設計一塊以FPGA為控制核心的信號源板,其可以模擬產生兩路波特率為460 800 bit/s的422高速串行數據,數據可以設定為任意波形。為了便于分析結果,兩路數據設定為不同波形,其中第1路設為遞增的鋸齒波,第2路設為遞減的鋸齒波。
待數據存儲結束后,計算機讀取U盤中的數據,并由上位機軟件對數據文件進行分析。由于每個文件中的數據既包括第1路數據,又包括第2路數據,不能直觀的判斷數據的正確性,因此有必要將文件按照固定的幀格式進行分數處理,每個文件分數后產生兩個子文件,分別命名為“m_POS_n第1路.NAV”和“m_POS_n第2路.NAV”,再分別對兩個子文件進行波形顯示,圖8(a)為第1路數據波形圖,圖8(b)所示為第2路數據波形圖。

圖8 數據波形圖
從圖8可以看出波形穩定,并無明顯丟數現象。將讀出的數據在UltraEdit中顯示,數據也沒有出現錯誤并且幀格式正確,另外,經測試系統極限處理時間可以達到40 h,能夠滿足海量數據高速長時間存儲。
該系統針對民航上的兩路422高速串行數據,以AVR單片機控制CH376進行U盤讀寫操作為基礎,輔以FPGA控制FLASH存儲器作為數據“緩存”模塊,解決了由于緩存資源匱乏而造成的數據存儲不可靠的問題,實現了高速大容量數據的可靠性存儲。測試結果表明,系統總體性能優良,工作穩定可靠,能夠滿足實際工程應用需求。另外,該系統還具有體積小、擴展性強、成本低和便于攜帶等優點。
[1]張乃燃,侯立剛,吳武臣.一種用于視頻顯示的高性能存儲器系統[J].電子器件,2008,31(1):268-272.
[2]劉智勇,陳鵬飛,宿磊,等.基于STM32芯片的U盤/SD卡文件傳輸技術研究[J].現代電子技術,2014,37(18):107-109.
[3]陳瓊,李秀平,楊杰.一種基于AVRmage32的無線電能數據采集系統的設計[J].電子器件,2014,37(5):1004-1008.
[4]溫田毅.基于GPRS無線數據傳輸及U盤海量存儲系統的研究與設計[D].東北石油大學,2012.
[5]周之麗,孟令軍,文波,等.基于USB3.0的LVDS高速圖像記錄系統的設計[J].電子器件,2015,38(4):812-816.
[6]菅少坤,張會新.具有斷電續存功能固態存儲器的設計[J].電子器件,2015,38(3):592~596.
[7]劉佳.基于FPGA的U盤讀寫器的研制與應用[D].西北農林科技大學,2012.
[8]張凱華,任勇峰.基于FPGA的高速數據采集存儲系統設計[J].電子器件,2015,38(1):135-139.

秦麗(1963-),漢族,博士,教授,博士生導師,主要從事動態測試技術、微波技術、慣性測量等方面的研究;

江旭東(1988-),男,漢族,在讀碩士,主要從事存儲測試方向的研究,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
項目來源:山西省自然科學基金項目(2014011021-5)
2015-11-16修改日期:2015-12-11
EEACC:7250G10.3969/j.issn.1005-9490.2016.05.041