雙口RAM在PCI總線(xiàn)與AVR接口設計中的應用
摘要:為了提高PCI總線(xiàn)與AVR單片機之間的數據傳輸速度,利用雙口RAM通過(guò)共享的方式實(shí)現PCI總線(xiàn)與AVR單片機之間的高速數據交換。利用有限狀態(tài)機方法將PCI接口芯片局部端邏輯轉換為雙口RAM讀寫(xiě)控制信號和地址數據信號,并通過(guò)仿真工具M(jìn)odelsim Se對接口電路進(jìn)行了驗證,得出的仿真波形符合要求;利用乒乓操作方法實(shí)現PCI接口芯片和AVR單片機交替讀/寫(xiě)數據存儲區,有效提高了PCI總線(xiàn)與AVR單片機之間的數據傳輸速度。實(shí)踐證明該設計方法是解決高低速設備的傳輸瓶頸問(wèn)題的有效途徑。
關(guān)鍵詞:雙口RAM;AVR;CPLD;狀態(tài)機;乒乓操作
由于PCI總線(xiàn)工作在頻率33 MHz,AVR單片機工作在16 MHz,它們之間時(shí)鐘不同步,要進(jìn)行有效通信,必須在它們中間設置數據緩沖區,作為雙方交換數據的單元。雙口RAM正好解決了這個(gè)問(wèn)題,它既作為PCI總線(xiàn)的局部空間又作為AVR單片機的外部擴充存儲器,通過(guò)交替讀/寫(xiě)達到交換數據的目的。下面以PLX公司的PCI總線(xiàn)接口芯片PCI9052和IDT公司的雙口RAMIDT7006為例,介紹實(shí)現數據交換的方法。
1 PCI9052和IDT7006
1.1 PCI9052簡(jiǎn)介
PCI9052是PLX公司為擴展適配板卡推出的低價(jià)位PCI總線(xiàn)目標接口芯片,低功耗,符合PCI V2.1規范,它的本地總線(xiàn)(Local Bus)可以通過(guò)編程設置為8/16/32位的復用或非復用總線(xiàn)。其主要性能特點(diǎn)如下:
(1)異步操作。PCI9052的Local Bus與PCI總線(xiàn)的時(shí)鐘相互獨立運行,兩總線(xiàn)的異步運行方便了高、低速設備的兼容。Local Bus的時(shí)鐘頻率范圍為0~40 MHz,TTL電平;PCI的時(shí)鐘頻率范圍0~33MHz。
(2)可編程的局部總線(xiàn)配置。PCI9052支持8位、16位或32位Local Bus,它們是復用或非復用。PCI9052有4個(gè)字節允許信號(LBE[3:0]#),26條地址線(xiàn)(LA[27:2])和32位、16位、8位數據線(xiàn)(LAD[31:0])。
(3)直接從(目標)數據傳送模式。PCI9052具有雙向FIFO,可用于零等待狀態(tài)突發(fā)操作,支持從PCI總線(xiàn)到Local Bus的存儲器映射空間的突發(fā)傳送和I/O訪(fǎng)問(wèn)。Local Bus能被設置成突發(fā)或持續單周期。
(4)4個(gè)局部片選。PCI9052提供4個(gè)片選,每個(gè)片選的基地址和范圍被E2PROM或主機編程成唯一的。
(5)5個(gè)局部地址空間。PCI9052提供5個(gè)局部地址空間,每個(gè)局部地址空間的基地址和范圍可以被E2PROM或主機編程成惟一的。
1.2 IDT7006簡(jiǎn)介
IDT7006是美國IDT公司開(kāi)發(fā)研制的高速16K×8 B雙口靜態(tài)RAM。該雙口RAM提供兩個(gè)獨立的具有控制、地址和I/O引腳的端口。其主要性能特點(diǎn)如下:可同時(shí)訪(fǎng)問(wèn)雙端口同一存儲器空間;高速存儲訪(fǎng)問(wèn),訪(fǎng)問(wèn)速度最高可達到15 ns;低功耗運行;雙片選,允許不需要外部邏輯的深度擴展;使用級聯(lián)和主從選擇引腳可以擴展IDT7006的數據總線(xiàn)寬度到16位或更寬;具有硬件仲裁方式、中斷仲裁方式和信號燈仲裁方式,來(lái)防止訪(fǎng)問(wèn)沖突。
2 PCI9052和IDT7006的時(shí)序轉換
為將PCI9052的局部信號邏輯轉換為雙口RAMIDT7006的讀/寫(xiě)控制信號邏輯,采用有限狀態(tài)機的方法來(lái)實(shí)現它們之間的邏輯轉換。在可編程器件設計中,狀態(tài)機的設計方法是應用最廣泛的設計方法之一,它是一種簡(jiǎn)單、結構清晰、設計靈活的方法,易于建立、理解和維護,特別應用在具有大量狀態(tài)轉移和復雜時(shí)序控制的系統中,更顯其優(yōu)勢。設計中用VerilogHDL描述的狀態(tài)機來(lái)實(shí)現接口的時(shí)序轉換。
2.1 硬件連接
硬件上采用可編程邏輯器件MAXⅡ(EPM240)來(lái)實(shí)現PCI9052和IDT7006的接口電路,PCI9052采取非復用、8 b局部總線(xiàn)寬度和單周期讀/寫(xiě)方式,信號連接關(guān)系如圖1所示。
2.2 有限狀態(tài)機
PCI9052局部總線(xiàn)有4個(gè)基本的狀態(tài):空閑狀態(tài)、地址狀態(tài)、數據/等待狀態(tài)和恢復狀態(tài)。一旦局部總線(xiàn)的主設備擁有總線(xiàn)并需要開(kāi)始一個(gè)總線(xiàn)訪(fǎng)問(wèn),則進(jìn)入地址狀態(tài),有效,此時(shí)一個(gè)有效的地址出現在地址/數據總線(xiàn)上;數據傳輸是在數據/等待狀態(tài)進(jìn)行的,
或者內部等待產(chǎn)生器用來(lái)在此狀態(tài)插入等待狀態(tài);
在最后的數據/等待狀態(tài)有效,用來(lái)申明最后的數據傳輸;在地址/數據復用的模式下,所有數據傳輸完畢后,總線(xiàn)會(huì )進(jìn)入恢復狀態(tài);隨后總線(xiàn)回到空閑狀態(tài),等待下一次的總線(xiàn)訪(fǎng)問(wèn)。
整個(gè)狀態(tài)機分為外狀態(tài)機和內狀態(tài)機兩個(gè)大的部分,外狀態(tài)機識別PCI9052的讀周期和寫(xiě)周期,并轉移到相應的內部狀態(tài)機,然后內部狀態(tài)機再進(jìn)行讀/寫(xiě)的內部狀態(tài)轉移,通過(guò)不同的狀態(tài)輸出不同的雙口RAM讀/寫(xiě)控制等信號,達到時(shí)序轉換的目的。外狀態(tài)機狀態(tài)轉移圖如圖2所示。
評論