傳真通信不僅能傳送圖像/ 圖形信息,而且可以保留其具體的形式,因此,真跡傳送是傳真通信又一主要特點,也是最具魅力的特點。隨著因特網的發展,收發電子郵件已經成為大部分公司與個人或其他公司進行通信聯系的主要方式。在公司內部,相比使用電話進行通信,人們更愿意使用電子郵件,電子郵件已經成為大多數人的第二種主要通信手段。相比傳統傳真,電子郵件有一個顯著的優點: 成本很低。基于這種原因,人們自然會聯想到通過因特網發送傳真,這就是網絡傳真。
雙網數字傳真機與普通傳真機的最大區別是增加了網絡傳輸接口,具有普通電話網和因特網兩種傳輸模式,增強了傳真機的功能,擴展其適用范圍,提高了傳輸效率和傳輸可靠性,保證良好的圖像質量,并大幅度地降低了傳真所帶來的長途通信費用。
雙網數字傳真機是一個雙處理器結構( 主處理器是SCE214,從處理器是A RM S3C4510B) 的嵌入式系統,要實現網絡傳真功能首先必須實現系統內的雙機通信,即主處理器與從處理器的信息交換。
1 雙機通信的硬件實現
采用IDT 公司的2K ×8 b 的高速雙口RAMIDT7132 來實現雙機通信。雙口RAM 是常見的共享式多端口存儲器,如圖1 所示,雙口RAM 最大的特點是存儲數據共享,一個存儲器配備兩套獨立的地址、數據和控制線,允許兩個獨立的CPU 或控制器同時異步地訪問存儲單元。既然數據共享,就必須存在訪問仲裁控制。內部仲裁邏輯控制提供以下功能: 對同一地址單元訪問的時序控制; 存儲單元數據塊的訪問權限分配;信令交換邏輯
( 例如中斷信號) 等。
圖1 雙口RAM 的功能框圖。
它允許兩個( 左、右) 端口同時讀寫數據,每個端口具有自己獨立的控制信號線、地址線和數據線; 允許數據高速存取,最快存取時間為20 ns; 功耗低,工作在省電模式時,功耗為5 mW; 其數據保存電壓為2 V,便于用電池完成數據的掉電保護。IDT 7132 可以作為8 位雙口RAM 單獨使用,也可以與IDT7142 組成主從式系統,將數據線擴展到16 位,甚至更寬。IDT7132 支持從其兩個端El 對器件的任何存儲空間進行完全異步的讀/ 寫操作。通過的控制,IDT7132 自動工作在省電模式下,而且還可以通過接電池達到數據保護的目的。
IDT7132 工作情況如下: 當左右端口不對同一地址單元存取時,,可正常存儲,其中: H 表示高電平,L 表示低電平。當左右端口對同一地址單元存取時,有一端口的
= L,禁止數據的存取。此時,兩個端口中,哪個存取請求信號出現在前,則其對應的
= H,允許存取; 哪個存取請求信號出現在后,則其對應的
= L,禁止其寫入數據。需要注意的是,兩端口間的存取請求信號出現時間要相差在5 ns 以上,否則仲裁邏輯無法判定哪一個端口的存取請求信號在前; 在無法判定哪個端口先出現存取請求信號時,控制線
只有一個為低電平,不會同時為低電平。這樣,就能保證一個對應于
=H 的端口能進行正常存取,對應于
= L 的端口不存取,避免雙端口存取出現錯誤。非競爭真值表見表1,競爭真值表見表2。
表1 IDT7132 非競爭真值表。
表2 IDT7132 競爭真值表。
圖2 是IDT7132 在本系統中的連接框圖。IDT7132 的寫入時序圖和讀出時序如圖3,圖4 所示。
在寫入時序圖中,由脈沖上升沿控制寫入操作,在讀出時序圖中,由
脈沖上升沿控制讀出操作。
圖2雙口RAM 芯片IDT7132 連接框圖。
圖3 IDT7132 寫入時序圖。
圖4 IDT7132 讀出時序圖。
SCE214 和ARM 處理器間數據交換的軟件實現是采用輪詢方式分別讀/ 寫雙口RAM。它們的讀/ 寫操作過程基本相同,工作流程如圖5 所示。
圖5 主、從處理器讀/ 寫雙口RAM 流程圖。
SCE214 處理器采用匯編語言實現對雙口RAM 的讀/ 寫; ARM( S3C4510B) 處理器采用C+ + 語言編程,并基于嵌入式操作系統VxWorks 實現對雙口RAM 的讀/ 寫。
當SCE214 與S3C4510B 同時向同一存儲單元( # 07FF) 寫入數據時,如果對側地址信號的穩態先于本側的時,本側信號輸出& L.,表示禁止本側處理器寫入,本側寫入脈沖中加入等待周期; 若對側地址信號的穩態晚于本側時,本側
信號輸出" H".,表示本側處理器可以執行寫入操作;
不能同時為" L".。
圖6 是雙口RAM IDT7132 存儲器映射圖,IDT7132 空間大小為2 KB,存儲空間劃分為兩部分: 控制區和數據區。數據區分又分為兩部分: 1# 區和2#區,其空間均為512 B,1# 區用于實現SCE214 寫入數據和S3C4510B 讀出數據,2# 區用于實現SCE214 讀出數據和S3C4510B 寫入數據。控制區包含讀/ 寫標志、1 # 數據區起始地址及有效數據最大地址偏移、2#數據區起始地址及有效數據最大地址偏移。
圖6 雙口RAM IDT7132 存儲器映射圖。
處理器對雙口RAM 的操作過程如下:
( 1) SCE214 有寫入數據時,將數據寫入1# 區,有效數據起始地址寫入$ 07FE、$ 07FD 存儲單元中( 按小端格式存放) ,有效數據地址最大偏移量寫入$ 07FC、$ 07FB,并將$ 07FF 的Bit0 置為1;( 2) S3C4510B 讀雙口RAM 時,先判斷$ 07FF 的Bit0 是否為1,若為1,從$ 07FE、$ 07FD 存儲單元中取出有效數據起始地址,從$ 07FC、$ 07FB 存儲單元中取出有效數據地址最大偏移量,根據有效數據起始地址和最大偏移量,讀出雙口RAM 中的數據,并將$ 07FF 的Bit0 置為0;( 3) S3C4510B 讀雙口RAM 時,若判斷出$ 07FF的Bit0 為0,則S3C4510B 認為SCE214 無數據發送來。這時S3C4510B 若有數據需要寫入雙口RAM,則將數據寫入2# 區,有效數據起始地址寫入$ 07FA、$ 07F9存儲單元中( 按小端格式存放) ,有效數據地址最大偏移量寫入$ 07F8、$ 07F7,并將$ 07FF 的Bit3 置為1;( 4) SCE214 輪循到讀雙口RAM 操作時,先判斷$ 07FF 的Bit3 是否為1,若為1,從$ 07FA、$ 07F9 存儲單元中取出有效數據起始地址,從$ 07F8、$ 07F7 存儲單元中取出最后一個有效數據的地址偏移,根據有效數據起始地址和最大偏移量,讀出雙口RAM 中的數據,并將$ 07FF 的Bit3 置為0;( 5) SCE214 輪循到讀雙口RAM 操作時,若判斷出$ 07FF 的Bit3 為0,SCE214 認為S3C4510B 無數據發送來。
如此重復( 1) ~ ( 5) 的操作,即可完成SCE214 與S3C4510B 的雙向通信,最大一次可傳送512 B數據。
2 結論
雙機通信在嵌入式系統中應用比較廣泛,本文介紹的設計方案主要用于速率要求高、成本適中的場合。
由于本系統采用的是雙處理器結構設計,給系統的穩定性帶來一定的隱患,有待于在以后的研發中能將雙處理器集成為單片處理器。雙網數字傳真機研發的亮點在網絡傳真,其網絡傳真實現的業務不是實時傳真,加之因特網本身的時延較大,有待用戶檢驗,但其市場前景仍比較樂觀。