摘 要: 通過分析NE2000網卡與微機ISA總線的接口電路,用DSP芯片TMS320F206結合外圍電路模擬ISA時序,實現了DSP與NE2000網卡的軟、硬件接口,從而使ISA總線型網卡脫離了PC機環境的制約。 關鍵詞: 網卡 ISA總線 DSP
|
以太網是當今最受歡迎的局域網之一,它包括了OSI七層模型的物理層和數據鏈路層的全部內容1。在以太網中,網卡用于實現802.3規程,其代表是NOVELL公司的NE2000和3COM公司的3C503、3C508、3C509等網卡。對網卡直接編程就可以實現局域網內任意站點之間的通信而完全拋開了網絡操作系統,這就啟發我們能否在脫離PC環境的條件下實現網卡與其它微處理器之間的接口,從而建立基于非PC機平臺的局域網絡。對ISA總線型網卡,要實現這一設想,關鍵在于怎樣利用微處理器及外圍輔助電路模擬ISA時序。本文作者根據所做課題需要,通過分析NE2000網卡與微機ISA總線的接口電路,用DSP芯片TMS320F206結合外圍電路模擬ISA時序,解決了DSP與NE2000網卡的軟、硬件接口問題,初步實現了網卡在非PC機環境下的應用。
|
1 NE2000網卡與微機ISA總線接口電路分析 NE2000網卡是NOVELL公司生產的16位ISA總線的網卡,利用NE2000網卡可以組成總線結構的以太計算機局域網。該網卡遵循的標準與協議為IEEE802.3。其硬件結構如圖1所示,按功能可將其劃分為接口電路、緩沖RAM、站地址PROM、自舉ROM、狀態設置跳線器、連接器、DP8390、DP8391以及DP8392九部分。 |
|
接口電路主要實現兩種功能:一是與計算機ISA總線相連,包括數據總線讀寫、地址總線驅動、中斷控制信號的產生、存儲器讀寫信號以及I/O端口讀寫信號的引入等;二是對網卡內部的操作,包括對緩沖RAM的讀寫、對DP8390的控制、讀站地址PROM以及讀自舉ROM等。表1列出了NE2000網卡接口電路所使用的ISA總線信號(不考慮電源線和地線)。從表1可以看出,網卡接口電路僅使用了50根ISA信號線。通過對網卡工作原理的分析,我們還可以將網卡與DSP之間的接口信號線減至最少。 |
|
(1)網卡自舉ROM中固化了遠程自舉程序,使得用戶工作站能夠遠程自舉DOS系統,并從服務器上裝載程序。這個功能很少用到,而且在基于DSP平臺的局域網中也不存在DOS系統,故一般情況下都是通過跳線器屏蔽掉此功能。因而,/SMEMR和SA10~SA19這11根信號線可以不用。 (2)AEN信號只有當DMA控制器是總線占有者時,它才產生作用3。由于網卡并不使用DMA操作,故可將該信號線始終保持在低電平,使網卡I/O譯碼操作一直有效。 (3)80X86系列微機為了兼容的需要,設置了/IOCS16信號線。由于我們使用的是16位DSP,不進行8/16位數據讀寫的轉換,故不需要此信號。 (4)DSP只需要一根中斷線,因而可在上述7根線中任選一根即可,其余6根中斷線懸空即可。 (5)網卡與ISA總線交換數據是通過I/O端口實現的,微機采用PIO方式,從網卡緩沖RAM中讀入數據,或將主機內存中的數據送至網卡RAM緩沖區。根據這一分析,DSP及其外圍輔助電路應能完成模擬ISA總線I/O讀寫的功能。 通過上面對網卡接口信號線的詳細分析,可以看到DSP與網卡之間只需正確連接32根信號線,從而使DSP的外圍接口電路大大簡化。
|
2 DSP與NE2000網卡接口硬件電路 TMS320F2064是一種低價格、高性能的16位定點DSP,它的性價比極高,目前已成為高檔單片機的理想替代品,在通信、語音/語言、軍事、儀器儀表、圖像處理、工業控制等領域得到了廣泛的應用。本文所設計的就是該DSP與NE2000網卡的軟、硬件接口,從而展開對基于DSP平臺的局域網的研究。 根據上面對網卡與微機ISA總線接口電路的分析,表2列出了F206與網卡接口所需的引腳信號。 |
|
從表1和表2可以看出,NE2000網卡接口電路所需的信號線與F206的引腳之間有明確的對應關系。但是,它們之間能否通過簡單的組合邏輯進行相連還需分析微機ISA總線I/O讀寫時序與F206的I/O讀寫時序是否一致。以讀時序為例,圖2給出了微機ISA總線I/O讀時序過程,圖3給出了F206的I/O讀時序。從這兩個時序圖可以看出:微機采用數據和地址總線復用的總線傳送方式,當地址鎖存后,數據再送上總線;DSP采用獨立的數據和地址總線傳送方式,地址在一個I/O周期之間保持有效,數據在/RD信號有效后,在I/O周期內保持有效。因此,DSP可以按下述應用模仿微機時序對網卡進行操作。 |
|
|
(1)數據線、地址線可以直接相連。網卡僅使用F206的A0~A9這10根地址線。 (2)/IOR、/IOW信號線可通過/IS、/STRB、/RD、/WE這4根信號線譯碼得到,下式給出了生成/IOW、/IOR的譯碼邏輯關系: /IOR=/IS+/STRB+/RD /IOW=/IS+/STRB+WE 另外,XF引腳信號經驅動可直接連至RESETDRV,READY引腳經上拉電阻連接IOCHRDY,/INT2反向后與IRQ5相連。圖4給出了F206與網卡連接時的硬件框圖,GAL16V8來完成譯碼及驅動的工作。 |
|
3 DSP對NE2000網卡的編程 DSP對NE2000網卡的編程就是DSP對網絡接口控制器(NIC)DP8390中各種寄存器進行編程控制,完成數據分組的正確發送和接收。網絡通信過程可分為網卡初始化、接收控制和發送控制等三部分。限于篇幅,有關DP8390頁面寄存器的詳細說明和微機環境下的編程技術請參閱文獻5,DSP的完整匯編程序請有興趣的讀者和作者聯系。下面只給出DSP讀取NE2000網卡物理地址的一段程序,實際中是用來驗證上述硬件連接是否正確而編制的。我們購買的網卡物理地址為0040056388E7,在PC機上已經得到驗證。實驗證明,通過下面的程序運行讀到了正確的物理地址,從而表明我們所做的設想和實際結果是完全一致的。 SPLK #0021H,60H ;選擇"0"頁寄存器,后續操作 為復位操作 OUT 60H,CR SPLK #0049H,60H ;選擇16位傳輸方式 OUT 60H,DCR SPLK #0000H,60H ;清DMA遠程字節寄存器 OUT 60H,RBCR0 OUT 60H,RBCR1 SPLK #001FH,60H ;初始化接收狀態配置寄存器 OUT 60H,RCR SPLK #0002H,60H ;初始化發送狀態配置寄存器 OUT 60H,TCR SPLK #004CH,60H ;設置接收緩沖環起始頁面 地址寄存器 OUT 60H,PSTART SPLK #0080H,60H ;設置接收緩沖環終止頁面地 址寄存器 OUT 60H,PSTOP SPLK #004CH,60H ;設置邊界指針寄存器 OUT 60H,BNRY SPLK #00FFH,60H ;清網卡中斷狀態 OUT 60H,ISR SPLK #00FFH,60H ;設置中斷屏蔽寄存器 OUT 60H,IMR SPLK #0000H,60H ;設置遠程DMA起始地址為 0000H OUT 60H,RSAR0 OUT 60H,RSAR1 OUT 60H,RBCR1 SPLK #0006H,60H ;網卡地址長度為6個字節 OUT 60H,RBCR0 SPLK #000AH,60H ;啟動遠程DMA讀 OUT 60H,CR NOP IN 61H,DATA_PORT ;61H中存放網卡首字節地址"00H" IN 62H,DATA_PORT ;62H存放網卡第二字節地址"40H" IN 63H,DATA_PORT ;63H中存放網卡第三字節 地址"05H" IN 64H,DATA_PORT ;64H中存放網卡第四字節 地址"63H" IN 65H,DATA_PORT ;65H中存放網卡第五字 節地址"88H" IN 66H,DATA_PORT ;66H中存放網卡第六字 節地址"E7H" 網卡在DSP中的應用解決了DSP與DSP之間、DSP與PC之間的準確、高速地通信問題。由于網卡中包含了OSI七層模型中物理層和數據鏈路層的全部內容,用戶不必再為這兩層的具體連接和實現操心,可把精力和時間用在要解決的實際問題中去,這必將給用戶帶來極大的方便。
|