LPC匯流排介紹

2021-07-31 02:34:11 字數 4153 閱讀 7967

在nb電路的架構框圖中,我們可以看到pch和ec之間通過lpc匯流排連線,在mb板上也會看到ec晶元旁邊有乙個jdebug的connector,其也與lpc匯流排相連,用於主機板診斷。下面將對lpc匯流排做一些簡單介紹,希望能夠幫助大家了解lpc的工作原理: 1、 lpc匯流排

lpc(low pin count)是基於 intel 標準的33 mhz 4 bit 並行匯流排協議(但目前nb系統中lpc的時鐘頻率為24mhz,可能是由於cpu平台的不斷發展導致的,後面會具體分析),用於代替以前的 isa 匯流排協議,但兩者效能相似,都用於連線南橋和super i/o晶元、flash bios、ec等裝置(由於目前ec晶元中整合了super i/o功能,所以我們在nb系統中看不到lpc匯流排上掛有super i/o晶元了)。

2、lpc匯流排的介面管腳

lpc匯流排由7個必選訊號和6個可選訊號組成,具體如下表所示:

表 3-2 lpc匯流排可選訊號列表

mb板上的jdebug connector有12pin,沒有連線lreset#訊號,只連線了其餘的6個必選訊號,為主板診斷提供介面,其中clk_debug由pch提供,24mhz:

ec與pch連線的lpc匯流排中除了包含7個必選訊號,還包含seeirq和clkrun#訊號。這裡需要注意的是jdebug的clk訊號與連線ec和pch的lpc匯流排中clk訊號並非同乙個訊號。pch提供了2個輸出24mhz時鐘的管腳,但每個時鐘只能驅動乙個lpc裝置,故ec和jdebug各連線乙個。

3.lpc匯流排的通訊協議

lpc匯流排支援多種事務型別的操作,例如io讀寫、記憶體讀寫、dma讀寫、firmware memory讀寫等。乙個cycle通常一下流程:  匯流排host拉低lframe#訊號,指示cycle開始,同時將相關資訊輸出到lad[3:0]

上  主機host根據cycle型別驅動相應的資訊到lad[3:0]上,比如當前操作的

事務型別、資料傳輸方向及size大小、訪問位址等。

 host根據cycle型別的不同選擇進行驅動資料或者是移交匯流排控制權。  外設獲取匯流排控制權後,將相應的資料驅動到lad[3:0]上。表示該cycle

完成。  外設釋放匯流排控制權。至此該cycle結束。

乙個典型cycle通常由start、cyctype+dir、addr、size(dma only)、channel(dma only)、tar、sync、data狀態組成,下圖是乙個典型的cycle示例流程,該cycle類似於io讀或記憶體讀操作中的cycle,data欄位由外設驅動傳送給host.

3.1 start

start用於指示乙個傳輸的開始或者結束。當frame#訊號有效時,所有的 外設都要監視lad[3:0]訊號,並在frame#訊號有效的最後乙個時鐘進入 start狀態。lad[3:0]的值編碼如下表

表4.1  start狀態 lad[3:0]定義

3.2 cycle type/direction(cyctype+dir)

該狀態由host驅動,對cycle的傳輸型別(memory、io、dma)以及傳輸方 向進行說明。lad[0]在該場中被保留,作為外設應該忽略。具體定義值見下表

表4.2 cyctype+dir狀態 lad[3:0]定義

3.3 size

該狀態表示傳輸資料data欄位的大小,由host驅動,當數資料為16或32bits,將分成多個data轉態傳送,size只存在於dma型別cycle中。而在io和記憶體型別cycle中,每個cycle只能傳輸8bits資料。size狀態lad[1:0]有效,lad[3:2]被忽略,lad[3:0]具體定義如下

表4.3 size狀態 lad[3:0]定義

3.4 addr/channel

addr狀態表示位址資訊,由host驅動。在io cycle中,位址資訊為16bits(4個時鐘週期);在記憶體 cycle中,位址資訊為32bits(8個時鐘);而在dma cycle中,則沒有addr狀態,取代的則是channel狀態(1個時鐘)。lad[2:0]表示channel的序號,其中channel 0~3為8bit channels,channel 5~7為16 bit channels, channel4一般被保留作為bus master 的請求訊號。addr的位址資訊先從高位傳送。 3.5 tar(turn-around)

tar用於交換匯流排的控制權(2個時鐘),當host要將匯流排轉交給外設時,tar由host驅動;當外設要將匯流排交還給host時,tar由外設驅動。tar兩個時鐘週期的第乙個時鐘週期有host或外設驅動,lad[3:0]=1111;第二時鐘週期host或外設則將lad[3:0]置為三態,但由於lad[3:0]管腳內部有弱上拉, lad[3:0]還都是處於高邏輯電平,所以tar的兩個時鐘lad[3:0]都為1111. 

3.6 sync

sync用來加入等待狀態,持續時間為1~n個時鐘週期。在target或 者dma傳輸操作時,sync由外設驅動;在bus master操作時,sync由host驅動。可能的組合見表

表4.4 sync狀態 lad[3:0]定義

當外設還沒準備好時,可以插入一些等待週期0101(短等待)或0110(長等待),等到ready狀態來到時,可以選擇驅動為「0000"(準備好),「1010」(錯誤)或者「1001"(ready more)。 4.6.1 sync timeout

匯流排上通常可能發生以下幾種潛在的錯誤:

1.當host發起乙個cycle(memory、io、dma)後,但是,匯流排上沒有裝置驅動sync場,當host檢測到3個連續的時鐘內都沒有響應時,便可以認為匯流排上沒有外設響應此次cycle操作。

2.host驅動乙個cycle(memory,io,dma),乙個裝置驅動了乙個有效的sync 場來插入等待(lad[3:0]=』0101b』或者』0110b』),但是卻不能完成該cycle,這種情況在外設鎖定的時候就發生了。此時,host應採取以下措施以解除匯流排死鎖:

●假如sync是』0101b』,那麼sync時鐘週期最多為8個。當host檢測到有多於8個時鐘週期的sync場,那麼host將取消這個cycle。

●假如sync是』0110b』,那麼這裡將沒有最大sync長度的限制。外設必 須設計有保護機制來完成這個cycle。

當由host來驅動sync時,因為延遲的原因,它可能不得不插入大量的等待週期,但外設不應該認為有timeout發生。

下圖為sync的週期過長引起timeout,此時lframe#會拉低4個lclk週期,進入start狀態,來終止這個cycle.

圖4.2  lframe終止cycle

4.7 data

data狀態占用兩個時鐘週期,用於傳送乙個位元組資料。當資料流向外設時,該場由host驅動;反之,當資料流向host時,則該場由外設驅動。在傳輸過程的時候,低4位最先被驅動到匯流排上,在第乙個時鐘,data[3:0]被驅動,第二個時鐘,data[7:4]被驅動。

4.8 各事務型別操作舉例

4、 lpc匯流排的測量(邏輯分析儀)

用邏輯分析儀tla5202測得lpc匯流排中lclk、lframe#、lad[3:0]訊號,下面為測量的幾組資料波形:

下面是測的是兩個cycle的總體波形圖,由於我在測試時外接的測試線過長,在cycle結束後的末期引入了串擾,圖中的黃色框圖中便為串擾訊號波形,理想狀態應該是lad[3:0]統一保持高邏輯,後面再統一變為低邏輯。這裡我們可以看到時鐘訊號lclk並不是一直輸出的,只有當cycle開始時,pch才會輸出lclk訊號,cycle結束後,若一段時間內不再有cycle傳輸,lclk便不再輸出。

圖5.1  cycle總體波形圖

下圖測試的是一組i/o read cycle,host要讀取io位址為0064h的資料,外設接管匯流排後,經過11個時鐘週期的長等待sync狀態(0110)後,變為ready狀態。sync為0000),然後外設將資料1ch傳送給host,驅動tar狀態(ff),將匯流排控制權交還給host,這個cycle結束。

下圖測試的是一組i/o write cycle,host向io位址025ah寫入資料93h,外設接管匯流排後,經過8個時鐘週期的長等待sync狀態(0110)後,變為ready狀態(sync為0000),表明外設接收到資料,之後外設驅動tar狀態(ff),將匯流排控制權交還給host,這個cycle結束。

下圖測試的是time out情況,host向io位址0080h寫入資料01h,然後host驅動tar狀態來移交縱向,但無外設驅動sync狀態來接管匯流排,lad一直處於弱上拉的高狀態,經過5個時鐘週期的無響應後,host拉低lframe#,保持4個lclk,進入start狀態,lad[3:0]=1111,則host將該cycle終結。



AMBA匯流排介紹

the advanced microcontroller bus architecture amba specification defines an on chip communications standard for designing high performance embedded mi...

AMBA匯流排介紹

the advanced microcontroller bus architecture amba specification defines an on chip communications standard for designing high performance embedded mi...

iic匯流排介紹

在i2c 匯流排中唯一出現的是被定義為起始s 和停止p 條件見圖5 的情況 其中一種情況是在scl 線是高電平時sda 線從高電平向低電平切換這個情況表示起始條件 當scl 是高電平時sda 線由低電平向高電平切換表示停止條件 起始和停止條件一般由主機產生匯流排在起始條件後被認為處於忙的狀態在停止條...