<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DSP與ISA總線PnP卡的接口技術(shù)研究

          DSP與ISA總線PnP卡的接口技術(shù)研究

          作者: 時間:2009-03-26 來源:網(wǎng)絡(luò) 收藏

          為解決多個設(shè)備共享系統(tǒng)時所帶來的系統(tǒng)底層資源的分配和再分配問題,Microsoft公司在1993年以后相繼公布了即插即用(Plug-and-Play)規(guī)范,包括的類型有、E、PCMCIA、PCI、VESA及SCSI等。提供了對于底層硬件資源包括I/O端口、IRQ、DMA通道以及內(nèi)存等的智能管理,免除了用戶因安裝新的硬件設(shè)備而帶來的煩惱。不需要手工改變設(shè)備的開關(guān)或跳線,給大家?guī)砹撕锰?但也給在非PC硬件平臺上的應(yīng)用帶來了麻煩。原因在于PnP的實現(xiàn)必須具備兩個條件:一是PC機主板要有支持PnP的BIOS;二是要有支持PnP的操作系統(tǒng),如Windows95/98/2000等。當(dāng)脫離了PC機環(huán)境,這兩個條件皆不具備,PnP設(shè)備的應(yīng)用受到了極大的限制。比如在總線系統(tǒng)的設(shè)計中,一般ISA標(biāo)準(zhǔn)的非PnP設(shè)備有固定的系統(tǒng)資源,通過跳線或開關(guān)手工設(shè)置完成后,上電即可對其編程,相應(yīng)的ISA卡就會做出反應(yīng)。而支持PnP的卡上面沒有開關(guān)和跳線,板上的資源需要用軟件;當(dāng)同時使用多塊PnP接口卡時,首先還必須進行PnP卡的,然后才能對相應(yīng)的接口卡進行資源。在筆者以前所從事的科研任務(wù)中,需要的網(wǎng)卡和聲卡進行接口設(shè)計,所用的網(wǎng)卡和聲卡都不支持PnP規(guī)范。隨著PnP的發(fā)展和普遍應(yīng)用,如今在市場上很難見到不支持PnP的老ISA卡了,這就給筆者提出了新的問題:如何在非PC硬件環(huán)境下使用PnP設(shè)備?本文以PnP網(wǎng)卡和聲卡為例,通過分析PnP卡與微機的軟、硬件接口電路,用芯片TMS320F206結(jié)合外圍電路模擬ISA時序,實現(xiàn)了DSP對PnP卡的自動,從而使PnP卡在非PC環(huán)境下的應(yīng)用變成現(xiàn)實。

          本文引用地址:http://www.ex-cimer.com/article/152561.htm

          1 ISA總線PnP協(xié)議簡介[1]

            PnP邏輯必須在上電后經(jīng)軟件使能才起作用。使能的過程是將一個預(yù)先定義好的序列(32次I/O寫)寫入地址端口,地址端口的地址為279H,預(yù)先定義好的序列就稱為PnP初始化關(guān)鍵字。這32個字節(jié)為:

            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

            當(dāng)PnP卡檢測到上述32字節(jié)的初始化關(guān)鍵字后,所有的PnP卡都進入了隔離狀態(tài),等待軟件一個一個地去并配置資源。PnP卡能被軟件識別的關(guān)鍵在于每個卡都有一個唯一的序列標(biāo)識符。該序列標(biāo)識符由9個字節(jié)共72位組成,其中前四個字節(jié)是生產(chǎn)廠家的標(biāo)識,緊接的四個字節(jié)可以是任何值,只要系統(tǒng)中任意兩塊卡之間的這八個字節(jié)不完全相同即可。最后的一個字節(jié)是前八個字節(jié)的校驗和。軟件就是通過讀取每個卡的序列標(biāo)識符來識別該PnP卡是由哪個公司生產(chǎn)的并正確調(diào)用該公司提供的驅(qū)動程序。序列標(biāo)識符是按位順序讀出的,圖1示出了序列標(biāo)識符的構(gòu)成及移位過程。對每個字節(jié),協(xié)議規(guī)定移出的順序是bit[0],bit[1],直到bit[7]。

          讀序列標(biāo)識符的口地址為200H到3FFH之間的任意地址,只要該地址未被其它資源占用。設(shè)置該地址的過程見本文的第四部分。所有卡的讀地址皆相同,設(shè)將要讀的一塊卡的序列標(biāo)識符的該位為“1”,而另一塊卡的相應(yīng)位是“0”,如果這兩塊卡都來驅(qū)動數(shù)據(jù)總線,則不可避免地會產(chǎn)生沖突。PnP卡識別的關(guān)鍵也就在這里,即PnP上的硬件參與配合了該卡的識別判斷過程。每塊卡會根據(jù)自己序列標(biāo)識符的每一位對I/O讀做出相應(yīng)的反應(yīng)。

            如果該卡的序列標(biāo)識符的當(dāng)前位是“1”,那么該卡就驅(qū)動數(shù)據(jù)總線為55H;如果該位是“0”,就驅(qū)動數(shù)據(jù)總線為高阻,所有在高阻態(tài)的卡會去檢查數(shù)據(jù)總線是否有別的卡正在驅(qū)動數(shù)據(jù)總線的最低兩位為“01”。第二次I/O讀時,驅(qū)動數(shù)據(jù)總線為55H的卡將驅(qū)動數(shù)據(jù)總線為AAH,而在高阻態(tài)的卡會去看是否有別的卡正在驅(qū)動數(shù)據(jù)總線的最低兩位為“10”。以上可以看出,每讀一位需要兩次I/O讀。

            在高阻態(tài)的卡如果檢測到有別的卡在兩次讀周期中有效地驅(qū)動了數(shù)據(jù)總線,則它就會停止參與當(dāng)前的識別狀態(tài),等在下一輪的識別過程中再參加。但是如果該卡沒有檢測到有別的卡去驅(qū)動數(shù)據(jù)總線,則它將繼

          續(xù)參加這一輪的識別,并且利用新移出的一位來決定本身的響應(yīng)。

            上述移位和判別過程要進行72次,最后有一塊卡保留下來,該卡被指定了一個句柄,也不再參與下一輪的識別過程。同樣,在緊接的一輪識別過程中,又有一塊卡被識別并賦予一個新的句柄。重復(fù)上述過程,每塊卡都會被識別且擁有一個相應(yīng)的句柄。

            當(dāng)系統(tǒng)中的所有PnP卡皆被正確識別后,就可以根據(jù)每個卡的句柄對相應(yīng)的卡進行資源配置工作了。這部分工作純粹是由PnP資源管理軟件來完成的。

          2 DSP與ISA總線PnP卡的硬件接口技術(shù)

            從前面的敘述可以看出,ISA總線PnP卡與非PnP卡對是否為PC硬件環(huán)境并不作要求,只需用戶所設(shè)計的總線符合ISA標(biāo)準(zhǔn)即可。以前針對非PnP的老ISA卡設(shè)計的ISA插槽同樣適用于PnP卡,僅在軟件上做相應(yīng)的改動即可。

          3 DSP對PnP卡的識別技術(shù)

            DSP對PnP卡的識別過程與微機對PnP卡的識別過程是一模一樣的,圖2給出了DSP對PnP卡的識別程序流程。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();