在高檔酒店客人坐在圓形的餐桌旁,通過觸摸面前的電腦屏幕選擇食物,不久選中的食物便通過軌道輸送到客人面前。這一自動點餐系統避免了人工服務造成的等待、服務態度等問題,同時提供了強大的娛樂功能。同樣,該系統也適合于娛樂及辦公場所,大家可以在各自的包間或辦公室很方便地點餐。 系統功能 系統框圖示于圖1。Blackfin處理器是專門為滿足當今嵌入式音頻、視頻和通信應用計算要求和低功耗條件設計的嵌入式處理器[1]。系統包含有一片Blackfin系列雙核處理器ADSP-BF561[2],視頻采集解碼芯片ADV7183B,音頻編解碼芯片ADV1836A,SDRAM數據存儲器,FLASH程序存儲器,以太網芯片LAN91C111,LCD觸摸屏,SD卡、UART接口,按鍵,指示燈等。 系統通過擴展了SD卡,移植了FAT文件系統,作為照片、視頻、電子書等數據的存儲。通過ADSP-BF561內部的SPI總線,從SD卡內部將數據讀到SDRAM里,同樣,SDRAM的數據也可以通過SPI總線寫回到SD卡內部。 從SD卡讀到SDRAM內部的菜品的圖片,通過一些處理,轉化成適合320×240彩色LCD顯示的RGB-24Bit格式的圖像數據,之后,通過并行外設接口(PPI)送給LCD控制器,進行菜品圖片的顯示。 系統擴展了LAN91C111芯片作為網絡主控芯片。ADSP-BF561通過外部接口擴展總線(EBIU),與LAN91C111進行讀寫通訊。LAN91C111的網絡輸出經過網絡變壓器后,接到RJ-45接口上,實現了網絡的硬件連接。LAN91C111芯片通過DMA方式和中斷引腳,與ADSP-BF561進行數據的傳輸。軟件方面,通過VDK實時內核上移植的LWIP,進行TCP/IP協議的開發。 視頻數據(PAL制)通過同軸電纜接入到視頻解碼器ADV7183內部,經過采樣,視頻解碼,輸出ITU-656格式的圖像數據。圖像數據通過PPI,以8bit的數據寬度,SCLK/2的速度,DMA方式傳輸到SDRAM中。利用PPI的同步數據口與ADV7183的幀同步、場同步、行同步等信號進行相連,完成視頻數據的同步。對ADV7183的上電配置是通過ADSP-BF561的通用編程接口(PF)實現I2C協議,完成數據格式、增益控制、曝光控制等配置。 從視頻解碼器ADV7183讀到SDRAM的視頻數據是ITU-656格式的(UYVY4:2:2格式)經過YUV到RGB的算法變換,轉變成適合彩屏LCD顯示的RGB24bit數據,通過PPI傳輸給LCD控制器,實現視頻的采集和播放。 顧客的語音留言通過麥克風輸入到音頻編解碼器AD1836中,經過音頻A/D的采樣、量化、解碼后,通過DSP的Sport口傳輸到SDRAM中進行暫時的存儲[3],之后,通過MDMA傳輸到SD卡中,進行顧客意見的語音保存。AD1836通過ADSP-BF561的串行外設接口(SPI)配置成44kHz的采樣率、16bit的采樣寬度。 SD卡中的音頻數據(歌曲)通過SPI讀取到SDRAM中,由ADSP-BF561解碼后,通過串口(SPORT)以DMA方式,傳輸給AD1836音頻編碼器,再通過揚聲器或者耳機輸出,實現了歌曲的播放。 此外,系統擴展了NAND Flash作為大容量的數據存儲,擴展了4×4鍵盤和指示燈,擴展了Flash作為程序固化,擴展了消防信息報警的接口。 圖1 系統框圖 系統功能如下: 瀏覽菜單:菜品圖片通過SD卡,以BMP格式進行存儲。當用戶瀏覽菜單的時候,ADSP-BF561通過菜品的文件名,讀取SD卡中對應的菜品的圖片,顯示在彩屏LCD上。顧客可以根據菜單進行選擇菜品進行瀏覽,菜品也可以滾動的播放。 顧客點餐:顧客通過瀏覽菜單菜品的圖片,選擇自己滿意的菜品,之后選擇點餐按鈕,即可以實現點餐功能。此外,顧客還可以通過網絡進行點餐和預定菜品,實現點餐的智能化和靈活化。 娛樂功能:終端提供了強大的娛樂功能,包括:聽音樂、閱讀電子書、觀看菜品制作過程視頻等等。顧客在等餐的過程中,可以通過觸摸屏選擇這些娛樂功能,緩解等餐過程中焦急的心情,也達到了放心愉快用餐的目的。 語音留言和播放:顧客在用餐結束后,對餐廳的反饋意見可以通過語音的形式,由麥克風輸送給音頻解碼芯片AD1836,經過音頻A/D采樣、量化、解碼后,存儲在SDRAM中,之后通過存儲在NANDFlash中,實現用戶意見的保存。餐廳經營者可以通過菜單把用戶的語音留言播放出來,根據用戶的意見。 網絡功能:系統擴展了LAN91C111作為網絡主控芯片。在軟件上,在VDK內核的基礎上移植了LWIP作為網絡主要結構,實現了TCP/IP在ADSP-BF561上的移植[4],完成了C-S(客戶端-服務器)模型下的網絡Socket的建立、連接、傳輸、斷開等功能。并且,在標準的TCP/IP的基礎上,開發了應用層協議,實現了點餐終端與上位機電腦直接的數據的傳輸。 軟件設計 ADSP-BF561上實現的軟件通過采用VDK創建線程,線程之間通過信號量(semaphore)和消息(message)來傳遞信息和完成線程的同步。利用硬件標志(deviceflag)來完成外設和DSP的同步。利用中斷和中斷嵌套來處理DMA以及突發事件。通過對每個應用程序創建一個線程,用線程的優先級和消息進行互相的調度和管理,并且,編寫ADV7183,AD1836及LAN91C111等設備的驅動,用優先級管理中斷服務程序,調用VDK的API函數。雙核軟件結構示于圖2。 圖2 雙核軟件結構 程序采用了菜單結構,上電初始化后顯示主菜單,通過用戶的對觸摸屏的點擊,開始顯示二級子菜單,然后用戶可以返回上級菜單和跳轉到下級子菜單。程序最多有5級菜單,為用戶提供了一個良好的人機交互的界面。主程序流程示于圖3。 圖3 主程序流程 在網絡傳輸點餐信息方面,DSP端程序主要是在VDK內核上通過LWIP移植了TCP/IP協議簇。VDK作為一個同VisualDSP++一起發售的內核,很好地集成到了VisualDSP++中。在VDK的基礎上,通過開發Socket服務器程序,實現了點餐信息的網絡傳輸及網絡點餐的功能。 程序的加載是指把程序固化在FLASH中,在上電后,程序能脫離開仿真器獨立的加載和運行,這一步是任何一個產品開發過程中必須做到的工作。ADSP-BF561的加載過程非常的復雜,主要分為:1、簡單程序的加載;2、單核程序的加載;3、雙核程序的加載;4、復雜的程序(雙核,程序運行在外存中)加載。VDK內核下的LWIP程序,以及視音頻的采集、編解碼等等,巨大的程序量使程序必須在外存中運行,而且必須采用雙核處理器來增加處理性能,本設計的程序加載屬于最復雜的第4類加載。在程序的加載過程中,我們從簡單的程序開始反復的試驗,逐步的了解ADSP-BF561的加載過程,通過閱讀大量的資料,與ADI的國內和國外的技術支持進行了聯系,最終解決了這個難題。 結語 系統充分利用雙核DSP-BF561的硬件資源,使得Blackfin系列DSP的音視頻處理性能得到充分的發揮。通過合理的設計了DSP外圍的器件,實現了音頻的采集與播放、視頻的采集與顯示、觸摸屏的互動、SD卡和NANDflash等大容量存儲器的使用。采用了VDK內核管理程序的進程,在DSP上移植了TCP/IP協議簇,實現了點餐信息的網絡傳輸及網絡點餐的功能。存儲在終端的菜品的海量圖片可以動態的瀏覽和播放。提供了強大的娛樂功能。顧客可以在用餐后通過終端對菜品進行語音評價。 采用該系統實現真正意義上的“無人智能餐廳”。 |