1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 基于PLD的嵌入式系統外存模塊設計

        時間:2024-10-21 18:50:08 理工畢業論文 我要投稿
        • 相關推薦

        基于PLD的嵌入式系統外存模塊設計

        摘要:以MCS-96系列單片機為例,介紹了一種采用可編程邏輯器件(PLD)的存儲器模塊的設計方案,該模塊包含了Flash閃存和RAM。提出了一種方便的存儲器擴展方法,該方法有效地解決了嵌入式系統尤其是數據采集、存儲等系統中存在的存儲空間不足問題。該方案具有通用性強、讀寫控制簡單等特點,具有很強的實用性。

        在嵌入式系統中,由于設計成本和體積等因素的限制,往往會使CPU(包括DSP、單片機等)存在地址空間不足的問題。很多文獻(如參考文獻[1]都有相關的存儲器擴展方法的介紹, 目前已有的方法通常是借助于CPU的I/0接口產生片選或者高位地址信號,利用這些信號將內存分頁,但當頁間跳轉時將給程序設計帶來不便。對于沒有內部存儲器并且采用統一編址的CPU,如80C196KC20[1],這種頁間切換將造成CPU無法繼續執行當前程序而產生錯誤(見圖1)。在CPU執行頁面切換操作后,本應該繼續執行頁面1的指令,可是卻錯誤地執行了頁面2中的相應指令,這種結果不是所需要的。因此尋找一個有效的存儲器擴展方法是實際應用中亟待解決的問題。

        1 存儲器擴展方法解決方案

        在對MCS-96系列單片機的使用中發現,64K字節的存儲空間用來存放程序能滿足絕大多數的使用需求(通常用戶的應用程序不到10K字節),但如果使用其進行數據存儲控制,則會帶來存儲空間上的嚴重不足。通過對實際應用的統計分析發現,在很多情況下,數據的

        存取僅限于順序的連續操作。利用這個特點,可以對數據存儲空間進行簡化設計,具體的說就是通過對同一個地址連續讀或者連續寫來進行批量數據的存取,從而節省地址空間。在16位CPU中,可以將任何一段64K字(2的16次方)的存儲空間映射到兩個地址(一個作為讀取的位置,一個作為寫入的位置),采用這樣的映射方法可以將內存最大擴展到2G字(2的31次方),但這樣的設計同時也帶來了諸多邏輯控制上的困難。隨著可編程邏輯器件(PLD)包括FPGA、EPLDE4[4]、CPLD等的迅速發展,數字邏輯電路的設計得到了大大簡化,從而使這種存儲器擴展想法可以得到實現。

        2 存儲器擴展方法的具體實現

        下面以筆者設計的系統為例來詳細說明這種存儲器擴展方法的實現。該系統是一個多功能數據采集設備,能夠以最高40k次/s的速率進行12位A/D轉換,并且可以將采集到的數據保存至Flash ROM中,以防止掉電丟失。技術參數要求如下:①最多可以保存32K字節的采樣數據;②可以同時存儲4段系統工作配置程序,每段4K字節,共計16K字節;③由于Flash ROM自身的特點,在寫人數據后的編程階段不能進行讀寫操作,因此為了保證系統采樣和單片機運行的正常進行,需要額外增加32K字節的RAM作為數據緩存;④系統程序、中斷服務程序等共占用56K字節(Flash ROM和RAM各保留28K字節),總計需要存儲空間136K字節。這個需求已經超過96系列單片機的64K字節尋址范圍,為此設計了一個存儲器模塊,其結構如圖2所示。

        圖2

        Flash ROM采用ATMEL公司的AT29C1024,容量為128K字節,數據線寬度為16位;RAM存儲器由兩片CY7C199組成,數據線寬度為16位,容量為64K字節。80C196單片機的ALE為地址鎖存信號,/WE為寫有效信號,/RD為讀有效信號,READY為準備就緒信號。MCS-96系列單片機支持8位和16位兩種工作模式,為了提高系統的性能,選擇16位工作模式。96系列單片機地址是按照字節的方式來計算的,因此在16位工作模式下的A0=0沒有實際意義。在通常的讀寫情況下,取經過鎖存后的AD1~AD15地址作為A1~A15而A16=0。

        下面以讀Flash ROM為例介紹地址擴展方法。對于可以直接尋址的地址,EPLD作為鎖存器,將AD0~AD15分時的地址數據總線分開,生成獨立的地址和數據總線。在這里定義了兩個特殊的地址:Flash ROM數據塊的讀地址Address_F_R和讀位置指針地址Address_F_RP。首先向Ad-dress_F_RP寫入一個16位的二進制數,該數代表了將要讀取的數據塊的首地址,16位表示范圍是0~65535,因此可以指定的首地址范圍是64K字即128K字節;然后連續地從Address_F_R進行讀取操作,每讀一次,位置指針會自動加1而不需要重新設置。如果需要讀取新的位置,只需要向Address_F_RP地址寫入新的位置數據即可。該功能在EPLD器件內部的實現方法見圖3。計數器可同步設置初值、同步計數,在AHDL語言中聲明為1pm_counter[5]。其中,CNT_EN為計數使能控制,當CNT_EN為高電平時,每當CLOCK上升沿到來時計數器便會自動加一,從而實現了地址自動增加的功能;CLOCK為同步時鐘輸入端,上升沿有效;SLOAD為計數器同步設置初值信號,當該信號為高電平時,在CLOCK上升沿的作用下,計數器的輸出Q[15..0]=D[15..0],從而實現初始化讀取位置的功能。計數器用AHDL語言描述如下:

        counter : lPm_counter with(1pm_width=16);

        counter.clock=/rd

        【基于PLD的嵌入式系統外存模塊設計】相關文章:

        基于PLD技術的MIDI音樂播放控制系統設計03-15

        基于模塊化設計的嵌入式軟件測試方法03-20

        基于AVR的嵌入式在線監測系統的設計11-22

        基于IIS總線的嵌入式音頻系統設計03-18

        基于Nios軟核的嵌入式Internet系統設計03-20

        基于ARM體系的嵌入式系統BSP的程序設計03-18

        基于Winodws CE的嵌入式網絡監控系統的設計與實現03-18

        基于ARM7的嵌入式控制系統設計11-23

        基于DSP的Bluetooth嵌入式系統應用03-20

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>