<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于IDE硬盤(pán)的大容量語(yǔ)音記錄儀

基于IDE硬盤(pán)的大容量語(yǔ)音記錄儀

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹一種基于IDE硬盤(pán)的大容量語(yǔ)音記錄儀的設計方法,重點(diǎn)闡述了大容量語(yǔ)音記錄儀的硬件和軟件設計。關(guān)鍵詞:大容量語(yǔ)音記錄儀 IDE D6571E PIO 隨著(zhù)我國經(jīng)濟建設的迅猛發(fā)展,公安、鐵路、民航、金融等部門(mén)對語(yǔ)音記錄的需求不斷增長(cháng)。用戶(hù)經(jīng)常需要回放時(shí)間長(cháng)達幾個(gè)月、甚至幾年的大容量語(yǔ)音記錄儀,而目前國內可見(jiàn)到的語(yǔ)音記錄儀大多只能連續記錄幾百小時(shí)(即一個(gè)月左右)。而大容量的語(yǔ)音記錄儀一般是基于PC機,設備體積較大,使用不便。近年來(lái)作為數據存儲介質(zhì)的硬盤(pán),以其容量大、接口智能化程度高、控制方便越來(lái)越受到人們的重視。充分發(fā)揮硬盤(pán)的優(yōu)勢,脫離系統主機,可以為用戶(hù)開(kāi)發(fā)出超大存儲容量、性能可靠的語(yǔ)音記錄儀。 本文提出了采用控制硬盤(pán)對語(yǔ)音數據進(jìn)行實(shí)時(shí)存儲的方案。其最大優(yōu)點(diǎn)是可記錄語(yǔ)音時(shí)間長(cháng)達幾個(gè)月甚至幾年,并能達到較高的性能指標。 甚至IDE硬盤(pán)的大容易語(yǔ)音記錄儀的特點(diǎn): (1) 以為核心,采用PIO模式進(jìn)行硬盤(pán)的讀寫(xiě),可大大提高系統的性能價(jià)格比,使得語(yǔ)音記錄時(shí)間長(cháng)達1500小時(shí)(6GB硬盤(pán))。若換用更大容量硬盤(pán),可實(shí)現更長(cháng)語(yǔ)音記錄時(shí)間,達到連續工作幾個(gè)月甚至幾年的要求。 (2) 采用DSP芯片D6517E,其語(yǔ)音壓縮算法采用TRUESPEECH Triple Rate Coder,8kHz采樣頻率下語(yǔ)音壓縮速率為9.6、7.2或4.4kbps,MOS指標可達到3.98。 (3) 采用大規??删幊踢壿嬈骷﨏PLD對系統數字邏輯電路進(jìn)行集成,提高了系統的穩定性和可靠性,具有較好的通用性,可滿(mǎn)足多種場(chǎng)合的需要,不需改動(dòng)任何硬件。 (4) 預留遠程調度電話(huà)接口,可實(shí)現遠程監聽(tīng)、查詢(xún)等功能。 (5) 由于采用4層PCB線(xiàn)路板設計、表貼工藝和超薄筆記本硬盤(pán),使得基于IDE硬盤(pán)的大容量語(yǔ)音記錄儀體積如普通電話(huà)機大小,可實(shí)現對一路電話(huà)進(jìn)行高阻并聯(lián)錄音,并可在本機播放記錄語(yǔ)音和遠程調度記錄語(yǔ)音。圖1 D6571E的典型應用電路1 系統硬件設計 1.1 D6571E芯片 在本系統中,選擇DSP芯片D6571E,其語(yǔ)音壓縮算法采用TRUESPEECH Triple Rate Coder。由于該算法的實(shí)時(shí)運算需要22MIPS以上的運算速度,為此將DSP內核和算法代碼集成在D6571E芯片內。D6571E的典型應用電路如圖1所示。 D6571E具有16位寬的總線(xiàn),但也允許以分時(shí)方式使用8位總線(xiàn),這時(shí)CPU須用HI/LO信號表示送到總線(xiàn)上的是高8位還是低8位;當D6571E主動(dòng)將數據送到總線(xiàn)上時(shí),會(huì )發(fā)出ACK信號通知CPU讀取數據。HSTRD和HSTWR則是讀和寫(xiě)的控制線(xiàn)。由于TRUE-SPEECH Triple Rate Coder算法按30ms分幀采樣,然后進(jìn)行分析壓縮,因此無(wú)論是讀取壓縮數據還是因送壓縮數據,均必須在一幀內完成,否則D6571E會(huì )自行進(jìn)入休眠狀態(tài)。向D6571E輸送語(yǔ)音數據的過(guò)程如下:首先送出解壓控制命令,然后接收一個(gè)回送狀態(tài)字,狀態(tài)字中包含了當前幀所需要的字節數,CPU就連續送出規定數目的數據,待一幀處理完畢后,D6571E會(huì )繼續送出狀態(tài)字,如此循環(huán)就可連續回放語(yǔ)音了。而利用D6571E進(jìn)行語(yǔ)音壓縮的數據處理過(guò)程正好相反,狀態(tài)字中包含的是當前幀壓縮所得到的字節數,CPU應連接接收規定數目的數據。 D6571E芯片具備工業(yè)標準的編解碼器接口,可直接與串行PCM接口的音頻編解碼芯片相連,如美國國家半導體的TP3054(μ律)、TP3057(A律)等。本系統設計中音頻編解碼接口芯片采用了TP3057。TP3057工作所需的同步脈沖、采樣時(shí)鐘、數據信號等只需與D6571E的4根控制線(xiàn)相連即可得到。 由于D6571E的控制命令很豐富,在大容量語(yǔ)音記錄儀的設計中,筆者利用D6571E實(shí)現數字音量控制、自動(dòng)增益控制、變速回放、雙音頻信號產(chǎn)生和鑒別、來(lái)電顯示等功能,省去了不少功能芯片、線(xiàn)路板面積,使昨最終設計成型的大容量語(yǔ)音記錄儀體積如普通電話(huà)機大小。 1.2 IDE硬盤(pán)的控制 利用單片機控制現有的硬盤(pán),可極大地提高系統的性能價(jià)格比,因此本系統采用單片機控制硬盤(pán)進(jìn)行語(yǔ)音數據的存儲。圖2 DK23AA-60硬盤(pán)引腳及定義IDE接口的硬盤(pán)驅動(dòng)器提供了兩種數據傳輸模式:PIO模式和DMA模式。由于PIO模式控制相對容易,提供了一種編程控制輸入/輸出的快速傳輸方法。該模式采用高速的數據塊I/O,以扇區為單位,用中斷請求方式與CPU進(jìn)行批量數據交換。在扇區讀寫(xiě)操作時(shí),一次按16位長(cháng)度通過(guò)內部的高速PIO數據寄存器傳輸。通常情況下,數據傳輸以扇區為單位,每傳輸一扇區數據產(chǎn)生一個(gè)中斷。由于本系統語(yǔ)音壓縮數據的最大速率只有9.6kbps,而相關(guān)資料報道采用PIO寫(xiě)盤(pán)速度可以達到192kbps,完全可以滿(mǎn)足本系統的要求。 本系統采用Hitachi(日立)公司DK23AA-60型號的筆記本硬盤(pán)。它具有6GB的存儲容量,厚度僅有9.6mm,它的引腳及定義如圖2所示。 IDE接口是一種任務(wù)寄存器結構的接口,所有輸入輸出操作均通過(guò)對相應寄存器的讀寫(xiě)完成。IDE硬盤(pán)驅動(dòng)器中的寄存器及地址分配見(jiàn)表1。表2為狀態(tài)寄存器,它反映了硬盤(pán)驅動(dòng)器執行命令后的狀態(tài)。表1 IDE硬盤(pán)驅動(dòng)器中的寄存器及地址分配 地 址寄存器名及功能CS1FXCS3FXDA2DA1DA0讀操作寫(xiě)操作01000數據寄存器01001錯誤寄存器特性寄存器01010扇區數寄存器01011扇區號寄存器01100柱面號寄存器:低字節01101柱面號寄存器:高字節01110驅動(dòng)器/磁頭寄存器01111狀態(tài)寄存器命令寄存器表02 狀態(tài)寄存器 D7D6D5D4D3D2D1D0BSYDRDYDWFDSCDRQCORRIDXERR狀態(tài)寄存器中各位定義如下: BSY:驅動(dòng)器忙; DRDY:驅動(dòng)器準備好; DWF:驅動(dòng)器寫(xiě)失??; DSC:尋道結束; DRQ:請求服務(wù),驅動(dòng)器希望通過(guò)數據寄存器與CPU交換一字節數據; CORR:當可以糾正的讀錯誤發(fā)生時(shí),該位置1,數據傳輸將繼續進(jìn)行; IDX:收到綜引信號; ERR:命令執行出錯。 在向硬盤(pán)驅動(dòng)器發(fā)出命令前,必須先檢測硬盤(pán)驅動(dòng)器是否忙碌(D7=1)。如果在規定時(shí)間內硬盤(pán)驅動(dòng)器一直忙碌,則置超時(shí)錯;否則表示硬盤(pán)驅動(dòng)器空閑,可接受命令。 如果CPU要對硬盤(pán)寫(xiě)數據,首先CPU把必要的參數寫(xiě)入對應的地址寄存器,等待DRDY有效;然后將操作碼寫(xiě)入命令寄存器,同時(shí)驅器設置狀態(tài)寄存器的DRQ位,表示準備好接收數據,CPU通過(guò)數據寄存器將數據寫(xiě)入扇區緩沖區;當扇區緩沖區填滿(mǎn)后,驅動(dòng)器清除DRQ位,并置位BSY,驅動(dòng)器將扇區緩沖區中數據寫(xiě)入磁盤(pán);當寫(xiě)盤(pán)結束,清除BSY位,發(fā)中斷請求信號DNTRQ;CPU接收到中斷信號后,讀驅動(dòng)器狀態(tài)寄存器,同時(shí)將中斷信號INTRQ撤除。 如果CPU要對硬盤(pán)進(jìn)行讀數據操作,首先把參數寫(xiě)入地址寄存器和特性寄存器(如果需要);然后把命令碼寫(xiě)入命令寄存器,命令開(kāi)始執行。這時(shí)驅動(dòng)器置狀態(tài)寄存器中的BSY為1,同時(shí)將硬盤(pán)上指定扇區內的數據送入扇區緩沖區。當扇區緩沖區準備好數據后,置位DRQ,清BSY,發(fā)中斷請求信號INTRQ。CPU檢測到中斷后,讀取狀態(tài)寄存器,測試ERR位,若等于1則轉入出錯處理;否則DRQ位為1,CPU從扇區緩沖區讀取數據,數據讀完后,驅動(dòng)器復位DRQ位,然后驅動(dòng)器重新設置BSY位。 1.3 工作原理 基于IDE硬盤(pán)的大容量語(yǔ)音記錄儀主要由單片機,D6571E、IDE接口筆記本硬盤(pán)、A律編解碼芯片TP3057、可編程邏輯器件MAX7128S、160%26;#215;32LCD模塊、鍵盤(pán)、時(shí)鐘芯片、振鈴檢測芯片TCM1520A、電話(huà)線(xiàn)接口和電源等部分組成,系統原理框圖如圖3所示。單片機選用WINBOND公司的W78E52。它是整個(gè)系統的控制核心,完成對IDE硬盤(pán)、LCD等的初始化,接收D6571E壓縮后的語(yǔ)音數據并存儲在硬盤(pán)上,通過(guò)D6571E回放硬盤(pán)上的語(yǔ)音數據。W78E52是一款完全與8051兼容的8位單片機,它增加了Watchdog Timer和內部電源管理等功能,并且是目前少數可運行在最高40MHz晶振的單片機之一。本系統中的單片機W78E52運行在40MHz晶振下,以提高運行速度。 整個(gè)系統的數字邏輯部分采用一片ALTERA公司的大規??删幊踢壿嬈骷﨧AX7128S,它完成單片機與IDE硬盤(pán)、D6571E、LCD顯示和鍵盤(pán)的接口邏輯控制??删幊踢壿嬈骷﨧AX7128S的程序設計采用目前較為通用和流行的VHDL語(yǔ)言,用MAX+plus II和FPGA Express軟件編譯仿真完成。 一片D6571E完成對并聯(lián)話(huà)機狀態(tài)的監測。當D6571E監測到并聯(lián)線(xiàn)路上有語(yǔ)音信號時(shí),判斷并聯(lián)話(huà)機有去話(huà);當振鈴檢測芯片TCM1520A檢測到并聯(lián)線(xiàn)路上有振鈴時(shí),判斷并聯(lián)話(huà)機有來(lái)話(huà)。當并聯(lián)話(huà)機存儲來(lái)話(huà)和去話(huà)時(shí),D6571E開(kāi)始記錄語(yǔ)音,并將壓縮的語(yǔ)音數據實(shí)時(shí)傳送給單片機。單片機負責將語(yǔ)音數據存儲在硬盤(pán)上,并附加上相關(guān)的日期時(shí)間、來(lái)去話(huà)標志、主被叫電話(huà)號碼和通話(huà)時(shí)長(cháng)等索引內容,以便查詢(xún)使用。當本機需要回放語(yǔ)音記錄或遠程調度時(shí),單片機將硬盤(pán)上的語(yǔ)音壓縮數據通過(guò)另外一片D6571E解壓轉變成語(yǔ)音。 160%26;#215;32 LCD可顯示16%26;#215;16點(diǎn)陣的漢字兩行,每行10個(gè)漢字。它主要用于顯示系統的日期時(shí)間、提示信息或狀態(tài)信息,方便用戶(hù)的使用。系統中鍵盤(pán)可實(shí)現本機對語(yǔ)音記錄的回放選擇以及對D6571E工作的預置值進(jìn)行設定,如語(yǔ)音壓縮率的選擇、調節音量等。 遠程調度電話(huà)線(xiàn)接口可實(shí)現遠程監聽(tīng)和查詢(xún)等功能。系統在檢測到遠程調度電話(huà)線(xiàn)上的振鈴信號后,將模擬摘,同時(shí)向主叫播放語(yǔ)音提示。主叫可按照語(yǔ)音提示操作,即可監聽(tīng)到硬盤(pán)上的任意一段語(yǔ)音記錄,甚至可以監聽(tīng)到系統正在記錄的語(yǔ)音。 2 系統軟件設計 系統軟件包含有主程序、中斷服務(wù)程序和任務(wù)子程序等。 主程序主要完成對IDE硬盤(pán)、D6571E、LCD等的初始化,并檢測任務(wù)表是否空,若不空則執行相應任務(wù)。圖4所示為系統主程序流程圖。 中斷服務(wù)程序主要包括T0中斷服務(wù)程序、INT0中斷服務(wù)程序、INT1中斷服務(wù)程序等。T0中斷服務(wù)程序主要負責定時(shí)喂看門(mén)狗、掃描鍵盤(pán)讀鍵值等,并寫(xiě)相關(guān)任務(wù)到任務(wù)表中。INT0、INT1中斷服務(wù)程序分別響應系統中2片D6571E的中斷請求,將并聯(lián)話(huà)機通話(huà)的語(yǔ)音壓縮任務(wù)和記錄語(yǔ)音的播放任務(wù)寫(xiě)到任務(wù)表中,待主程序調用執行。 任務(wù)子程序主要有LCD顯示子程序、D6571E對語(yǔ)音的壓縮子程序、D6571E對語(yǔ)音的解壓子程序、讀寫(xiě)IDE硬盤(pán)子程序、振鈴處理子程序等。 晶振相關(guān)文章:晶振原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>