摘 要: 介紹了一種無(wú)線(xiàn)網(wǎng)絡(luò)接口卡的核心硬件模塊的實(shí)現(xiàn)原理,通過(guò)雙DMA實(shí)現(xiàn)對(duì)無(wú)線(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的快速收發(fā)。對(duì)NIC接收模塊" title="接收模塊">接收模塊和發(fā)送模塊" title="發(fā)送模塊">發(fā)送模塊的硬件實(shí)現(xiàn)電路作出了詳細(xì)分析。
關(guān)鍵詞: 收發(fā)器" title="收發(fā)器">收發(fā)器 無(wú)線(xiàn)網(wǎng)絡(luò) DMA 曼徹斯特編碼 DP8391
隨著無(wú)線(xiàn)通信技術(shù)的不斷成熟和應(yīng)用,各種各樣的智能化和網(wǎng)絡(luò)化的無(wú)線(xiàn)通信產(chǎn)品不斷涌現(xiàn),無(wú)線(xiàn)網(wǎng)絡(luò)產(chǎn)品也得到飛速發(fā)展。無(wú)線(xiàn)網(wǎng)絡(luò)接口卡收發(fā)器作為無(wú)線(xiàn)網(wǎng)絡(luò)的重要組成部分,為可靠的無(wú)線(xiàn)傳輸提供重要的硬件接口及物理層和數(shù)據(jù)鏈路層的協(xié)議支撐。
本文詳細(xì)分析10Mbps無(wú)線(xiàn)網(wǎng)絡(luò)接口卡的核心——收發(fā)器的設(shè)計(jì)過(guò)程中的問(wèn)題,提出無(wú)線(xiàn)網(wǎng)絡(luò)接口卡NIC實(shí)現(xiàn)方案,并對(duì)其核心的發(fā)送和接收模塊電路作出分析和探討。
1 無(wú)線(xiàn)NIC總體實(shí)現(xiàn)方案
無(wú)線(xiàn)NIC的基本結(jié)構(gòu)如圖1。它主要由三部分組成,即數(shù)據(jù)鏈路控制器、Manchester代碼轉(zhuǎn)換器和無(wú)線(xiàn)收發(fā)電路。鏈路控制器采用DP8390,以實(shí)現(xiàn)數(shù)據(jù)層路層協(xié)議的控制,NIC中設(shè)計(jì)了8K×2bits的RAM作為網(wǎng)卡的緩沖區(qū),以提高系統(tǒng)的執(zhí)行速度。系統(tǒng)采用PCI總線(xiàn)與主機(jī)相連[1]。為了與以太網(wǎng)卡兼容,設(shè)計(jì)中增加了PROM自舉電路模塊[2]。
內(nèi)部硬件基本模塊如圖2。它主要由無(wú)線(xiàn)收發(fā)模塊、編碼轉(zhuǎn)換模塊、接收處理模塊" title="處理模塊">處理模塊、發(fā)送處理模塊、DMA控制器模塊、串并轉(zhuǎn)換模塊等組成。系統(tǒng)時(shí)鐘統(tǒng)一采用10MHz方波發(fā)生器的時(shí)鐘[3~4],以進(jìn)行數(shù)據(jù)幀的同步。
?
2 收發(fā)器模塊設(shè)計(jì)" title="模塊設(shè)計(jì)">模塊設(shè)計(jì)
2.1發(fā)送模塊設(shè)計(jì)
發(fā)送模塊通過(guò)DMA方式讀取RAM中的數(shù)據(jù)并將數(shù)據(jù)交給無(wú)線(xiàn)發(fā)送模塊進(jìn)行發(fā)送[5],其工作過(guò)程如圖3。網(wǎng)卡向無(wú)線(xiàn)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)過(guò)程如下:
(1)NIC初始化。計(jì)算機(jī)對(duì)NIC中各寄存器的讀寫(xiě)是利用主機(jī)的I/O方式,網(wǎng)卡的基地址一般為300H。初始化NIC實(shí)際上是利用OUT指令對(duì)NIC中有關(guān)的寄存器寫(xiě)控制字。
(2)微機(jī)與網(wǎng)卡中緩沖RAM交換數(shù)據(jù)是使用NIC遠(yuǎn)程DMA模式。開(kāi)動(dòng)遠(yuǎn)程DMA后,微機(jī)不斷讀寫(xiě)網(wǎng)卡的數(shù)據(jù)端口,就能成功地執(zhí)行遠(yuǎn)程DMA過(guò)程,完成微機(jī)與網(wǎng)卡中緩沖RAM的數(shù)據(jù)交換。
(3)緩沖RAM收發(fā)網(wǎng)上的數(shù)據(jù)使用NIC的本地DMA模式。當(dāng)初始化過(guò)程后,網(wǎng)卡處在接收狀態(tài),一旦接收網(wǎng)上來(lái)的數(shù)據(jù),就自動(dòng)執(zhí)行本地DMA過(guò)程,對(duì)緩沖RAM進(jìn)行本地DMA寫(xiě)。
發(fā)送電路模塊的設(shè)計(jì)原理圖如圖4。發(fā)送模塊主要由10MHz標(biāo)準(zhǔn)方波發(fā)生器、一個(gè)D觸發(fā)器、4034并/串雙向移位寄存器、一個(gè)4040計(jì)數(shù)器和兩個(gè)雙端與門(mén)。
10MHz標(biāo)準(zhǔn)方波發(fā)生器用于產(chǎn)生10MHz標(biāo)準(zhǔn)方波,提供發(fā)送數(shù)據(jù)的時(shí)鐘信息。4040用于發(fā)送位計(jì)數(shù)。在發(fā)送完一個(gè)字節(jié)后,4040用其Q3送出完成信號(hào),在D觸發(fā)器中鎖存,即生成字節(jié)轉(zhuǎn)換完畢信號(hào),允許送出下一字節(jié);待接收到第二字節(jié)后,復(fù)位D觸發(fā)器,重復(fù)前述過(guò)程。4034在10MHz脈沖控制下,將數(shù)據(jù)總線(xiàn)上的并行數(shù)據(jù)轉(zhuǎn)換成10MHz的串行數(shù)據(jù)發(fā)往曼徹斯特編碼器。
圖4中P1.7為計(jì)數(shù)器的初始復(fù)位信號(hào)線(xiàn),由其在發(fā)送開(kāi)始、全部發(fā)送完成以及發(fā)送未完中斷后發(fā)出復(fù)位脈沖。發(fā)送未完中斷是用來(lái)處理發(fā)送過(guò)程中在同軸電纜上的沖突,此時(shí)將終止當(dāng)前發(fā)送。D觸發(fā)器用來(lái)鎖存計(jì)數(shù)器4040的Q3輸出端狀態(tài),告知CPU此時(shí)外設(shè)已準(zhǔn)備就緒。
2.2 接收模塊設(shè)計(jì)
接收模塊由初始化模塊和接收中斷模塊兩部分組成。初始化模塊完成對(duì)NIC寄存器的初始化,并對(duì)網(wǎng)卡中斷INT3和DMA參數(shù)進(jìn)行初始化,等待中斷。
當(dāng)網(wǎng)絡(luò)有數(shù)據(jù)需要接收時(shí),引發(fā)網(wǎng)卡中斷INT3,接收處理模塊通過(guò)DMA與RAM進(jìn)行數(shù)據(jù)傳送。這種不需要CPU干預(yù)的、成批量的數(shù)據(jù)傳送,可以極大地提高數(shù)據(jù)的接收速度。
接收處理模塊完成數(shù)據(jù)幀的處理(主要是以太幀),判斷是控制幀還是數(shù)據(jù)幀,并進(jìn)行幀的校驗(yàn),利用串并轉(zhuǎn)換模塊轉(zhuǎn)換成并行數(shù)據(jù)[6]。主要功能如下:
(1)遠(yuǎn)程DMA讀過(guò)程設(shè)置在微機(jī)的中斷子程序中,本地DMA寫(xiě)完成后,中斷微機(jī)主程序,執(zhí)行遠(yuǎn)程DMA,完成微機(jī)接收數(shù)據(jù)過(guò)程。微機(jī)發(fā)送過(guò)程是由微機(jī)一方先執(zhí)行遠(yuǎn)程DMA寫(xiě),然后執(zhí)行本地DMA讀。
(2)如果是發(fā)送數(shù)據(jù),則發(fā)送模塊完成與接收模塊相反的過(guò)程。不過(guò),發(fā)送時(shí)還要判斷能否發(fā)送,即用改進(jìn)沖突檢測(cè)方式進(jìn)行沖突檢測(cè)。由于無(wú)線(xiàn)傳輸無(wú)法進(jìn)行載波偵聽(tīng),只能利用接收方是否忙判斷線(xiàn)路狀態(tài),用軟件實(shí)現(xiàn)。接收處理模塊的執(zhí)行過(guò)程如圖5。
2.3 編碼轉(zhuǎn)換、計(jì)數(shù)部件與時(shí)鐘
編碼轉(zhuǎn)換環(huán)節(jié)主要用于將接收來(lái)的信號(hào)通過(guò)曼徹斯特編碼器DP8391進(jìn)行解碼,產(chǎn)生相應(yīng)的數(shù)據(jù)流,并進(jìn)行同步的幀頭與校驗(yàn)判斷,進(jìn)行鎖存,產(chǎn)生10MHz串行位流,并將之轉(zhuǎn)換成并行數(shù)據(jù)字節(jié)流,交給接收模塊,送入緩沖區(qū)。在發(fā)送時(shí),其過(guò)程與接收過(guò)程相反。編碼器與計(jì)數(shù)器配合使用,對(duì)發(fā)送和接收到的數(shù)據(jù)進(jìn)行計(jì)數(shù)。
2.3.1 編碼轉(zhuǎn)換
編碼模塊連接DP8391,其主要包括4034串/并雙向移位寄存器、373三態(tài)鎖存器、兩片4040計(jì)數(shù)器、兩片244 三態(tài)緩沖器及一片D觸發(fā)器,其硬件原理圖如圖6所示。
4034作為串/并轉(zhuǎn)換器件,其輸入信號(hào)取自DP8391 RXD端,373用于轉(zhuǎn)換之后的并行數(shù)據(jù)的緩沖與鎖存,然后將它們送至數(shù)據(jù)總線(xiàn)上。4034時(shí)鐘信號(hào)來(lái)自DP8391的RXC端,另外用一片4040對(duì)輸入數(shù)據(jù)位進(jìn)行計(jì)數(shù),取完8bit后,其Q3腳輸出一脈沖給D觸發(fā)器和字節(jié)計(jì)數(shù)器4040a,D觸發(fā)器收到信號(hào)后則發(fā)出READY2信號(hào),告知其一字節(jié)轉(zhuǎn)換完成,可從373 上取走數(shù)據(jù)。在取走數(shù)據(jù)后,通過(guò)D觸發(fā)器異步復(fù)位端復(fù)位觸發(fā)器狀態(tài)。
2.3.2 計(jì)數(shù)器部件
接收計(jì)數(shù)器是對(duì)接收到的數(shù)據(jù)字節(jié)進(jìn)行計(jì)數(shù),它主要由4040a實(shí)現(xiàn),其輸入是4040的Q3,輸出則通過(guò)兩片244 接入數(shù)據(jù)總線(xiàn),不破壞總線(xiàn)上的其他數(shù)據(jù)。一個(gè)計(jì)數(shù)器實(shí)現(xiàn)數(shù)據(jù)幀的提取,形成一個(gè)完整的字節(jié)。另一個(gè)計(jì)數(shù)器用于對(duì)接收的字符個(gè)數(shù)進(jìn)行計(jì)數(shù)。
2.3.3 恢復(fù)時(shí)鐘
恢復(fù)時(shí)鐘REC功能用一個(gè)片內(nèi)鎖相環(huán)完成。恢復(fù)時(shí)鐘用來(lái)監(jiān)測(cè)串行數(shù)據(jù)輸入信號(hào)的完整性。如果接收到的串行數(shù)據(jù)不符合頻率要求,電路將強(qiáng)行鎖定局部參考時(shí)鐘INT,使系統(tǒng)在數(shù)據(jù)或原鎖定丟失時(shí)仍能得到正確的恢復(fù)時(shí)鐘頻率。如果這個(gè)恢復(fù)時(shí)鐘頻率與局部參考時(shí)鐘頻率的偏離量大于50ppm,將通知鎖定輸出,同時(shí)電路將作出反應(yīng)并努力將輸入數(shù)據(jù)流拉回到鎖定數(shù)據(jù)中。
無(wú)線(xiàn)網(wǎng)絡(luò)在許多場(chǎng)合作為有線(xiàn)網(wǎng)絡(luò)的替代,如野外聯(lián)網(wǎng)作業(yè)及只需短期臨時(shí)的通信場(chǎng)合,都有很好的應(yīng)用前景。本課題設(shè)計(jì)的無(wú)線(xiàn)網(wǎng)卡,能有效地應(yīng)用于無(wú)線(xiàn)網(wǎng)絡(luò)。
本無(wú)線(xiàn)網(wǎng)卡,對(duì)于網(wǎng)絡(luò)終端的快速移動(dòng)產(chǎn)生的網(wǎng)絡(luò)信號(hào)接入與識(shí)別的誤碼率還比較高,有待于進(jìn)一步解決;對(duì)于靜止的終端,其通信速度較快、誤碼率很低。
參考文獻(xiàn)
1 Walter A.Tribel.16-bit Microprocessor Architecture, software,and Interface Techniques[M]. New Jersey: Prentice-Hall, Inc. 1988
2 Ethernet/Cheapernet Physical Layer Made Easy with DP8391/92. National Semiconductor Application [EB/OL]. http://www.nalanda.nitc.ac.in /industry/appnotes/ Natsemi/AN-442. pdf
3 黃振海, 李建東,劉乃安等. 寬帶無(wú)線(xiàn)IP網(wǎng)卡的研究和實(shí)現(xiàn)[J]. 西安電子科技大學(xué)學(xué)報(bào),2002;(4)
4 吳光榮, 郭峰,劉乃安.無(wú)線(xiàn)網(wǎng)卡微波收發(fā)機(jī)設(shè)計(jì)[J].西安電子科技大學(xué)學(xué)報(bào),1999;(1)
5 王福勛. 單片藍(lán)牙控制器AT76C551[J].半導(dǎo)體技術(shù),2002;(4)
6 PCI SIG. PCI Local Bus Specification Revision 2.2[S]. PCI Special Interest Group,1998;(12):21~105






