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