新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于單片機的CPLD/FPGA被動串行下載配置的實現

        基于單片機的CPLD/FPGA被動串行下載配置的實現

        作者: 時間:2012-02-20 來源:網絡 收藏

        1引言

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

        隨著電子技術的發展,當前數字系統的設計正朝著速度快、容量大、體積小、重量輕的方向發展。推動該潮流迅猛發展的引擎就是日趨進步和完善的高密度現場可編程邏輯器件設計技術。高密度現場可編程邏輯器件(/)能夠將大量邏輯功能集成于一個單片IC之中,對基于E2PROM(或Flash Memory)工藝的器件,配置數據在掉電后不會丟失,可以直接采用ByteBlaster并口下載電纜對他們進行配置,但基于該架構的器件的集成度較低,一般在10萬門以下;然而對基于SRAM工藝的器件,配置數據在器件掉電后會丟失,但基于該架構的器件的集成度相對較高,一般在1萬門以上。

        由于當前項目開發中所需使用的可編程邏輯器件的集成度要求越來越高,基于SRAM工藝的器件得到越來越廣泛的使用,那么此時如何將配置數據成功地寫入目標器件,并且保證其在掉電再上電后能夠自動恢復配置數據,成為電子設計工程師能否正確使用基于SRAM工藝的器件必須掌握的一項技術。

        針對基于SRAM工藝的器件的下載配置問題,本文介紹采用AT89S2051配合串行E2PROM存儲器,實現/器件的串行(PS)模式的下載配置。

        2系統組成

        該系統的硬件電路由AT89S2051、AT24C256串行E2PROM,MAX232串行接口電路、復位及去耦合電路和被配置/器件組成,如圖1所示。

        1.jpg

        3系統硬件設計

        (1) 單片機采用ATMEL公司生產的AT89S2051單片機,該芯片與MCS51系列單片機兼容。內含:2 kB Flash E2PROM,128 B RAM,15根I/O引線,2個16位定時器/計數器,1個5向量兩級中斷結構,1個全雙工串行口和1個精密模擬電壓比較器等。

        (2)串行E2PROM 由于基于SRAM工藝的可編程邏輯器件(CPLD/FPGA)的配置數據在掉電后會丟失,需要外加存儲器以保存配置數據。為了盡量減小電路板的面積,選用8 腳的串行E2PROM AT24C256。AT24C256是ATMEL公司生產的2線制串行電可擦寫只讀存儲器,具有自定時寫周期特性,容量32 kB。該器件特別適合于對功耗有嚴格要求的應用場合。

        (3)通信接口采用MAXIM公司生產的串行接口芯片MAX232將PC機與下載配置電路連接起來。下載配置電路通過該串口接收PC機下傳的命令,執行相應的操作再將處理結果上傳到PC機。MAX232是通用+5 V供電的多通道RS232總線收發器,尤其適合在電池供電的系統中應用。

        3.2硬件原理圖

        硬件原理如圖2所示。上電后,單片機首先調用子程序完成如下操作:將掉電前已經存儲在AT24C256串行E2PROM中的器件配置文件讀出;采用串行模式(PS)將該文件配置到CPLD/FPGA器件中,從而實現器件掉電再上電后自動恢復配置數據的功能。然后,單片機就會工作在動態停機狀態,在此過程中,單片機可以響應串口中斷。

        2.jpg

        如果單片機響應串口中斷并且接收到一個數據,那么單片機首先判斷該數據所表示的命令類型,若是配置命令,單片機就進入配置狀態。在配置狀態下,單片機一邊接收配置數據,一邊將這些數據寫到CPLD/FPGA器件中;若是寫E2PROM命令,單片機就進入寫E2PROM狀態,此時單片機會一邊接收配置數據,一邊將這些數據寫到配置用E2PROM中(注意此時這些數據并沒有被配置到CPLD/FPGA器件中);若是讀E2PROM命令,單片機就進入讀E2PROM并配置CPLD/FPGA器件狀態,此時單片機會一邊讀E2PROM中的配置數據,一邊將讀出的配置數據寫到CPLD/FPGA器件中。

        4系統軟件設計

        軟件包括:主程序、下載配置子程序、寫E2PROM子程序、讀E2PROM子程序及通用延時子程序構成。其軟件流程圖如圖3所示。

        3.jpg


        上一頁 1 2 下一頁

        關鍵詞: CPLD FPGA 單片機 被動

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 华宁县| 冕宁县| 韶关市| 留坝县| 盐亭县| 偏关县| 广宁县| 兴海县| 张家港市| 崇州市| 大安市| 五华县| 壤塘县| 专栏| 凌海市| 绥滨县| 灯塔市| 中西区| 林芝县| 涪陵区| 临邑县| 富锦市| 鹤岗市| 布尔津县| 彭山县| 铜山县| 海宁市| 游戏| 临高县| 五原县| 永昌县| 扬州市| 宁陕县| 乌拉特前旗| 泗洪县| 栾川县| 澄迈县| 宁明县| 巴青县| 洛浦县| 和静县|