《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于EPLD技術(shù)的PCI總線接口設(shè)計(jì)

基于EPLD技術(shù)的PCI總線接口設(shè)計(jì)

2009-02-20
作者:王魯平 李 飚

  摘? 要: 分析了PCI總線接口信號(hào)及時(shí)序,,利用ALTERA公司的EPLD器件EPM7128 設(shè)計(jì)和實(shí)現(xiàn)了PCI總線接口,。

  關(guān)鍵詞: PCI總線? 接口? EPLD器件? AHDL語(yǔ)言

?

  PCI總線自其問(wèn)世以來(lái),,以其諸多優(yōu)點(diǎn),,在當(dāng)今的計(jì)算機(jī)系統(tǒng)中得到了廣泛應(yīng)用,已經(jīng)成為計(jì)算機(jī)設(shè)備的標(biāo)準(zhǔn)接口。本文在認(rèn)真分析PCI總線的接口信號(hào)和接口時(shí)序的基礎(chǔ)上,利用EPLD器件設(shè)計(jì)實(shí)現(xiàn)了PCI總線接口。由于EPLD器件支持在線編程,,所以可以根據(jù)使用要求將PCI總線接口配置成即插即用和非即插即用兩種形式,這種設(shè)計(jì)方式結(jié)構(gòu)簡(jiǎn)單,、集成度高,,具有較高的實(shí)用價(jià)值。

1 PCI總線概述

  局部總線特別是PCI總線的發(fā)展,,打破了PC數(shù)據(jù)傳送的瓶頸,。傳統(tǒng)的PC總線結(jié)構(gòu)不能滿(mǎn)足圖形系統(tǒng)和大型應(yīng)用程序的要求,所以在此基礎(chǔ)上產(chǎn)生和發(fā)展了局部總線,。它將計(jì)算機(jī)外設(shè)從I/O總線上移下來(lái),,使它們更靠近系統(tǒng)處理器,從而提高了處理器和外設(shè)之間的傳送速度,。

  從設(shè)備的PCI接口至少需要47條信號(hào)線,,而主控設(shè)備的PCI接口至少需要49條信號(hào)線,包括數(shù)據(jù)/地址復(fù)用總線,、接口控制線,、仲裁、總線命令以及系統(tǒng)線等,。

  PCI總線在進(jìn)行數(shù)據(jù)傳輸時(shí),,地址節(jié)拍、總線命令在C/BE[0..3]上由主機(jī)輸出,,用于說(shuō)明當(dāng)前PCI總線周期需要執(zhí)行的功能,。其命令如表1所示。

?

2 PCI總線協(xié)議和讀寫(xiě)時(shí)序

  PCI總線的傳輸機(jī)制是成組數(shù)據(jù)猝發(fā)傳輸,,每組數(shù)據(jù)由一個(gè)地址脈沖和一個(gè)或幾個(gè)數(shù)據(jù)脈沖組成。一般基本的PCI傳輸由三個(gè)信號(hào)控制:

  信號(hào)由PCI主控設(shè)備驅(qū)動(dòng),,表示總線操作的開(kāi)始和結(jié)束;

  信號(hào)由PCI主控設(shè)備驅(qū)動(dòng),,在讀周期表示主控設(shè)備準(zhǔn)備接收數(shù)據(jù),在寫(xiě)周期表示AD[31..0]上數(shù)據(jù)有效;

  信號(hào)由PCI從設(shè)備驅(qū)動(dòng),,在讀周期,,表示從設(shè)備準(zhǔn)備好傳輸數(shù)據(jù),在寫(xiě)周期表示從設(shè)備準(zhǔn)備好接收數(shù)據(jù),。

當(dāng)數(shù)據(jù)有效時(shí),,數(shù)據(jù)源設(shè)備需要無(wú)條件地設(shè)置XRDY有效,一旦主控設(shè)備使有效,中途不能改變狀態(tài),,直到信號(hào)無(wú)效或數(shù)據(jù)傳送結(jié)束,。

  PCI是地址/數(shù)據(jù)復(fù)用總線,其讀操作的時(shí)序如圖1所示,。當(dāng)進(jìn)行PCI讀傳輸時(shí),,首先置低,有效,,讀傳輸開(kāi)始,,同時(shí)AD[31..0]保持有效地址信號(hào),C/BE[3..0]保持總線命令,。如果總線命令為存儲(chǔ)器讀(0110),,AD[31..0]地址在從設(shè)備地址范圍內(nèi),從設(shè)備置有效,,主控設(shè)備驅(qū)動(dòng),表明主控設(shè)備準(zhǔn)備好接收數(shù)據(jù),。為避免總線沖突,接下來(lái)的一個(gè)周期AD[31..0]既不被主控設(shè)備驅(qū)動(dòng),,也不被從設(shè)備驅(qū)動(dòng)(該周期成為總線轉(zhuǎn)換周期),,此后AD[31..0]上出現(xiàn)數(shù)據(jù),C/BE[3..0]變?yōu)樽止?jié)允許信號(hào),,主控設(shè)備開(kāi)始檢測(cè)信號(hào),。如果信號(hào)無(wú)效(為高電平),則主控設(shè)備自動(dòng)插入等待周期,,如果信號(hào)有效,,則總線開(kāi)始傳輸數(shù)據(jù)。在最后一個(gè)數(shù)據(jù)脈沖之后,,主控設(shè)備將 置為無(wú)效,表示傳輸結(jié)束,。

??? 寫(xiě)傳輸時(shí),由于地址均由主控設(shè)備提供,,因此不存在總線轉(zhuǎn)換周期,。其傳輸過(guò)程與讀周期基本類(lèi)似,只是C/BE[3..0]上的總線命令為存儲(chǔ)器寫(xiě)(0111),,具體的傳輸時(shí)序如圖2所示,。

?

?

3 PCI總線的接口設(shè)計(jì)方案

??? 根據(jù)以上分析,選用ALTER的高速EPLD器件EPM7128S84來(lái)完成PCI總線接口的設(shè)計(jì),。為簡(jiǎn)化起見(jiàn),,選用存儲(chǔ)器作為從設(shè)備,其總體結(jié)構(gòu)如圖3所示,。

?

?

? 下面將給出用AHDL語(yǔ)言編寫(xiě)的EPLD控制程序以及仿真結(jié)果,。為簡(jiǎn)單起見(jiàn),,設(shè)定從設(shè)備為非即插即用類(lèi)型的PCI插卡,直接將其地址空間配置為0X50000000~0X5FFFFFFF(或在計(jì)算機(jī)內(nèi)不與其他設(shè)備沖突的地址),,時(shí)鐘周期選用33MHz,,具體的程序如下:

SUBDESIGN? pci_if

(

?????? clkin????????? :?? input;

?????? frame??? ????? :?? input,;

?????? ad[31..0]????? :?? input,;

?????? cbe[3..0]????? :?? input;

?????? irdy????? ???? :?? input,;

?????? trdy?????? ? ? :?? output,;

?????? devsel???? ??? :?? output;

?????? wr??????? ???? :?? output,;

?????? cs??????? ???? :?? output,;

?????? a[10..0]???????:?? output;

)

variable

?????? count[1..0]??? :?? DFF,;

?????? da[31..0]????? :?? DFF,;

?????? wr1??????????? :?? node;

?????? rd1??????????? :?? node,;

?????? sign1????????? :?? node,;

?????? sign2???? ???? :?? node;

???????sign4???? ???? :?? node,;

?????? sign3???? ???? :?? node,;

?????? cs1??????????? :?? node;

begin

????count[1..0].clk=clkin,;

  count[1..0].clrn=!frame,;

??? sign1=(count[]==3);

??? if sign1 then count[].d=count[].q,;

??? else

??? count[].d=count[].q+1,;

??? end if;

  sign2=(count[]<1)&!frame,;

  sign3=(count[]>=2)&(count[]<=3),;

  sign4=(count[]>=1)&(count[]<=3);

????da[31..0].clk=sign2&!frame,;?

  da[31..0].d=ad[31..0],;

  cs1=!da31&da30&!da29&da28;?

  if cs1 then?

?????? devsel=!sign4,;

?????? a[10..0]=ad[10..0];

?????? wr1=!cbe3&cbe2&cbe1&cbe0,;

?????? rd1=!cbe3&cbe2&cbe1&!cbe0,;

?????? if rd1&!irdy then

???????????????????? trdy=!sign3,;

???   ????????????? !cs=cs1&!frame;

??? ????? ?????????? wr=rd1&!frame,;

????????????? ?? end if,;

???????????????????? if wr1&!irdy then

???????????????????? trdy=!sign4;

??? ???????????? ??? !cs=cs1&!frame,;

??? ??????????????? ?!wr=wr1&frame,;

???????????????????? end if;

??????? end if,;

end ,;??

  仿真結(jié)果如圖4所示。

?

參考文獻(xiàn)

1 陳利學(xué).微機(jī)總線與接口設(shè)計(jì).成都:成都電子科技大學(xué)出版社,1998

2 ALTER DATABOOK.ALTER公司,,1998

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話(huà):010-82306118,;郵箱:[email protected]