《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 一種數(shù)碼傳真機(jī)的設(shè)計(jì)與實(shí)現(xiàn)

一種數(shù)碼傳真機(jī)的設(shè)計(jì)與實(shí)現(xiàn)

2008-03-31
作者:劉 勇,傅其祥,王 偉,肖順

  摘 要: 一種基于單片機(jī)控制的數(shù)碼傳真機(jī)。介紹了系統(tǒng)各功能模塊的設(shè)計(jì),并結(jié)合Windows FAT文件管理系統(tǒng)的磁盤管理思想,提出了一種基于閃存(FLASH芯片)的傳真文件存儲(chǔ)管理" title="存儲(chǔ)管理">存儲(chǔ)管理方案,有效解決了有限不揮發(fā)存儲(chǔ)器的最佳應(yīng)用問題。
  關(guān)鍵詞: 數(shù)碼傳真機(jī) MODEM DSP Windows FAT 文件管理


  傳統(tǒng)傳真機(jī)利用紙張作為媒質(zhì)進(jìn)行傳真文件的收發(fā),給用戶使用帶來不便的同時(shí),也造成了資源浪費(fèi)。而數(shù)碼傳真機(jī)可以直接與電腦連接,利用數(shù)據(jù)存儲(chǔ)" title="數(shù)據(jù)存儲(chǔ)">數(shù)據(jù)存儲(chǔ)芯片作為存儲(chǔ)介質(zhì),節(jié)約了紙張等資源,并且數(shù)碼傳真機(jī)具有傳真質(zhì)量高、傳輸速率快、使用方式靈活、節(jié)省通信費(fèi)用等優(yōu)點(diǎn)。因此,對(duì)于數(shù)碼傳真機(jī)的研究應(yīng)用具有重要的實(shí)際應(yīng)用價(jià)值。
  本數(shù)碼傳真機(jī)系統(tǒng)以單片機(jī)作為系統(tǒng)總控單元,利用MODEM芯片(CX06833)實(shí)現(xiàn)調(diào)制、解調(diào)功能,利用閃存(FLASH芯片)作為傳真文件數(shù)據(jù)的存儲(chǔ)介質(zhì)。同時(shí),為減少系統(tǒng)占用空間和滿足控制信號(hào)轉(zhuǎn)換的時(shí)序要求,用CPLD(XC95288)實(shí)現(xiàn)系統(tǒng)外圍芯片的譯碼、讀寫控制。系統(tǒng)設(shè)計(jì)包括圖像掃描、編碼模塊,實(shí)現(xiàn)了與普通傳真機(jī)的兼容。本數(shù)碼傳真機(jī)系統(tǒng)實(shí)現(xiàn)功能有:(1)傳真文件的實(shí)時(shí)、定時(shí)發(fā)送;(2)傳真的自動(dòng)應(yīng)答、接收及傳真文件數(shù)據(jù)的掉電后保存;(3)DSP控制的圖像掃描、編碼功能;(4)語音解碼、播放功能。
  本文介紹了數(shù)碼傳真機(jī)系統(tǒng)總體設(shè)計(jì)思想,較詳細(xì)地描述了系統(tǒng)各功能模塊的設(shè)計(jì),主要包括主控單片機(jī)模塊及其與主機(jī)的交互協(xié)議、基于MODEM模塊的傳真通信流程、CPLD控制的譯碼邏輯電路、DSP控制的圖像掃描模塊,并提出了一種基于FLASH芯片的文件數(shù)據(jù)存儲(chǔ)方案" title="存儲(chǔ)方案">存儲(chǔ)方案,解決了傳真文件數(shù)據(jù)的不連續(xù)存儲(chǔ)及文件刪除后存儲(chǔ)空間的有效利用問題。
1 數(shù)碼傳真機(jī)系統(tǒng)總體設(shè)計(jì)
  此數(shù)碼傳真機(jī)系統(tǒng)通過串口" title="串口">串口與PC機(jī)實(shí)現(xiàn)數(shù)據(jù)通信,在主控單片機(jī)的控制下,把傳真數(shù)據(jù)傳送到調(diào)制、解調(diào)模塊,再由MODEM芯片完成調(diào)制功能。接收傳真時(shí),主控單片機(jī)首先把接收到的傳真數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)芯片(FLASH),再按照規(guī)定協(xié)議上傳給主機(jī)。由DSP控制的圖像掃描模塊實(shí)現(xiàn)掃描及傳真編碼功能,掃描數(shù)據(jù)經(jīng)過傳真編碼后存儲(chǔ)到FLASH芯片(2MB)中,再在主控單片機(jī)的控制下,完成圖像的傳真?zhèn)鬏敗8鱾€(gè)功能模塊的讀寫、片選等邏輯控制由CPLD模塊實(shí)現(xiàn)。
  系統(tǒng)設(shè)計(jì)采用模塊化設(shè)計(jì)思想,整個(gè)數(shù)碼傳真機(jī)系統(tǒng)可以劃分為:主控單片機(jī)模塊、調(diào)制解調(diào)及語音播放模塊、液晶顯示模塊、基于CPLD控制的譯碼邏輯模塊、基于DSP控制的圖像掃描模塊、電源及外圍電路模塊。系統(tǒng)的組成框圖如圖1所示。


2 主要功能模塊詳細(xì)設(shè)計(jì)描述
2.1 基于單片機(jī)總體控制模塊
  單片機(jī)(AT89C51)作為數(shù)碼傳真機(jī)系統(tǒng)的總體控制單元,控制其他各功能模塊的工作。主要功能有:通過串口與PC機(jī)控制軟件進(jìn)行通信;控制調(diào)制、解調(diào)模塊工作及傳真協(xié)議交互;讀取主機(jī)下載數(shù)據(jù)或圖像掃描編碼數(shù)據(jù),并進(jìn)行數(shù)據(jù)存儲(chǔ);發(fā)送、接收傳真數(shù)據(jù)。由于系統(tǒng)中擴(kuò)展模塊和外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器數(shù)量較多,選用CPLD實(shí)現(xiàn)各模塊的片選、讀寫邏輯控制??傮w控制模塊設(shè)計(jì)如圖2所示。


2.1.1 傳真機(jī)與主控計(jì)算機(jī)的交互協(xié)議
  傳真機(jī)與主控計(jì)算機(jī)通過串口(RS232)實(shí)現(xiàn)數(shù)據(jù)通信。交互協(xié)議的主要信息包括:計(jì)算機(jī)下載的功能信息(如開始發(fā)送傳真、終止傳真等功能)、主機(jī)下載的傳真數(shù)據(jù)、傳真機(jī)上傳給計(jì)算機(jī)的功能信息及傳真數(shù)據(jù)。交互協(xié)議中,采用命令頭、流水號(hào)、幀校驗(yàn)和的傳輸方式。功能傳輸?shù)母袷揭?guī)定為:
  0x55+0xAA+pipenum+length+state+value1+value2+…+valuen+sumcheck
  其中:0x55、0xAA是功能命令頭;pipenum是流水號(hào);length是命令功能幀長度;state是功能號(hào);value1~valuen是功能參數(shù);sumcheck是幀校驗(yàn)和。
  數(shù)據(jù)傳輸格式規(guī)定為:0x66+0x99+ pipenum+length+data1+data2+…+datan+sumcheck
  其中:0x66、0x99是數(shù)據(jù)命令頭;length是數(shù)據(jù)幀長度;data1~datan是數(shù)據(jù);sumcheck同樣是數(shù)據(jù)幀校驗(yàn)和。
  主控計(jì)算機(jī)下載一份傳真數(shù)據(jù)到傳真機(jī)的程序流程如圖3所示。傳真機(jī)上傳一份傳真數(shù)據(jù)到主機(jī)的程序流程類似。


2.1.2 基于CPLD的片選、讀寫邏輯控制功能實(shí)現(xiàn)
  數(shù)碼傳真機(jī)系統(tǒng)中,單片機(jī)要訪問的功能模塊較多,主要有:外部擴(kuò)展RAM模塊、外部數(shù)據(jù)存儲(chǔ)空間FLASH模塊、MODEM調(diào)制解調(diào)模塊、DSP圖像掃描模塊。設(shè)計(jì)中,采用AT89C51的P1口作為外部擴(kuò)展模塊的選擇信號(hào),用CPLD譯碼,靈活實(shí)現(xiàn)各個(gè)不同模塊之間的片選、讀寫控制。
   CPLD程序設(shè)計(jì)中,用VHDL語言實(shí)現(xiàn)控制功能模塊的程序設(shè)計(jì),并用Modesim仿真驗(yàn)證。此功能模塊的輸入端口有:AT89C51的地址、數(shù)據(jù)復(fù)用信號(hào)(P0、P2);AT89C51的模塊選擇控制信號(hào)(P1);地址鎖存信號(hào)(ALE);讀寫信號(hào)(WR、RD)。輸出端口主要有:外部FLASH的地址、數(shù)據(jù)信號(hào)及片選、讀寫信號(hào);外部擴(kuò)展RAM的片控制信號(hào);MODEM芯片的數(shù)據(jù)、片選、讀寫信號(hào);DSP模塊的地址、數(shù)據(jù)、片選讀寫信號(hào)。
2.2 MODEM芯片功能描述及傳真通信過程的建立
  系統(tǒng)設(shè)計(jì)中,MODEM芯片采用CX06833,實(shí)現(xiàn)數(shù)字信號(hào)的調(diào)制、解調(diào)功能。CX06833采用TQFP-144封裝,片內(nèi)集成微控制器、ROM(256KB)、RAM(32KB);可以通過串口或并口與主機(jī)相連(此系統(tǒng)中選擇為并口方式與主控單片機(jī)連接);可以與語音解碼芯片(CX20442)相連,實(shí)現(xiàn)語音播放功能。并且自動(dòng)完成數(shù)字信號(hào)的調(diào)制解調(diào)功能,減少了主機(jī)的運(yùn)算量。對(duì)CX06833的操作是通過對(duì)其片內(nèi)寄存器的讀寫實(shí)現(xiàn)的。
  數(shù)碼傳真機(jī)用T.30作為標(biāo)準(zhǔn)化的傳輸規(guī)程,采用二進(jìn)碼信號(hào)方式。整個(gè)傳真通信過程包括五個(gè)階段:階段A-呼叫建立,包括撥號(hào)后被呼方應(yīng)答,或檢到振鈴后應(yīng)答呼方;階段B-報(bào)文前處理,包括標(biāo)識(shí)部分和命令部分;階段C-報(bào)文傳輸;階段D-報(bào)文后過程;階段E-呼叫釋放。
2.3 基于DSP控制的圖像掃描模塊設(shè)計(jì)
  圖像掃描模塊由DSP(TMS320VC5402)作為主控器件,芯片具體內(nèi)部結(jié)構(gòu)、管腳分布、工作時(shí)序等可參照TI公司提供的數(shù)據(jù)手冊(cè)。設(shè)計(jì)中,DSP的增強(qiáng)主機(jī)接口HPI8作為普通I/O口,控制掃描儀CIS及馬達(dá)控制電路部分工作。圖像掃描模塊設(shè)計(jì)為彩色和黑白兩種模式。首先,CIS(Contact Image Sensors)感應(yīng)到的模擬信號(hào)通過ADC器件(彩色圖像選擇12位的AD器件WM8150;黑白圖像選擇二值比較電路)進(jìn)行數(shù)字化,得到的數(shù)據(jù)通過多通道緩沖串口(MCBSP)發(fā)送給DSP。DSP工作設(shè)定為DMA方式,接收掃描圖像數(shù)據(jù)后,進(jìn)行傳真編碼處理,存儲(chǔ)到數(shù)據(jù)緩沖芯片SRAM中,再由主控單片機(jī)實(shí)現(xiàn)傳真發(fā)送。掃描電路的時(shí)鐘、串口接收時(shí)鐘及幀同步信號(hào)均由CPLD提供。DSP的外圍配置包括:3片SRAM(選用CYPRESS公司的CY7C1041CV33)作為掃描數(shù)據(jù)緩沖;一片F(xiàn)LASH存儲(chǔ)器(選用AMD公司的AM49LV001)作為擴(kuò)展程序存儲(chǔ)空間;JTAG接口。VC5402的Boot Loader模式為并口Boot模式。在此數(shù)碼傳真機(jī)系統(tǒng)中,VC5402實(shí)現(xiàn)的主要數(shù)據(jù)處理算法是改進(jìn)的霍夫曼圖像傳真壓縮編碼。圖像掃描模塊結(jié)構(gòu)如圖4所示。


3 基于閃存的傳真文件存儲(chǔ)方案設(shè)計(jì)
  有效的傳真文件存儲(chǔ)管理方案是此數(shù)碼傳真機(jī)系統(tǒng)的關(guān)鍵技術(shù)之一。待發(fā)送的傳真和接收到的傳真首先進(jìn)行存儲(chǔ),然后在必要時(shí)(傳真發(fā)送完成或接收到的傳真上傳主機(jī)后)刪除,并釋放占用的存儲(chǔ)空間。對(duì)于數(shù)碼傳真機(jī)系統(tǒng),文件的存儲(chǔ)和刪除的需要反復(fù)進(jìn)行。硬件存儲(chǔ)資源有限,如果傳真文件存儲(chǔ)管理不善,可能造成存儲(chǔ)資源的巨大浪費(fèi),并可能影響數(shù)碼傳真機(jī)的正常工作。
  本數(shù)碼傳真機(jī)系統(tǒng)中,采用非易失性存儲(chǔ)器件FLASH(2MB)作為數(shù)據(jù)存儲(chǔ)器件,結(jié)合Windows FAT文件系統(tǒng)中磁盤存儲(chǔ)管理思想,通過建立文件存儲(chǔ)管理鏈表" title="鏈表">鏈表,設(shè)計(jì)了適合傳真機(jī)需求的傳真文件管理存儲(chǔ)方案。FLASH芯片選用AMD公司的AMD29F016D,其存儲(chǔ)空間為2MB。2MB的存儲(chǔ)空間分成32段(0~31段),每段存儲(chǔ)空間64KB。FLASH芯片存儲(chǔ)空間的初始狀態(tài)是0xFF,每位的存儲(chǔ)內(nèi)容只能從‘1’寫‘0’而不能相反,任何把數(shù)據(jù)從‘0’寫成‘1’的操作都會(huì)使芯片處于讀取狀態(tài),并且它只能進(jìn)行段擦除和整片擦除操作。要對(duì)某段存儲(chǔ)空間的數(shù)據(jù)進(jìn)行修改,必須先進(jìn)行整段的擦除操作,數(shù)據(jù)在緩沖區(qū)修改后,再整段寫入FLASH中。
3.1 傳真文件存儲(chǔ)管理區(qū)的建立
  利用FLASH芯片作為傳真數(shù)據(jù)的存儲(chǔ)器件,需要建立合理的文件存儲(chǔ)管理結(jié)構(gòu)。為實(shí)現(xiàn)數(shù)據(jù)的不連續(xù)存儲(chǔ),并避免數(shù)據(jù)刪除后,存儲(chǔ)空間得不到有效利用造成資源浪費(fèi),結(jié)合Windows FAT文件管理中的索引式文件存儲(chǔ)結(jié)構(gòu),通過對(duì)存儲(chǔ)空間重新劃分,設(shè)立文件鏈表管理區(qū),提出了基于FLASH芯片的文件存儲(chǔ)方案。
3.1.1 傳真文件信息區(qū)組織
  此方案中,采用FLASH芯片的第00段作為傳真文件信息區(qū),存儲(chǔ)收發(fā)傳真的容量、頁數(shù)、電話號(hào)碼、存儲(chǔ)空間等信息。根據(jù)傳真過程的實(shí)際需要,把傳真文件信息區(qū)分為接收傳真信息區(qū)、發(fā)送傳真信息區(qū)、文件存儲(chǔ)鏈表區(qū)和其他信息存儲(chǔ)區(qū)。其中接收傳真信息區(qū)和發(fā)送傳真信息區(qū)采用同樣的結(jié)構(gòu),主要存儲(chǔ)傳真頁數(shù)、傳真容量、存儲(chǔ)起始地址、存儲(chǔ)結(jié)束地址和來源(發(fā)送)電話號(hào)碼等信息。按這種結(jié)構(gòu),每份傳真占用空間20B左右。讀取文件內(nèi)容時(shí),首先把起始扇區(qū)地址讀入,查找文件存儲(chǔ)列表區(qū),按照索引結(jié)構(gòu)讀取文件內(nèi)容。
3.1.2 傳真文件存儲(chǔ)鏈表區(qū)
  此存儲(chǔ)管理方案中,把FLASH存儲(chǔ)空間進(jìn)行再次劃分,組成更小的存儲(chǔ)單元——扇區(qū)。每次文件存儲(chǔ)都以扇區(qū)為最小存儲(chǔ)單位,并采用鏈表結(jié)構(gòu)實(shí)現(xiàn)一個(gè)完整文件的存儲(chǔ)。傳真文件存儲(chǔ)鏈表區(qū)是此方案的核心。
  在數(shù)碼傳真機(jī)工作過程中,文件數(shù)據(jù)首先存儲(chǔ)到FLASH芯片中,如果待寫入的存儲(chǔ)空間中已有數(shù)據(jù),則寫入操作失??;如果文件刪除后的存儲(chǔ)空間沒有回收,則會(huì)造成存儲(chǔ)資源的浪費(fèi)。首先,把每段64KB的存儲(chǔ)空間劃分為256個(gè)扇區(qū)((0x00~0xFF號(hào)扇區(qū)),每個(gè)扇區(qū)256個(gè)字節(jié),作為最小的存儲(chǔ)單元,這樣每個(gè)扇區(qū)的物理地址為:SA(段號(hào))+PAGE(扇區(qū)號(hào)),并用一個(gè)字節(jié)表明此扇區(qū)所存儲(chǔ)字節(jié)數(shù)。在此基礎(chǔ)上,建立文件存儲(chǔ)鏈表區(qū)。由于SA(段號(hào))不可能是0xFF,所以用鏈表中每個(gè)單元的首字節(jié)內(nèi)容指示此扇區(qū)的狀態(tài):0xFF表示此扇區(qū)空閑,可以存儲(chǔ)數(shù)據(jù);非0xFF表示此扇區(qū)已用。在文件數(shù)據(jù)寫入或刪除此扇區(qū)后,相應(yīng)指示狀態(tài)也要修改。
  根據(jù)傳真過程的實(shí)際需要,要求明確知道傳真數(shù)據(jù)一頁結(jié)束和總傳真結(jié)束的位置,在鏈表的每個(gè)單元中再增加一個(gè)字節(jié)表示此信息。文件存儲(chǔ)鏈表中每個(gè)指示單元的存儲(chǔ)結(jié)構(gòu)如表1所示。


  表1中:SA是段號(hào)(取值范圍:1~31),PAGE是扇區(qū)號(hào)(取值范圍:0x00~0xFF),NUM是此扇區(qū)占用字節(jié)數(shù)(取值范圍:0x01~0xFF),STATE是此扇區(qū)的狀態(tài)(0x00:整份傳真結(jié)束;0x01:一頁傳真結(jié)束;0xFF:不是結(jié)束標(biāo)志)。
  每個(gè)扇區(qū)的存儲(chǔ)空間為256B。通常每份傳真的容量都較大,需要多個(gè)扇區(qū)存儲(chǔ),所以用文件鏈表結(jié)構(gòu)實(shí)現(xiàn)一份傳真數(shù)據(jù)的完整存儲(chǔ)。根據(jù)每個(gè)指示單元的存儲(chǔ)結(jié)構(gòu),利用其首字節(jié)內(nèi)容表示此扇區(qū)的存儲(chǔ)狀態(tài)。這樣存儲(chǔ)一份完整文件所建立的文件存儲(chǔ)鏈表如圖5所示。


3.2 傳真文件存儲(chǔ)及刪除流程
  要實(shí)現(xiàn)傳真文件數(shù)據(jù)在FLASH芯片中的存儲(chǔ),首先要搜索空閑扇區(qū)位置,接收數(shù)據(jù)緩存(≤256B),再對(duì)FLASH進(jìn)行寫操作,把緩沖區(qū)數(shù)據(jù)寫入FLASH;寫滿一個(gè)扇區(qū)后,搜索下一空閑扇區(qū)并修改文件存儲(chǔ)鏈表內(nèi)容。如此反復(fù)直至傳真結(jié)束,設(shè)置結(jié)束標(biāo)志位。采用這種存儲(chǔ)方式,可以實(shí)現(xiàn)文件數(shù)據(jù)的不連續(xù)存儲(chǔ)。
  在數(shù)碼傳真機(jī)工作過程中,傳真文件數(shù)據(jù)要反復(fù)進(jìn)行刪除操作,如在傳真發(fā)送完成,或在上傳接收傳真后。文件刪除完成后,釋放占用的存儲(chǔ)空間,以便作收發(fā)傳真存儲(chǔ)之用。否則,可能造成存儲(chǔ)空間的浪費(fèi)。在本存儲(chǔ)方案中,由于文件存儲(chǔ)采用頭信息和鏈表存儲(chǔ)的結(jié)構(gòu),文件的刪除操作也相應(yīng)地進(jìn)行傳真數(shù)據(jù)刪除和頭信息區(qū)內(nèi)容修改。FLASH芯片只能進(jìn)行段擦除和整片擦除,在同一段中,有的數(shù)據(jù)可能要保留,有的數(shù)據(jù)要?jiǎng)h除,所以在數(shù)據(jù)刪除和頭信息區(qū)修改過程中,利用外部擴(kuò)展RAM作為數(shù)據(jù)緩存,并用256個(gè)字節(jié)作為存儲(chǔ)扇區(qū)空間內(nèi)容是否保留的標(biāo)志,規(guī)定0xFF代表數(shù)據(jù)保留、0x00代表數(shù)據(jù)不保留。采用這種存儲(chǔ)方案,當(dāng)傳真文件刪除后,存儲(chǔ)空間可以再次回收利用,避免了存儲(chǔ)空間的浪費(fèi)。系統(tǒng)設(shè)計(jì)中,通過編程實(shí)現(xiàn)并驗(yàn)證了此存儲(chǔ)方案的有效性。一份傳真完整的存儲(chǔ)、刪除流程如圖6所示。


本數(shù)碼傳真機(jī)設(shè)計(jì)思想和實(shí)現(xiàn)方案對(duì)其他需要數(shù)據(jù)存儲(chǔ)的應(yīng)用場(chǎng)合具有參考價(jià)值。
參考文獻(xiàn)
1 周子耀.傳真機(jī)原理與應(yīng)用[M].北京:中國鐵道出版社,1992
2 張勇.C/C++語言硬件程序設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2003
3 林國鈞.傳真機(jī)常見故障分析與排除[M].北京:機(jī)械工業(yè)出版社,2002
4 Willian.S.Dorvis著,陳向群譯.操作系統(tǒng)基礎(chǔ)教程[M].北京:電子工業(yè)出版社,2003
5 AMD29F016D datasheet.AMD Cro.1999
6 TMS320VC5402 datasheet.TI Cro.2000
7 CC06833-3X/4X datasheet.2000
8 VHDL Referenc Manual.Xilinx Cro.1997
9 李朝青.單片機(jī)原理與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。