DSP與ISA總線(xiàn)PnP卡的接口技術(shù)研究
為解決多個(gè)總線(xiàn)設備共享系統總線(xiàn)時(shí)所帶來(lái)的系統底層資源的分配和再分配問(wèn)題,Microsoft公司在1993年以后相繼公布了即插即用PnP(Plug-and-Play)規范,包括的總線(xiàn)類(lèi)型有ISA、EISA、PCMCIA、PCI、VESA及SCSI等。PnP技術(shù)提供了對于底層硬件資源包括I/O端口、IRQ、DMA通道以及內存等的智能管理,免除了用戶(hù)因安裝新的硬件設備而帶來(lái)的煩惱。PnP不需要手工改變設備的開(kāi)關(guān)或跳線(xiàn),給大家帶來(lái)了好處,但也給在非PC硬件平臺上的應用帶來(lái)了麻煩。原因在于PnP的實(shí)現必須具備兩個(gè)條件:一是PC機主板要有支持PnP的BIOS;二是要有支持PnP的操作系統,如Windows95/98/2000等。當脫離了PC機環(huán)境,這兩個(gè)條件皆不具備,PnP設備的應用受到了極大的限制。比如在DSP與ISA總線(xiàn)接口系統的設計中,一般ISA標準的非PnP設備有固定的系統資源,通過(guò)跳線(xiàn)或開(kāi)關(guān)手工設置完成后,上電即可對其編程,相應的ISA接口卡就會(huì )做出反應。而支持PnP的接口卡上面沒(méi)有開(kāi)關(guān)和跳線(xiàn),板上的資源需要用軟件配置;當同時(shí)使用多塊PnP接口卡時(shí),首先還必須進(jìn)行PnP卡的識別,然后才能對相應的接口卡進(jìn)行資源配置。在筆者以前所從事的科研任務(wù)中,需要DSP與ISA總線(xiàn)的網(wǎng)卡和聲卡進(jìn)行接口設計,所用的網(wǎng)卡和聲卡都不支持PnP規范。隨著(zhù)PnP技術(shù)的發(fā)展和普遍應用,如今在市場(chǎng)上很難見(jiàn)到不支持PnP的老ISA卡了,這就給筆者提出了新的問(wèn)題:如何在非PC硬件環(huán)境下使用PnP設備?本文以PnP網(wǎng)卡和聲卡為例,通過(guò)分析ISA總線(xiàn)PnP卡與微機的軟、硬件接口電路,用DSP芯片TMS320F206結合外圍電路模擬ISA時(shí)序,實(shí)現了DSP對PnP卡的自動(dòng)識別與配置,從而使ISA總線(xiàn)PnP卡在非PC環(huán)境下的應用變成現實(shí)。
本文引用地址:http://dyxdggzs.com/article/152561.htm1 ISA總線(xiàn)PnP協(xié)議簡(jiǎn)介[1]
PnP邏輯必須在上電后經(jīng)軟件使能才起作用。使能的過(guò)程是將一個(gè)預先定義好的序列(32次I/O寫(xiě))寫(xiě)入地址端口,地址端口的地址為279H,預先定義好的序列就稱(chēng)為PnP初始化關(guān)鍵字。這32個(gè)字節為:
6A,B5,DA,ED,F6,FB,7D,BE,DF,6F,37,1B,0D,86,C3,61,B0,58,2C,16,8B,45,A2,D1,E8,74, A,9D,CE,E7,73,39
當PnP卡檢測到上述32字節的初始化關(guān)鍵字后,所有的PnP卡都進(jìn)入了隔離狀態(tài),等待軟件一個(gè)一個(gè)地去識別并配置資源。PnP卡能被軟件識別的關(guān)鍵在于每個(gè)卡都有一個(gè)唯一的序列標識符。該序列標識符由9個(gè)字節共72位組成,其中前四個(gè)字節是生產(chǎn)廠(chǎng)家的標識,緊接的四個(gè)字節可以是任何值,只要系統中任意兩塊卡之間的這八個(gè)字節不完全相同即可。最后的一個(gè)字節是前八個(gè)字節的校驗和。軟件就是通過(guò)讀取每個(gè)卡的序列標識符來(lái)識別該PnP卡是由哪個(gè)公司生產(chǎn)的并正確調用該公司提供的驅動(dòng)程序。序列標識符是按位順序讀出的,圖1示出了序列標識符的構成及移位過(guò)程。對每個(gè)字節,協(xié)議規定移出的順序是bit[0],bit[1],直到bit[7]。
讀序列標識符的口地址為200H到3FFH之間的任意地址,只要該地址未被其它資源占用。設置該地址的過(guò)程見(jiàn)本文的第四部分。所有卡的讀地址皆相同,設將要讀的一塊卡的序列標識符的該位為“1”,而另一塊卡的相應位是“0”,如果這兩塊卡都來(lái)驅動(dòng)數據總線(xiàn),則不可避免地會(huì )產(chǎn)生沖突。PnP卡識別的關(guān)鍵技術(shù)也就在這里,即PnP上的硬件參與配合了該卡的識別判斷過(guò)程。每塊卡會(huì )根據自己序列標識符的每一位對I/O讀做出相應的反應。
如果該卡的序列標識符的當前位是“1”,那么該卡就驅動(dòng)數據總線(xiàn)為55H;如果該位是“0”,就驅動(dòng)數據總線(xiàn)為高阻,所有在高阻態(tài)的卡會(huì )去檢查數據總線(xiàn)是否有別的卡正在驅動(dòng)數據總線(xiàn)的最低兩位為“01”。第二次I/O讀時(shí),驅動(dòng)數據總線(xiàn)為55H的卡將驅動(dòng)數據總線(xiàn)為AAH,而在高阻態(tài)的卡會(huì )去看是否有別的卡正在驅動(dòng)數據總線(xiàn)的最低兩位為“10”。以上可以看出,每讀一位需要兩次I/O讀。
在高阻態(tài)的卡如果檢測到有別的卡在兩次讀周期中有效地驅動(dòng)了數據總線(xiàn),則它就會(huì )停止參與當前的識別狀態(tài),等在下一輪的識別過(guò)程中再參加。但是如果該卡沒(méi)有檢測到有別的卡去驅動(dòng)數據總線(xiàn),則它將繼
續參加這一輪的識別,并且利用新移出的一位來(lái)決定本身的響應。
上述移位和判別過(guò)程要進(jìn)行72次,最后有一塊卡保留下來(lái),該卡被指定了一個(gè)句柄,也不再參與下一輪的識別過(guò)程。同樣,在緊接的一輪識別過(guò)程中,又有一塊卡被識別并賦予一個(gè)新的句柄。重復上述過(guò)程,每塊卡都會(huì )被識別且擁有一個(gè)相應的句柄。
當系統中的所有PnP卡皆被正確識別后,就可以根據每個(gè)卡的句柄對相應的卡進(jìn)行資源配置工作了。這部分工作純粹是由PnP資源管理軟件來(lái)完成的。
2 DSP與ISA總線(xiàn)PnP卡的硬件接口技術(shù)
從前面的敘述可以看出,ISA總線(xiàn)PnP卡與非PnP卡對是否為PC硬件環(huán)境并不作要求,只需用戶(hù)所設計的總線(xiàn)符合ISA標準即可。以前針對非PnP的老ISA卡設計的ISA插槽同樣適用于PnP卡,僅在軟件上做相應的改動(dòng)即可。
3 DSP對PnP卡的識別技術(shù)
DSP對PnP卡的識別過(guò)程與微機對PnP卡的識別過(guò)程是一模一樣的,圖2給出了DSP對PnP卡的識別程序流程。
評論