基于DSP的近距離無(wú)線(xiàn)通信的嵌入式數據記錄系統設計
引言
本文引用地址:http://dyxdggzs.com/article/257581.htm“黑匣子”是比較流行的電子記錄設備之一,廣泛應用于實(shí)時(shí)記錄飛機、船舶、汽車(chē)等行進(jìn)過(guò)程中的重要數據,包括速度、方向、高度、偏轉角、發(fā)動(dòng)機的轉速和溫度等。通過(guò)這些數據可以了解其運行過(guò)程中的情況,同時(shí)也是故障檢測、分析事故原因的重要依據。在工業(yè)領(lǐng)域,常見(jiàn)的記錄儀有壓力記錄儀、溫度記錄儀、濕度記錄儀等,用于對生產(chǎn)環(huán)境進(jìn)行實(shí)時(shí)監測,從而保證了有效生產(chǎn)和安全生產(chǎn)。
記錄儀的數據下載方式通常有兩種:通過(guò)傳輸線(xiàn)纜下載和通過(guò)插拔存儲卡下載。前者需要連接線(xiàn)纜,后者需要插拔存儲卡,兩者均需要結構方面的拆卸。但在某些應用環(huán)境中,記錄儀不便于拆卸,特別是在一些輻射性強的工業(yè)現場(chǎng),更不適于長(cháng)時(shí)間的近距離接觸。另外,這兩種方式在一定程度上均可能降低系統的可靠性。
本文依據某工業(yè)現場(chǎng)電子設備數據記錄的需求,提出了一種基于近距離無(wú)線(xiàn)通信的數據記錄設備。該設備以紅外或藍牙方式下載數據,與傳統的數據下載方式相比,下載數據時(shí)既不需要拆卸設備連接線(xiàn)纜或插拔存儲卡,又減少了連線(xiàn)和插拔存儲卡可能導致的接觸故障。
1 設計需求
在某工業(yè)現場(chǎng)電子設備工作過(guò)程中,要求記錄系統能夠實(shí)時(shí)記錄設備的各種電氣信號及其工作時(shí)序,用于事后設備運行狀況的分析以及故障排查、定位。需要實(shí)時(shí)采集記錄的信號包括2路ARINC429信號、10路TTL數字信號以及16路模擬信號。采樣頻率應大于或等于1 kHz,記錄時(shí)間為1 h左右。根據信號通道數量、數據采集速率和數據記錄時(shí)間,可估算出記錄系統的存儲容量應大于500 MB。通常,微處理器內部的存儲空間有限,故需要將采集到的數據存儲到存儲容量大、具有非易失性的外部存儲器中。本系統使用Sandisk公司的1 GB工業(yè)級CF卡作為存儲設備。
2 系統總體設計方案
系統采用DSP和FPGA協(xié)同控制的方案,總體設計方案如圖1所示。DSP主要完成數據的實(shí)時(shí)采集和控制,FPGA的數據傳輸,以及與無(wú)線(xiàn)通信模塊的數據傳輸;FPGA則實(shí)現數據緩存和讀寫(xiě)CF卡的邏輯時(shí)序控制。
DSP是主控制器。選用TI公司的16位定點(diǎn)DSP芯片TMS320F240。它的指令周期為50 ns,內部具有544字的RAM、224K字的可尋址存儲空間、雙10位模/數轉換器、28個(gè)獨立可編程的多路復用I/O引腳、1個(gè)異步串行通信口(SCI),以及1個(gè)同步串行通信口(SPI)。其內部資源可以滿(mǎn)足系統對TTL信號和模擬信號的采集需求,通過(guò)外接ARINC429、紅外和藍牙專(zhuān)用接口芯片,實(shí)現ARINC429數據信號的采集和兩種無(wú)線(xiàn)方式的通信。
FPGA是輔助控制器,其核心為FIFO和邏輯控制電路,用于完成DSP和CF卡間數據傳輸。選用Altera公司CyclonelI系列的FPGA芯片EP2C20-Q240C8。它具有142個(gè)用戶(hù)可使用I/O引腳、52個(gè)M4K嵌入式陣列塊和18752個(gè)邏輯單元。DSP和FPGA豐富的內部資源很好地滿(mǎn)足了系統設計的需要。
系統主要包括數據存儲和數據下載兩大功能:
①數據存儲。DSP實(shí)現對2路ARINC429信號、16路模擬信號和10路數字信號的實(shí)時(shí)采集,并將數據實(shí)時(shí)存入FPGA的FIFO中。當FIFO存儲了一定量數據時(shí),FPGA控制邏輯電路自動(dòng)將FIFO中的數據寫(xiě)入CF卡中。
②數據下載。首先,DSP將系統的藍牙和紅外模塊設置為從設備。當接收到工作人員所持的帶有藍牙或紅外接口的地面設備發(fā)出的連接請求后,先進(jìn)行鑒權,鑒權通過(guò)后與其建立連接。然后,FPGA控制邏輯電路讀出CF卡中數據并存人FIFO,DSP通過(guò)查詢(xún)或中斷方式將FIFO中的數據通過(guò)無(wú)線(xiàn)通信模塊發(fā)送給地面設備。
3 各功能模塊設計
3.1 FPGA功能模塊設計
使用FPGA實(shí)現異步FIFO模塊和CF卡讀寫(xiě)模塊,是本設計的重點(diǎn),也是難點(diǎn)。
3.1.1異步FIFO模塊
數據記錄設備的實(shí)時(shí)性強、數據量大。為了提高數據傳輸速度、避免數據堵塞,利用FPGA硬件設計上的靈活性,在其內部構建了一個(gè)寬度為16位、深度為512的異步FIFO模塊,作為DSP與CF卡之間數據傳輸的中繼站。
異步FIFO的結構圖如圖2所示。它包括4個(gè)模塊:數據存儲模塊、寫(xiě)地址產(chǎn)生模塊、讀地址產(chǎn)生模塊和標志位產(chǎn)生模塊。FIFO的讀寫(xiě)采用讀時(shí)鐘和寫(xiě)時(shí)鐘兩個(gè)時(shí)鐘。寫(xiě)時(shí)鐘同步的信號有寫(xiě)地址產(chǎn)生模塊生成的寫(xiě)請求和寫(xiě)地址;讀時(shí)鐘同步的信號有讀地址產(chǎn)生模塊生成的讀請求和讀地址。寫(xiě)使能和讀使能分別由DSP與FPGA數據傳輸控制邏輯和CF卡讀寫(xiě)控制邏輯生成。標志位產(chǎn)生模塊由讀寫(xiě)地址關(guān)系生成FIFO存儲狀態(tài)標志,并反饋給主機DSP。DSP通過(guò)查詢(xún)該標志來(lái)控制與FPGA的數據傳輸。
3.1.2 CF卡讀寫(xiě)模塊
CF卡讀寫(xiě)模塊分為CF卡讀控制模塊和CF卡寫(xiě)控制模塊。CF卡讀或寫(xiě)模塊的設計具有相似性。這里僅介紹寫(xiě)CF卡的工作過(guò)程。
首先,設置CF卡的屬性寄存器。CF卡有4個(gè)屬性寄存器,通常只需設置“配置選擇寄存器”以選擇CF卡的讀寫(xiě)模式。CF卡的讀寫(xiě)模式有3種:I/O模式、Memory模式和True IDE模式。本設計使用16位的Memory模式讀寫(xiě)CF卡。Memory模式是CF卡默認的讀寫(xiě)模式,所以在CF卡初始化過(guò)程中不需要設置“配置屬性寄存器”。
其次,設置CF卡的任務(wù)文件寄存器。本設計中使用的任務(wù)文件寄存器有:數據寄存器、扇區數寄存器、扇區號寄存器、低柱面號寄存器、高柱面號寄存器、驅動(dòng)器選擇/磁頭寄存器和狀態(tài)/命令寄存器。對它們進(jìn)行沒(méi)置,可選擇扇區尋址方式,設定每次讀寫(xiě)的扇區數和邏輯尋址地址,并獲取CF卡狀態(tài)以及輸入讀寫(xiě)命令。
CF卡的尋址方式與計算機的硬盤(pán)操作方式類(lèi)似。扇區的尋址方式有兩種:物理尋址方式(CHS)和邏輯尋址方式(LBA)。本設計使用LBA尋址,對應28位LBA地址。
磁頭寄存器存放LBA地址的27~24位;柱面號寄存器存放LBA地址的23~8位;扇區號寄存器存放LBA地址的7~0位。
寫(xiě)CF卡一個(gè)扇區的流程如圖3所示。每次向CF卡存儲數據時(shí),應該先獲取上次存儲到的扇區的LBA地址,從而獲得此次存儲的起始扇區地址。為了記錄每次存儲到的扇區的地址,將LBA地址為0的扇區保留,專(zhuān)用于記錄扇區地址。在開(kāi)始一次寫(xiě)操作之前,應該先讀取LBA地址為O的扇區,獲得上次存儲的LBA地址;然后加1獲得此次寫(xiě)操作的LBA地址,并向指定的扇區寫(xiě)數據。
利用QuartusII作為FPGA開(kāi)發(fā)平臺,使用VHDL硬件描述語(yǔ)言實(shí)現了FPGA與DSP的接口、異步FIFO的存儲以及CF卡的讀寫(xiě)邏輯。在QuartusII自帶仿真工具下得到的寫(xiě)CF卡時(shí)序仿真結果如圖4所示。
評論