中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 用CPLD實(shí)現(xiàn)單片機(jī)讀寫(xiě)模塊

        用CPLD實(shí)現(xiàn)單片機(jī)讀寫(xiě)模塊

        作者: 時(shí)間:2004-12-08 來(lái)源:網(wǎng)絡(luò) 收藏

        摘要:介紹實(shí)現(xiàn)與Xilinx公司XC9500系列可編程邏輯器件的讀寫(xiě)邏輯功能模塊的接口設(shè)計(jì),以及Xilinx公司的XC9500系列可編程邏輯器件的開(kāi)發(fā)流程。

        關(guān)鍵詞:復(fù)雜可編程邏輯電路 微處理器 在系統(tǒng)編程 現(xiàn)場(chǎng)可編程門(mén)陣列

        1 概述

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

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

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

        Xilinx公司的XC9500系列可編程邏輯器件是一款高性能、有特點(diǎn)的可編程邏輯器件。它的系統(tǒng)結(jié)構(gòu)如圖1所示。從結(jié)構(gòu)上看,它包含三種單元:宏單元、可編程I/O單元和可編程的內(nèi)部連線。它的主要特點(diǎn)是:

        ①高性能。在所有可編程引腳之間pin-pin延時(shí)5ns;系統(tǒng)的時(shí)鐘速度可達(dá)到100MHz。

        ②容量范圍大。Xilinx公司的XC9500系列可編程邏輯器件的容量范圍為36~288個(gè)宏單元;可用系統(tǒng)門(mén)為800~6400個(gè)。

        ③5V在系統(tǒng)可編程。可以編程10000次。

        ④具有強(qiáng)大的強(qiáng)腳鎖定能力。

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

        ⑥沒(méi)有用的引腳有編程接地能力。

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

        3 CPLD同單片機(jī)接口設(shè)計(jì)

        CPLD同單片機(jī)接口原理如圖2所示。

        CPLD同單片機(jī)接口設(shè)計(jì)中,單片機(jī)采用Atmel公司的AT89C52,CPLD采用Xilinx公司的XC95216。該CPLD芯片結(jié)構(gòu)及性能見(jiàn)圖1和表1。AT89C52通過(guò)ALE、CS、RD、WE、P0口(數(shù)據(jù)地址復(fù)用)同XC95216芯片相連接。

        表1 Xilinx XC9500t系列器件

        項(xiàng) 目XC9536XC9572XC95108XC95144XC95216XC95288
        寄存器/個(gè)3672108144216288
        可用門(mén)數(shù)/個(gè)80016002400320048006400
        宏單元數(shù)/個(gè)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位計(jì)數(shù)器最高工作頻率;fSYSTEM=整個(gè)系統(tǒng)的最高工作效率。

        ALE:地址鎖存信號(hào)。

        CS:片選信號(hào)。

        RD:讀信號(hào)。

        WR:寫(xiě)信號(hào)。

        AD0~AD7:數(shù)據(jù)地址復(fù)用信號(hào)。

        本例的設(shè)計(jì)思想是,在XC95216設(shè)置兩個(gè)控制寄存器,通過(guò)單片機(jī)對(duì)兩個(gè)控制寄存器的讀寫(xiě)來(lái)完成對(duì)其它過(guò)程的控制。

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

        圖2 XC9516同單片機(jī)接口原理圖

        4 CPLD同單片機(jī)接口設(shè)置結(jié)果

        本例中,使用Xilinx公司提供的Fundation ISE 4.2i+Modelsim 5.5f軟件實(shí)現(xiàn)設(shè)計(jì)。實(shí)現(xiàn)設(shè)計(jì)的源文件模塊如下:

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

        //MCU和XC95216接口程序

        //目的:MCU讀寫(xiě)XC95216

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

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

        inout[7:0]MCU_DATA;//單片機(jī)的地址數(shù)據(jù)復(fù)用信號(hào)

        output[7:0]CONREG1,CONREG2;//內(nèi)部控制寄存器

        input ALE; //單片機(jī)的地址鎖存信號(hào)

        input CS; //單片機(jī)的片選信號(hào)

        input RD; //單片機(jī)的讀信號(hào)

        input WE; //單片機(jī)的寫(xiě)信號(hào)

        reg[7:0]LAMCU_DATA; //內(nèi)部控制寄存器

        reg[7:0]ADDRESSREG; //內(nèi)部地址鎖存寄存器

        reg[7:0]CONREG1; //內(nèi)部控制寄存器

        reg[7:0]CONREG2; //內(nèi)部控制寄存器

        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寄存器讀數(shù)據(jù)

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

        //從地址為1的CONREG2寄存器讀數(shù)據(jù)

        else LAMCU_DATA=8'bzzzzzzzz;

        end

        else

        LAMCU_DATA=8'bzzzzzzzz;

        End

        Endmodule

        使用Modelsim 5.5f仿真結(jié)果如圖3和圖4所示。圖中ALE、CS、RD、WE、MCU_DATA是測(cè)試激勵(lì)源信號(hào),代表AT89C52接口信號(hào);CONREG1和CONREG2的內(nèi)部寄存器;ADDRESSREG是內(nèi)部地址鎖存寄存器。

        圖3 CONREG1寫(xiě)過(guò)程 圖4 CONREG1讀過(guò)程

        圖3是CONREG1寫(xiě)過(guò)程。首先,在ALE信號(hào)的下降沿,鎖存MCU_DATA的數(shù)據(jù)到ADDRESSREG內(nèi)部地址鎖存寄存器。然后,在WE信號(hào)的上升沿,把MCU_DATA(0XAA)的數(shù)據(jù)鎖存到寄存器CONREG1。

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

        從圖3和圖4可以看出,對(duì)CONREG1寄存器的讀、寫(xiě)過(guò)程完全滿(mǎn)足進(jìn)序要求,CONREG2的讀寫(xiě)過(guò)程同CONREG1一樣,也完全滿(mǎn)足時(shí)序要求,實(shí)現(xiàn)了期望的功能。

        結(jié)語(yǔ)

        本文實(shí)現(xiàn)CPLD與單片機(jī)接口設(shè)計(jì)是筆者設(shè)計(jì)的高速采樣設(shè)備的一部分,經(jīng)實(shí)際驗(yàn)證完全正確。簡(jiǎn)單地修改該模塊,筆者已成功地將其應(yīng)用于多個(gè)CPLD或FPGA與單片機(jī)接口的項(xiàng)目中。



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉