關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于EPLD技術的PCI總線接口設計

        基于EPLD技術的PCI總線接口設計

        作者: 時間:2009-02-26 來源:網絡 收藏

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

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

        1 PCI總線概述

          局部總線特別是PCI總線的發展,打破了PC數據傳送的瓶頸。傳統的PC總線結構不能滿足圖形系統和大型應用程序的要求,所以在此基礎上產生和發展了局部總線。它將計算機外設從I/O總線上移下來,使它們更靠近系統處理器,從而提高了處理器和外設之間的傳送速度。

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

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

        2 PCI總線協議和讀寫時序

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

          信號由PCI主控設備驅動,表示總線操作的開始和結束;

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

          信號由PCI從設備驅動,在讀周期,表示從設備準備好傳輸數據,在寫周期表示從設備準備好接收數據。

        當數據有效時,數據源設備需要無條件地設置XRDY有效,一旦主控設備使有效,中途不能改變狀態,直到信號無效或數據傳送結束。

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

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

        3 PCI總線的方案

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

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

          仿真結果如圖4所示。



        關鍵詞: EPLD PCI 總線 接口設計

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 卢氏县| 南部县| 游戏| 望城县| 铜陵市| 通化市| 泾阳县| 交城县| 平武县| 平山县| 义乌市| 邵阳市| 潼关县| 阿克苏市| 平顺县| 河东区| 长葛市| 慈利县| 江山市| 滦平县| 西安市| 甘孜县| 宣城市| 无极县| 通江县| 万州区| 容城县| 临沧市| 淳安县| 澄迈县| 鸡西市| 延川县| 青浦区| 东兴市| 固原市| 土默特右旗| 永平县| 基隆市| 肃南| 锦州市| 余姚市|