四個引腳是低電平有效
發布時間:2020/8/13 23:05:38 訪問次數:1221
PCI總線根據數據位的寬度有32位和64位之分,64位的數據線與32位是兼容的。PC機中常見的是32位PCI總線,它的有用引腳總數是110個,可以分成3組。第一組是基本功能信號線,包括32位共享數據地址線AD〔00..31〕、接口控制線、仲裁線、時鐘線、系統復位線、中斷線;第二組是附加功能信號線,包括錯誤報告線、cache功能支持線、JTAG邊界掃描線;第三組是電源線,包括設備耗電量標識線、3.3V電源線(12根)、5V電源線(13根)、地線(22根)。
因為Realtek8029不具備PCI的附加功能信號線所支持的cache功能和JTAG邊界掃描功能,同時雖然它具有奇偶校驗錯誤報告功能引腳,但該腳可以懸空不用。所以,設計時只需考慮第一組功能信號線的連接即可。
PCI總線是多設備共享的,由于PC機里可以有多個PCI設備,所以需要使用仲裁器;其次,PCI設備有主設備和從設備之分,主設備可以發起PCI數據的傳送?從設備只能被動地響應主設備的操作以對讀操作和寫操作做出響應。PCI的仲裁引腳是REQ和GNT,分別為請求線和授權線,而且只有PCI主設備有這兩個引腳。一般情況下,REQ通常和GNT成對地連到仲裁器,而設備與設備的REQ和GNT通常是互不相連的。
PCI總線的仲裁過程是這樣的:PCI主設備把REQ電平拉低以表示向仲裁器請求占用總線。經仲裁獲準后,仲裁器把這個設備的GNT電平拉低以表示請求獲準,此后該設備便可以使用總線了。當它不再使用總線時,應使REQ信號變為高電平?仲裁器就不再給它分配總線資源。在本系統中,TM1300是PCI主設備,而Realtek8029是PCI從設備。由于它們不存在共享總線的問題,所以不需要仲裁器,而只是簡單地把REQ和GNT短接即可,這就相當于TM1300自己給自己授權。
PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引腳的處理
上述四個引腳均是低電平有效,因此需要接上拉電阻,以保證在設備未驅動該引腳時處于穩定的無效狀態,上拉電阻的阻值在1kΩ~10kΩ范圍內,阻值越小,則將該信號驅動為有效的時間越短,但太小又會導致電流過大,要權衡考慮,本設計選用4.7kΩ。
上述三點對脫機情況下PCI設備的互連具有較普遍的參考意義,本設計還有以下比較特殊的幾點:
應將TM1300的PCI,INTA引腳配置為輸入,以便接收Realtek8029的中斷;
PCI時鐘由TM1300提供;
Realtek8029的復位信號也就是TM1300的復位信號,該信號由外部電路提供;
TM1300的PCI STOP、 PCI SERR引腳懸空,表示Realtek8029不具備相應的附加功能。另外,TM1300的PCI INTB、PCI INTC、PCI INTD引腳可以用作用戶中斷。
接口設計的軟件結構框其中TM1300運行于pSOS,它是一個簡單的實時多任務嵌入式操作系統,帶有pNA+網絡組件,其pNA+相當于TCP/IP協議棧的擴展,它向上可提供應用程序編程的socket接口,向下可定義一個與網絡接口層交互的接口,其中包括8個函數,分別是:ni_init(接口芯片初始化)、ni_broad-cast(發送廣播分組)、ni_send(發送普通分組)、ni_getpkb(申請發送緩沖區)、ni_retpkb(歸還接收緩沖區)、ni_ioctl(I/O控制操作)、ni_pool(統計量查詢)、Announce(網絡接口驅動調用它把接收到的數據包提交給pSOS)。其中網絡接口層在本應用中就是Realtek8029的驅動程序,它通過硬件抽象層來驅動Realtek8029(硬件抽象層是PCI總線的配置讀寫和I/O讀寫指令集的總稱)。
軟件執行的流程大致是:系統首先啟動pSOS,并由它加載網絡接口驅動程序,然后調用驅動程序的ni_init函數,同時初始化Realtek8029的PCI配置空間并設置Realtek8029的工作參數,之后啟動用戶任務。在這里,用戶任務為H.263編碼進程。它對VI口讀入的源圖像進行壓縮編碼后,將調用socket的接口函數sendto(sendto是UDP套接口專用的發送函數),然后把碼流發送給pSOS由pSOS根據UDP協議進行封裝后,再調用ni_send函數,并由ni_send完成數據包從系統主內存到Realtek8029片上RAM的拷貝,然后啟動Realtek8029發送數據。在接收情況下,Realtek8029收到一個完整的數據包后會用中斷通知CPU,然后由CPU執行中斷服務程序。當中斷服務程序將數據包從Realtek8029片上RAM中拷貝到系統的主內存后,系統將調用Announce函數并把數據塊的指針、數據長度和其它信息提交pSOS,最后由pSOS將數據包沿協議棧一層層上傳并作出相應的處理。
軟件的設計和pSOS操作系統的關系比較密切,限于篇幅,本文不對pSOS作詳細介紹,。PCI配置空間的配置過程,這部分對于類似的設計有較普遍的參考意義。PCI配置空間有64個字節,PCI片內的這些寄存器存儲了該芯片的廠商號、設備號、設備類型等重要代碼,還包括命令寄存器、基地址寄存器等控制其總線行為的寄存器,它們必須在設備初始化時正確配置,否則設備不能工作。
對Realtek8029 PCI空間的配置需要三個步驟:
首先是掃描總線,這一步的目的是找到Real-tek8029的配置地址,直觀地講,就是找到它的PCI_IDSEL引腳和哪根AD線相連,因為后續的配置寫要根據這個地址來尋址。掃描總線時,要對AD〔11〕到AD〔31〕每根線進行一次掃描,如果哪根AD線連接了一個PCI設備的PCI IDSEL引腳,那么用配置讀函數讀取PCI配置空間的0號寄存器時,應該返回該設備的設備和廠商代碼,如果這根線實際未連接設備,則返回值是0。已知Realtek8029的設備和廠商代碼是“0x802910ec”,如果返回值與之相同,說明找到了Realtek8029,這時要記下這根AD線的序號。在硬件上把Realtek8029的PCI IDSEL和AD〔20〕相連,則掃描到的序號就應該是“20”。
用配置寫函數配置I/O讀寫使能,即在command寄存器中寫入“0x1”。
用配置寫函數配置I/O地址,也就是在I/OBaseAdddress寄存器寫入分配給該設備的I/O地址(例如“0xe400”)。具體程序流程圖如圖4所示。
(素材來源:21ic.如涉版權請聯系刪除。特別感謝)
PCI總線根據數據位的寬度有32位和64位之分,64位的數據線與32位是兼容的。PC機中常見的是32位PCI總線,它的有用引腳總數是110個,可以分成3組。第一組是基本功能信號線,包括32位共享數據地址線AD〔00..31〕、接口控制線、仲裁線、時鐘線、系統復位線、中斷線;第二組是附加功能信號線,包括錯誤報告線、cache功能支持線、JTAG邊界掃描線;第三組是電源線,包括設備耗電量標識線、3.3V電源線(12根)、5V電源線(13根)、地線(22根)。
因為Realtek8029不具備PCI的附加功能信號線所支持的cache功能和JTAG邊界掃描功能,同時雖然它具有奇偶校驗錯誤報告功能引腳,但該腳可以懸空不用。所以,設計時只需考慮第一組功能信號線的連接即可。
PCI總線是多設備共享的,由于PC機里可以有多個PCI設備,所以需要使用仲裁器;其次,PCI設備有主設備和從設備之分,主設備可以發起PCI數據的傳送?從設備只能被動地響應主設備的操作以對讀操作和寫操作做出響應。PCI的仲裁引腳是REQ和GNT,分別為請求線和授權線,而且只有PCI主設備有這兩個引腳。一般情況下,REQ通常和GNT成對地連到仲裁器,而設備與設備的REQ和GNT通常是互不相連的。
PCI總線的仲裁過程是這樣的:PCI主設備把REQ電平拉低以表示向仲裁器請求占用總線。經仲裁獲準后,仲裁器把這個設備的GNT電平拉低以表示請求獲準,此后該設備便可以使用總線了。當它不再使用總線時,應使REQ信號變為高電平?仲裁器就不再給它分配總線資源。在本系統中,TM1300是PCI主設備,而Realtek8029是PCI從設備。由于它們不存在共享總線的問題,所以不需要仲裁器,而只是簡單地把REQ和GNT短接即可,這就相當于TM1300自己給自己授權。
PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引腳的處理
上述四個引腳均是低電平有效,因此需要接上拉電阻,以保證在設備未驅動該引腳時處于穩定的無效狀態,上拉電阻的阻值在1kΩ~10kΩ范圍內,阻值越小,則將該信號驅動為有效的時間越短,但太小又會導致電流過大,要權衡考慮,本設計選用4.7kΩ。
上述三點對脫機情況下PCI設備的互連具有較普遍的參考意義,本設計還有以下比較特殊的幾點:
應將TM1300的PCI,INTA引腳配置為輸入,以便接收Realtek8029的中斷;
PCI時鐘由TM1300提供;
Realtek8029的復位信號也就是TM1300的復位信號,該信號由外部電路提供;
TM1300的PCI STOP、 PCI SERR引腳懸空,表示Realtek8029不具備相應的附加功能。另外,TM1300的PCI INTB、PCI INTC、PCI INTD引腳可以用作用戶中斷。
接口設計的軟件結構框其中TM1300運行于pSOS,它是一個簡單的實時多任務嵌入式操作系統,帶有pNA+網絡組件,其pNA+相當于TCP/IP協議棧的擴展,它向上可提供應用程序編程的socket接口,向下可定義一個與網絡接口層交互的接口,其中包括8個函數,分別是:ni_init(接口芯片初始化)、ni_broad-cast(發送廣播分組)、ni_send(發送普通分組)、ni_getpkb(申請發送緩沖區)、ni_retpkb(歸還接收緩沖區)、ni_ioctl(I/O控制操作)、ni_pool(統計量查詢)、Announce(網絡接口驅動調用它把接收到的數據包提交給pSOS)。其中網絡接口層在本應用中就是Realtek8029的驅動程序,它通過硬件抽象層來驅動Realtek8029(硬件抽象層是PCI總線的配置讀寫和I/O讀寫指令集的總稱)。
軟件執行的流程大致是:系統首先啟動pSOS,并由它加載網絡接口驅動程序,然后調用驅動程序的ni_init函數,同時初始化Realtek8029的PCI配置空間并設置Realtek8029的工作參數,之后啟動用戶任務。在這里,用戶任務為H.263編碼進程。它對VI口讀入的源圖像進行壓縮編碼后,將調用socket的接口函數sendto(sendto是UDP套接口專用的發送函數),然后把碼流發送給pSOS由pSOS根據UDP協議進行封裝后,再調用ni_send函數,并由ni_send完成數據包從系統主內存到Realtek8029片上RAM的拷貝,然后啟動Realtek8029發送數據。在接收情況下,Realtek8029收到一個完整的數據包后會用中斷通知CPU,然后由CPU執行中斷服務程序。當中斷服務程序將數據包從Realtek8029片上RAM中拷貝到系統的主內存后,系統將調用Announce函數并把數據塊的指針、數據長度和其它信息提交pSOS,最后由pSOS將數據包沿協議棧一層層上傳并作出相應的處理。
軟件的設計和pSOS操作系統的關系比較密切,限于篇幅,本文不對pSOS作詳細介紹,。PCI配置空間的配置過程,這部分對于類似的設計有較普遍的參考意義。PCI配置空間有64個字節,PCI片內的這些寄存器存儲了該芯片的廠商號、設備號、設備類型等重要代碼,還包括命令寄存器、基地址寄存器等控制其總線行為的寄存器,它們必須在設備初始化時正確配置,否則設備不能工作。
對Realtek8029 PCI空間的配置需要三個步驟:
首先是掃描總線,這一步的目的是找到Real-tek8029的配置地址,直觀地講,就是找到它的PCI_IDSEL引腳和哪根AD線相連,因為后續的配置寫要根據這個地址來尋址。掃描總線時,要對AD〔11〕到AD〔31〕每根線進行一次掃描,如果哪根AD線連接了一個PCI設備的PCI IDSEL引腳,那么用配置讀函數讀取PCI配置空間的0號寄存器時,應該返回該設備的設備和廠商代碼,如果這根線實際未連接設備,則返回值是0。已知Realtek8029的設備和廠商代碼是“0x802910ec”,如果返回值與之相同,說明找到了Realtek8029,這時要記下這根AD線的序號。在硬件上把Realtek8029的PCI IDSEL和AD〔20〕相連,則掃描到的序號就應該是“20”。
用配置寫函數配置I/O讀寫使能,即在command寄存器中寫入“0x1”。
用配置寫函數配置I/O地址,也就是在I/OBaseAdddress寄存器寫入分配給該設備的I/O地址(例如“0xe400”)。具體程序流程圖如圖4所示。
(素材來源:21ic.如涉版權請聯系刪除。特別感謝)
上一篇:字符狀態的輸出和轉換
上一篇:總線的共享地址和數據線