• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > EDA/PCB > 設計應用 > 用CPLD實現單片機讀寫模塊

    用CPLD實現單片機讀寫模塊

    作者: 時間:2004-12-08 來源:網絡 收藏

    摘要:介紹實現與Xilinx公司XC9500系列可編程邏輯器件的讀寫邏輯功能模塊的接口設計,以及Xilinx公司的XC9500系列可編程邏輯器件的開發流程。

    關鍵詞:復雜可編程邏輯電路 微處理器 在系統編程 現場可編程門陣列

    1 概述

    (復雜可編程邏輯電路)是一種具有豐富的可編程I/O引腳的可編程邏輯器件,具有在系統可編程、使用方便靈活的特點;不但可實現常規的邏輯器件功能,還可實現復雜的時序邏輯功能。把應用于嵌入式應用系統,同結合起來,更能體現其在系統可編程、使用方便靈活的特點。接口,可以作為單片機的一個外設,實現單片機所要求的功能。例如,實現常用的地址譯碼、鎖存器、8255等功能;也可實現加密、解密及擴展串行口等單片機所要求的特殊功能。實現嵌入式應用系統的靈活性,也提高了嵌入式應用系統的性能。

    CPLD(復雜可編程邏輯電路)是一種具有豐富的可編程I/O引腳的可編程邏輯器件,具有在系統可編程、使用方便靈活的特點;不但可實現常規的邏輯器件功能,還可實現復雜的時序邏輯功能。把CPLD應用于嵌入式應用系統,同單片機結合起來,更能體現其在系統可編程、使用方便靈活的特點。CPLD同單片機接口,可以作為單片機的一個外設,實現單片機所要求的功能。例如,實現常用的地址譯碼、鎖存器、8255等功能;也可實現加密、解密及擴展串行口等單片機所要求的特殊功能。實現了嵌入式應用系統的靈活性,也提高了嵌入式應用系統的性能。

    2 Xilinx公司的可編程邏輯器件

    Xilinx公司的XC9500系列可編程邏輯器件是一款高性能、有特點的可編程邏輯器件。它的系統結構如圖1所示。從結構上看,它包含三種單元:宏單元、可編程I/O單元和可編程的內部連線。它的主要特點是:

    ①高性能。在所有可編程引腳之間pin-pin延時5ns;系統的時鐘速度可達到100MHz。

    ②容量范圍大。Xilinx公司的XC9500系列可編程邏輯器件的容量范圍為36~288個宏單元;可用系統門為800~6400個。

    ③5V在系統可編程。可以編程10000次。

    ④具有強大的強腳鎖定能力。

    ⑤每個宏單元都有可編程低功耗模式。

    ⑥沒有用的引腳有編程接地能力。

    Xilinx的XC9500系列可編程邏輯器件的主要性能如表1所列。

    3 CPLD同單片機接口設計

    CPLD同單片機接口原理如圖2所示。

    CPLD同單片機接口設計中,單片機采用Atmel公司的AT89C52,CPLD采用Xilinx公司的XC95216。該CPLD芯片結構及性能見圖1和表1。AT89C52通過ALE、CS、RD、WE、P0口(數據地址復用)同XC95216芯片相連接。

    表1 Xilinx XC9500t系列器件

    項 目XC9536XC9572XC95108XC95144XC95216XC95288
    寄存器/個3672108144216288
    可用門數/個80016002400320048006400
    宏單元數/個3672108144216288
    fPD/ns57.57.57.51010
    tSU/ns3.54.54.54.56.06.0
    tCO/ns4.04.54.54.56.06.0
    fCNT/MHz100125125125111.1111.1
    fSYSTEM/MHz10083.383.383.366.766.7

    注:fCNT=16位計數器最高工作頻率;fSYSTEM=整個系統的最高工作效率。

    ALE:地址鎖存信號。

    CS:片選信號。

    RD:讀信號。

    WR:寫信號。

    AD0~AD7:數據地址復用信號。

    本例的設計思想是,在XC95216設置兩個控制寄存器,通過單片機對兩個控制寄存器的讀寫來完成對其它過程的控制。

    XC95216設置的兩個控制寄存器,可以作內部寄存器,也可以直接是映射為I/O口。

    圖2 XC9516同單片機接口原理圖

    4 CPLD同單片機接口設置結果

    本例中,使用Xilinx公司提供的Fundation ISE 4.2i+Modelsim 5.5f軟件實現設計。實現設計的源文件模塊如下:

    /**************************

    //MCU和XC95216接口程序

    //目的:MCU讀寫XC95216

    /**************************/

    module mcurw(MCU_DATA,ALE,CS,RD,WE,CONREG1,CONREG2);

    inout[7:0]MCU_DATA;//單片機的地址數據復用信號

    output[7:0]CONREG1,CONREG2;//內部控制寄存器

    input ALE; //單片機的地址鎖存信號

    input CS; //單片機的片選信號

    input RD; //單片機的讀信號

    input WE; //單片機的寫信號

    reg[7:0]LAMCU_DATA; //內部控制寄存器

    reg[7:0]ADDRESSREG; //內部地址鎖存寄存器

    reg[7:0]CONREG1; //內部控制寄存器

    reg[7:0]CONREG2; //內部控制寄存器

    assign MCU_DATA=RD?8'bzzzzzzzz:LAMCU_DATA;

    initial //寄存器初始化

    begin

    LAMCU_DATA=0;

    ADDRESSREG=0;

    CONREG1=0;

    CONREG2=0;

    end

    always@(negedge ALE)

    begin

    ADDRESSREG=MCU_DATA; //地址鎖存

    End

    always@(posedge WE)

    begin

    if(!CS ADDRESSREG[0]= =0)) LAMCU_DATA

    =CONREG1; //從地址為0的CONREG1寄存器讀數據

    else if(!CS(ADDRESSREG[0]= =1))LAMCU_DATA=CONREG2;

    //從地址為1的CONREG2寄存器讀數據

    else LAMCU_DATA=8'bzzzzzzzz;

    end

    else

    LAMCU_DATA=8'bzzzzzzzz;

    End

    Endmodule

    使用Modelsim 5.5f仿真結果如圖3和圖4所示。圖中ALE、CS、RD、WE、MCU_DATA是測試激勵源信號,代表AT89C52接口信號;CONREG1和CONREG2的內部寄存器;ADDRESSREG是內部地址鎖存寄存器。

    圖3 CONREG1寫過程 圖4 CONREG1讀過程

    圖3是CONREG1寫過程。首先,在ALE信號的下降沿,鎖存MCU_DATA的數據到ADDRESSREG內部地址鎖存寄存器。然后,在WE信號的上升沿,把MCU_DATA(0XAA)的數據鎖存到寄存器CONREG1。

    圖4是CONREG1讀過程。首先,在ALE信號的下降沿,鎖存MCU_DATA(0X00)的數據到ADDRESSREG內部地址鎖存寄存器。然后,在RD信號的低電平期間,把MCU_DATA(0XAA)的數據鎖存到寄存器CONREG1。

    從圖3和圖4可以看出,對CONREG1寄存器的讀、寫過程完全滿足進序要求,CONREG2的讀寫過程同CONREG1一樣,也完全滿足時序要求,實現了期望的功能。

    結語

    本文實現CPLD與單片機接口設計是筆者設計的高速采樣設備的一部分,經實際驗證完全正確。簡單地修改該模塊,筆者已成功地將其應用于多個CPLD或FPGA與單片機接口的項目中。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 汤阴县| 黑水县| 大宁县| 思南县| 通州区| 鲁甸县| 青岛市| 综艺| 灌南县| 常山县| 青岛市| 江阴市| 唐河县| 成武县| 万全县| 喜德县| 明溪县| 峨山| 宣汉县| 砚山县| 临猗县| 武陟县| 永昌县| 萝北县| 漳州市| 基隆市| 宝鸡市| 阳山县| 岑溪市| 胶南市| 温宿县| 宣武区| 广安市| 武城县| 五台县| 新野县| 洛浦县| 大竹县| 百色市| 江永县| 宣城市|