• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關(guān) 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于EPLD技術(shù)的PCI總線接口設(shè)計

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

    作者: 時間:2009-02-26 來源:網(wǎng)絡(luò) 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/202713.htm

    1 PCI總線概述

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

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

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

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

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

      信號由PCI主控設(shè)備驅(qū)動,表示總線操作的開始和結(jié)束;

      信號由PCI主控設(shè)備驅(qū)動,在讀周期表示主控設(shè)備準備接收數(shù)據(jù),在寫周期表示AD[31..0]上數(shù)據(jù)有效;

      信號由PCI從設(shè)備驅(qū)動,在讀周期,表示從設(shè)備準備好傳輸數(shù)據(jù),在寫周期表示從設(shè)備準備好接收數(shù)據(jù)。

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

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

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

    3 PCI總線的方案

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

    下面將給出用AHDL語言編寫的EPLD控制程序以及仿真結(jié)果。為簡單起見,設(shè)定從設(shè)備為非即插即用類型的PCI插卡,直接將其地址空間配置為0X50000000~0X5FFFFFFF(或在計算機內(nèi)不與其他設(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=!da31da30!da29da28;

      if cs1 then

    devsel=!sign4;

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

    wr1=!cbe3cbe2cbe1cbe0;

    rd1=!cbe3cbe2cbe1!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=wr1frame;

    end if;

    end if;

    end ;

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



    關(guān)鍵詞: EPLD PCI 總線 接口設(shè)計

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 邓州市| 蒙山县| 黔江区| 保亭| 赞皇县| 新乐市| 十堰市| 兴化市| 噶尔县| 六安市| 威宁| 沂源县| 崇左市| 六枝特区| 淳安县| 马尔康县| 北流市| 双牌县| 竹北市| 藁城市| 大渡口区| 辉县市| 常州市| 神木县| 嘉义市| 林西县| 天台县| 晋中市| 洪雅县| 仁化县| 元氏县| 海原县| 临漳县| 绥宁县| 山阳县| 霍林郭勒市| 宁海县| 水富县| 房山区| 绥化市| 辽阳市|