日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

      歡迎訪問(wèn) 生活随笔!

      生活随笔

      當(dāng)前位置: 首頁(yè) >

      PCI协议(一)

      發(fā)布時(shí)間:2024/3/12 58 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 PCI协议(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

      PCI協(xié)議

      • PCI基本協(xié)議
        • 什么是PCI?
        • PCI總線(xiàn)接口及傳輸協(xié)議
        • PCI Bus波形

      PCI基本協(xié)議

      什么是PCI?

      PCI是一種總線(xiàn)協(xié)議,目PCI-E的使用范圍很廣,而PCI是早于PCI-E的基本協(xié)議,很多主流的CPU架構(gòu)中同樣在使用。
      PCI的工作頻率有:33MHz,66MHz和133MHz三種;總線(xiàn)位寬有:32bit和64bit兩種,所以說(shuō)PCI可以支持不同的工作帶寬。

      PCI總線(xiàn)接口及傳輸協(xié)議

      接口名稱(chēng)信號(hào)類(lèi)型描述
      AD[31:0]/AD[63:0]t/s數(shù)據(jù)和地址線(xiàn) ,用作傳輸?shù)刂泛蛿?shù)據(jù),位寬為32bit或者64bit
      C/BE[3:0]/C/BE[7:0]t/s用于傳輸command和byte enable,由于地址線(xiàn)可能為64bit,所以BE需要支持8bit位寬
      PAR/PAR64t/s校驗(yàn)位,奇偶校驗(yàn)
      FRAME#s/t/s低有效,由高變低表示一組數(shù)據(jù)的傳輸開(kāi)始
      IRDY#s/t/s低有效,表示master準(zhǔn)備好傳輸數(shù)據(jù)
      TRDY#s/t/s低有效,表示slave準(zhǔn)備好發(fā)送數(shù)據(jù)
      STOP#s/t/s低有效,表示slave請(qǐng)求master停止當(dāng)前的transaction
      LOCK#s/t/s低有效,這個(gè)不是太懂。。
      DEVSEL#s/t/s作為input,表示device被選中,作為output表示device解碼之后發(fā)現(xiàn)自己被選中
      IDSELinput用作configuration write或者read的device的選擇信號(hào)
      PERR#s/t/s表示奇偶校驗(yàn)錯(cuò)誤
      SERR#o/d表示重大錯(cuò)誤,是open drain信號(hào)類(lèi)型
      REQ#t/s表示device向仲裁請(qǐng)求占用總線(xiàn)
      GNT#t/s表示device被仲裁授權(quán)

      信號(hào)中帶#表示低有效。

      對(duì)于open drain類(lèi)型的信號(hào):同一條總線(xiàn)上所有device共同驅(qū)動(dòng),只要有一個(gè)device有效,那么信號(hào)輸出為有效。
      t/s也就是三態(tài)信號(hào),沒(méi)有device驅(qū)動(dòng)時(shí)就是高阻狀態(tài)。
      s/t/s信號(hào)是sustained tri-state信號(hào),就是device釋放這個(gè)信號(hào)之前必須要先拉高為1再釋放為z。

      PCI Bus波形


      上圖是基本讀操作:
      2T:
      FRAME# 從1變0,AD傳輸讀地址,C/BE傳輸command;
      3T:
      turn_around, 此時(shí)C/BE為byte_enable,slave可以根據(jù)byte_enable準(zhǔn)備數(shù)據(jù);
      4T:
      IRDY,TRDY同時(shí)有效,表示slave將read data返回給了master.
      5T:
      IRDY有效,表示master還有數(shù)據(jù)需要讀取,TRDY無(wú)效,表示slave沒(méi)有準(zhǔn)備好數(shù)據(jù);
      6T:
      IRDY,TRDY同時(shí)有效,表示完成了1T數(shù)據(jù)的傳輸;
      7T:
      IRDY無(wú)效,TRDY有效,插入wait cycle;
      8T:
      FRAME# 無(wú)效,表示這是master傳輸?shù)淖詈?T數(shù)據(jù)。

      turn_around: 同一條bus可能被很多device驅(qū)動(dòng),turn_around 就是用于不同device之間的轉(zhuǎn)換。
      wait :IRDY或TRDY無(wú)效,傳輸暫停。
      可預(yù)取:可預(yù)取的概念,對(duì)讀transaction的影響很大,第一:什么叫可預(yù)取?可預(yù)取就是表示當(dāng)前的這個(gè)存儲(chǔ)區(qū)域多次的讀操作不會(huì)造成不可挽回的影響。比方說(shuō)FIFO,如果我需要讀1個(gè)data,device讀3個(gè)data,那么就會(huì)造成2個(gè)data的損失。第二:可預(yù)取對(duì)讀transaction的影響?首先要明確,pci協(xié)議發(fā)起一筆交易,只提供了讀地址并未提供讀長(zhǎng)度,也就是說(shuō)slave并不知道m(xù)aster要讀多少數(shù)據(jù)。針對(duì)不可預(yù)取的區(qū)域,每次slave都只讀一個(gè)data(并且在BE信息有效后去讀), 如果master沒(méi)有將Frame置為1(表示還有數(shù)據(jù)需要傳輸),slave就會(huì)插入wait,之后再去讀address+1處的數(shù)據(jù),就會(huì)大大降低讀數(shù)據(jù)的速度。如下圖。


      上圖是基本寫(xiě)操作:
      2T:
      FRAME# 從1變0,AD傳輸讀地址,C/BE傳輸command;
      3T:
      傳輸?shù)?T數(shù)據(jù);
      4T:
      傳輸?shù)?T數(shù)據(jù);
      5T:
      wait state;
      6T:
      wait state;
      7T:
      wait state;
      8T:
      FRAME# 無(wú)效,表示這是master傳輸?shù)淖詈?T數(shù)據(jù)。

      注意以下問(wèn)題:
      master需要傳輸3T數(shù)據(jù),那么在5T時(shí),為什么沒(méi)有將FRAME#拉高表示還剩最后1T數(shù)據(jù)?
      這是因?yàn)?T時(shí),IRDY無(wú)效,如果FRAME也無(wú)效,那么總線(xiàn)會(huì)進(jìn)入IDLE狀態(tài),仲裁可能會(huì)在下一T將控制權(quán)交給其他的device.

      在5T時(shí),AD線(xiàn)的data還未準(zhǔn)備好,但是C/BE線(xiàn)上的byte_enable以及準(zhǔn)備好了,這是因?yàn)閟pec中規(guī)定即使master要進(jìn)入wait狀態(tài),也不能延遲byte_enable的輸出。

      后續(xù)還會(huì)整理PCI中的產(chǎn)銷(xiāo)模型,報(bào)錯(cuò)機(jī)制和配置空間等。

      總結(jié)

      以上是生活随笔為你收集整理的PCI协议(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

      如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。