日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PCI协议(一)

發布時間:2024/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PCI协议(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PCI協議

  • PCI基本協議
    • 什么是PCI?
    • PCI總線接口及傳輸協議
    • PCI Bus波形

PCI基本協議

什么是PCI?

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

PCI總線接口及傳輸協議

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

信號中帶#表示低有效。

對于open drain類型的信號:同一條總線上所有device共同驅動,只要有一個device有效,那么信號輸出為有效。
t/s也就是三態信號,沒有device驅動時就是高阻狀態。
s/t/s信號是sustained tri-state信號,就是device釋放這個信號之前必須要先拉高為1再釋放為z。

PCI Bus波形


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

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


上圖是基本寫操作:
2T:
FRAME# 從1變0,AD傳輸讀地址,C/BE傳輸command;
3T:
傳輸第1T數據;
4T:
傳輸第2T數據;
5T:
wait state;
6T:
wait state;
7T:
wait state;
8T:
FRAME# 無效,表示這是master傳輸的最后1T數據。

注意以下問題:
master需要傳輸3T數據,那么在5T時,為什么沒有將FRAME#拉高表示還剩最后1T數據?
這是因為5T時,IRDY無效,如果FRAME也無效,那么總線會進入IDLE狀態,仲裁可能會在下一T將控制權交給其他的device.

在5T時,AD線的data還未準備好,但是C/BE線上的byte_enable以及準備好了,這是因為spec中規定即使master要進入wait狀態,也不能延遲byte_enable的輸出。

后續還會整理PCI中的產銷模型,報錯機制和配置空間等。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。