摘? 要: 介紹了以EDA技術(shù)作為開發(fā)手段的智能撥號報警系統(tǒng)的實現(xiàn),。本系統(tǒng)基于VHDL語言,,采用FPGA作為控制核心,,實現(xiàn)了遠(yuǎn)程防盜報警,。該報警器具有體積小、可靠性高,、靈活性強等特點,。
關(guān)鍵詞: VHDL語言? FPGA? ASIC? DTMF
?
目前,智能撥號報警器大多采用單片機作為控制核心,,這種傳統(tǒng)設(shè)計方法的特點是硬件和軟件截然不同,,設(shè)計中不可相互替代;而且硬件連線復(fù)雜,可靠性較差,。
硬件描述語言(VHDL)和可編程ASIC器件的廣泛應(yīng)用第一次打破了硬件和軟件的屏障,。基于VHDL語言,、以EDA技術(shù)作為開發(fā)手段,、采用現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)作為控制核心實現(xiàn)的與電話線連接的智能撥號遠(yuǎn)程報警器,與傳統(tǒng)設(shè)計相比較,,不僅簡化了接口和控制,,提高了系統(tǒng)的整體性能和工作可靠性,也為進(jìn)一步提高系統(tǒng)集成創(chuàng)造了條件,。
1 系統(tǒng)原理及組成
系統(tǒng)組成原理框圖如圖1所示,。系統(tǒng)的控制核心是一片F(xiàn)PGA芯片, 它由3個功能模塊構(gòu)成:電話信號音識別模塊,,DTMF收發(fā)時序仿真模塊和摘機/掛機控制模塊,。3個模塊的功能分別為識別電話系統(tǒng)送來的信號音、控制DTMF撥號電路自動撥號,、控制摘掛機電路完成摘掛機操作,。
?
?
系統(tǒng)工作原理:當(dāng)有人進(jìn)入室內(nèi)時,,人體檢測傳感器便采集盜竊信號,盜竊信號啟動摘機/掛機控制模塊控制摘掛機電路,,實現(xiàn)電話摘機,。電話信號音識別模塊識別摘機后電話系統(tǒng)的狀態(tài)是否處于可撥號狀態(tài)。若為可撥號狀態(tài),,DTMF收發(fā)時序仿真模塊控制DTMF撥號電路以雙音頻DTMF方式撥預(yù)定的電話(或傳呼機)號;若為不可撥號狀態(tài),,通過摘機/掛機控制模塊實現(xiàn)電話掛機,延時后再重?fù)堋?/P>
2 FPGA功能模塊設(shè)計
智能撥號報警器的控制核心FPGA的三個功能模塊皆用VHDL語言編程實現(xiàn),,下面主要介紹FPGA的三個功能模塊的設(shè)計,。
2.1 電話信號音識別模塊JUDGE
信號音判斷的實現(xiàn)原理是:由于電話系統(tǒng)信號音的撥號音、回鈴音和忙音的音源頻率均為450Hz(±25Hz)的正弦波,,只是斷續(xù)比不同且在時間上有明顯的差異(撥號音為450Hz±25Hz連續(xù)信號,,忙音為0.35s通0.35s斷,回鈴音為1s通4s斷),。要判斷信號音,,首先應(yīng)將處理DTMF 信號的MT8880芯片設(shè)置為呼叫處理模式,使電話呼叫過程中的各種信號音經(jīng)MT8880濾波,、限幅后得到方波,,并由MT8880的IRQ端輸出。然后對MT8880輸出的IRQ信號計數(shù)5秒,,撥號音的計數(shù)下限為(450-25)×5=2125,,計數(shù)上限為(450+25)×5=2375,即計數(shù)范圍為2125~2375,。同理,忙音的計數(shù)范圍為1041~1212,,回鈴音的計數(shù)范圍為425~475,,無信號音的計數(shù)應(yīng)為零。但在實際編程中,,需要考慮一定的計時計數(shù)誤差,,并且使程序簡化,因此采用不同信號音相鄰計數(shù)界限的中間值來區(qū)分不同的信號音,。同時,,為合理利用FPGA硬件資源,中間值應(yīng)盡量選為2n(n為整數(shù)),。最后設(shè)定為計數(shù)值大于1792為撥號音,,在1024~1791之間為忙音,在256~1023之間為回鈴音,,小于255為無信號音,。
基于此原理設(shè)計的信號音識別模塊JUDGE如圖2所示,。CLK為時鐘信號輸入端; IRQ與MT8880芯片的IRQ輸出端相連接,,是IRQ信號的計數(shù)輸入端,;PICK是摘機信號輸入端; BUSY為電話忙狀態(tài)標(biāo)志信號輸出端,; DIAL是撥號使能信號端,。該模塊的功能為:在摘機信號PICK產(chǎn)生大約1s后,即MT8880芯片被設(shè)置為呼叫處理模式后啟動該模塊,。在該模塊的內(nèi)部,,設(shè)置了兩個計數(shù)器。一個為對CLK時鐘信號進(jìn)行計數(shù),,產(chǎn)生5s控制信號;另一個對IRQ送來的脈沖進(jìn)行計數(shù),。兩個計數(shù)器都由摘機信號PICK啟動, 5s后判斷第二個計數(shù)器的計數(shù)值,。如果計數(shù)值大于1792,,則說明電話交換機系統(tǒng)處于可撥號的狀態(tài),DIAL置為有效,、BUSY置為無效,,以觸發(fā)DTMF收發(fā)時序仿真模塊進(jìn)行撥號操作。否則,,電話處于不可撥號的狀態(tài),,DIAL無效、BUSY有效,,驅(qū)動摘/掛機模塊產(chǎn)生掛機信號,。撥號音識別的部分VHDL程序如下:
process(irq,pick,,stop)
variable? cnt: integer,;
constant? lm_1792:integer:=1792;
begin
??? if(pick='0') then
?????????? dial<='0',;
?????????? busy<='0',;
?????????? cnt:=0;
??? elsif(stop and cnt<=lm_1792) then??
????? dial<='0',; /*電話遇忙,,發(fā)忙狀態(tài)標(biāo)志*/
????? busy<='1';????????
??? elsif(stop and cnt>=lm_1792) then
????? dial<='1',; /*電話接通,,撥號使能有效*/
????? busy<='0';
??? elsif(irq'event and irq='1') then
?????? ?cnt:=cnt+1,; /*電話音檢測計數(shù)*/?
???? end if,;
???end process,;
?
?
2.2 DTMF收發(fā)時序仿真模塊RECEI-SEND
MITEL公司生產(chǎn)的集成芯片MT8880 是專門用于處理DTMF信號的專用集成電路,具有接受和發(fā)送DTMF信號的雙重功能,。在本系統(tǒng)中,,MT8880的作用是:把電話系統(tǒng)送來的DTMF信號處理成FPGA能夠識別的邏輯信號; 將FPGA送出的用于撥號的TTL邏輯信號轉(zhuǎn)換成電話系統(tǒng)能夠識別的DTMF信號,。
RECEI-SEND用于控制MT8880以實現(xiàn)按DTMF方式自動撥預(yù)定的電話號碼,。RECEI-SEND模塊與MT8880芯片的互連接口如圖3所示。二者的接口信號線直接連接并由RECEI-SEND模塊模擬產(chǎn)生MT8880芯片的各個接口信號,,完成DTMF信號的接收以及對電話線路撥號,。MT8880的工作模式由內(nèi)部寄存器(CRA、CRB,、SR,、TDR和RDR)中的控制字決定,內(nèi)部寄存器的數(shù)據(jù)寫入和讀出都由R-W,、CS,、CP、RS,。信號控制,。當(dāng)MT8880芯片被訪問時,CP腳應(yīng)出現(xiàn)一次帶上升沿的高電平,,其周期應(yīng)為1μs~1000μs,。這是關(guān)鍵信號,其它信號均以此信號作為依據(jù),。因此,,F(xiàn)PGA中的RECEI-SEND模塊模擬產(chǎn)生CP及其它信號的時序。圖4為RECEI-SEND模塊寫MT8880內(nèi)部寄存器CRA,、CRB的時序,。圖5是RECEI-SEND模塊控制MT8880發(fā)送DTMF信號時序。RECEI-SEND模塊的VHDL程序結(jié)構(gòu)如圖6所示,。
2.3 摘/掛機控制模塊PICK
電話摘/掛機的實現(xiàn)是由摘/掛機控制模塊PICK控制摘/掛機電路來完成的。設(shè)計的PICK模塊如圖7所示,。CLK是系統(tǒng)時鐘輸入;EN是人體檢測傳感器采集的盜竊信號輸入;RESET是系統(tǒng)復(fù)位信號輸入;STOP為撥號完成的掛機控制信號輸入;BUSY為遇忙信號輸入;PICK為摘/掛機信號輸出,。當(dāng)有盜竊發(fā)生時,EN輸入信號有效,,該模塊使摘機輸出信號PICK有效,,從而驅(qū)動摘/掛機電路產(chǎn)生摘機動作。如果摘機后電話信號音識別模塊JUDGE送來的是系統(tǒng)忙的信號,,即BUSY輸入信號有效時,,輸出掛機信號PICK,。兩秒鐘后重新啟動摘機,直到電話信號音為可撥號狀態(tài),。撥號完成后,,STOP信號有效,PICK模塊產(chǎn)生掛機信號,。當(dāng)RESET有效時,,掛機輸出信號有效。摘/掛機控制模塊PICK的部分VHDL程序如下:
process(clk,,stop,,busy,en,,delay)
begin
? if(clk'event and clk='1') then
? if( reset='1' or stop='1') then
?????????????????????????????????? ? /*復(fù)位或撥號完成后掛機*/
?????????? pick<='0',;????????????????
????elsif(en='1') then???????????? /*報警信號觸發(fā)摘機*/
???? if(busy='0') then???????
???????? pick<='1';
??? elsif(delay='1' ) then?????? ?/*遇忙延時后重新摘機*/
???????? pick<='1',;
??? else
???????? pick<='0',;???????????? ?/*遇忙掛機*/
???????? end if;
????? end if,;
?? end if,;
end process;
?
3 系統(tǒng)設(shè)計和邏輯仿真
FPGA中的3個功能模塊用VHDL語言描述進(jìn)行綜合仿真后,,連接起來的系統(tǒng)電路原理圖如圖8所示,。系統(tǒng)的工作過程:STEAL報警信號輸入PICK模塊,產(chǎn)生PICK摘機信號,,控制摘機/掛機電路,。摘機后,RECEI-SEND模塊將呼叫處理控制字寫入MT8880芯片中,,將MT8880設(shè)置為呼叫處理模式,。然后電話信號音識別模塊JUDGE對MT8880芯片的輸出信號IRQ計數(shù),判別電話音是否為撥號音,。若非撥號音,,產(chǎn)生電話忙信號BUSY至PICK模塊,輸出掛機信號PICK,,電話掛機,。然后摘機后重判,若為撥號音,,則JUDGE模塊輸出撥號信號DIAL至RECEI-SEND模塊,,RECEI-SEND模塊模擬與MT8880直接接口進(jìn)行數(shù)據(jù)通訊的DTMF收發(fā)時序,控制MT8880按預(yù)先設(shè)置的電話進(jìn)行自動撥號。撥號后延時,,由JUDGE模塊判別電話音是否為電話回鈴音,,若為電話回鈴音電話回鈴音,則延時掛機,。若不是電話回鈴音,,則掛機后重?fù)堋?/P>
?
?
本系統(tǒng)采用的FPGA芯片為XILINX 公司的XCS30/XL,邏輯門數(shù)為1.3萬門,, 用FOUNDATION2.1軟件工具開發(fā),。設(shè)計輸入完成后,進(jìn)行整體的編譯和邏輯仿真,,然后進(jìn)行轉(zhuǎn)換,、布局、布線,、延時仿真生成配置文件,,最后下載至FPGA器件,完成結(jié)構(gòu)功能配置,,實現(xiàn)其硬件功能,。FPGA的系統(tǒng)邏輯功能仿真波形如圖9所示。各信號的邏輯功能和時序配合完全達(dá)到設(shè)計要求,。
?
?
本系統(tǒng)是用FPGA實現(xiàn)的智能報警器,,全部通過編譯仿真和系統(tǒng)測試。由于系統(tǒng)的很多邏輯功能由一片F(xiàn)PGA實現(xiàn),,外圍器件很少,,所以系統(tǒng)體積小、可靠性高,,且器件的可編程性使得系統(tǒng)功能易于完善,。隨著可編程ASIC器件的應(yīng)用范圍不斷擴(kuò)大,越來越多的產(chǎn)品在開發(fā)過程中都使用VHDL語言,,它使我們得以脫離底層電路,,站在更高的層次上考慮各種邏輯和時序關(guān)系,從而快速完成設(shè)計,。
?
參考文獻(xiàn)
1 The Programmable Logic Data Book.Xilinx Inc. 2000
2 孟憲元. 可編程ASIC集成數(shù)字系統(tǒng).北京:電子工業(yè)出版社,,1998
3 常 青,陳輝煌.可編程專用集成電路及其應(yīng)用與設(shè)計實踐經(jīng)驗.北京:國防工業(yè)出版社,,1998
4 侯伯亨,,顧 新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(修訂版)西安:西安電子科技大學(xué)出版社,1999