天天干天天做天天操-天天干天天做天天射-天天干网-天天干网站-天天干网址

產(chǎn)品分類

當(dāng)前位置: 首頁 > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 汽車連接器

類型分類:
科普知識
數(shù)據(jù)分類:
汽車連接器

基于PLD的嵌入式系統(tǒng)外存模塊設(shè)計

發(fā)布日期:2022-04-18 點擊率:116

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

    關(guān)鍵詞:PLD 存儲器 RAM 單片機 閃存

在嵌入式系統(tǒng)中,由于設(shè)計成本和體積等因素的限制,往往會使CPU(包括DSP、單片機等)存在地址空間不足的問題。很多文獻(xiàn)(如參考文獻(xiàn)[1]都有相關(guān)的存儲器擴展方法的介紹, 目前已有的方法通常是借助于CPU的I/0接口

產(chǎn)生片選或者高位地址信號,利用這些信號將內(nèi)存分頁,但當(dāng)頁間跳轉(zhuǎn)時將給程序設(shè)計帶來不便。對于沒有內(nèi)部存儲器并且采用統(tǒng)一編址的CPU,如80C196KC20[1],這種頁間切換將造成CPU無法繼續(xù)執(zhí)行當(dāng)前程序而產(chǎn)生錯誤(見圖1)。在CPU執(zhí)行頁面切換操作后,本應(yīng)該繼續(xù)執(zhí)行頁面1的指令,可是卻錯誤地執(zhí)行了頁面2中的相應(yīng)指令,這種結(jié)果不是所需要的。因此尋找一個有效的存儲器擴展方法是實際應(yīng)用中亟待解決的問題。

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

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

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

2 存儲器擴展方法的具體實現(xiàn)

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

圖2

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

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

counter : lPm_counter with(1pm_width=16);

counter.clock=/rd&(/we#(a[15..0]!=Address_F_RP);

counter.sload=(a[15..0]==Address_F_RP);

counter.cnt_en=(a[15..0]=Address_F_R);

counter.data[15..0]=D[15..0];

clock信號要保證在寫Address_F_RP地址修改讀取位置時,或讀Address_F_R地址取數(shù)據(jù)時都能產(chǎn)生上升沿信號??偩€a0-a15和D0~D15分別是由AD0-AD15分離出來的地址和數(shù)據(jù)總線。多路選擇器則根據(jù)地址譯碼產(chǎn)生的S0-S3選擇輸出地址,輸出地址直接連接到RAM和Flash ROM的地址線上。如果訪問除Address_F_RP和Address_F_RP以外的地址,則地址輸出總線A115..1)=a[15..1]、A16=0,即單片機直接訪問存儲器;如果讀取Address_F_R,則片選/CS2有效并且A[16..1)Q(15..0]作為輸出地址。這樣就可以自動地在不同存儲區(qū)域進(jìn)行切換,從而大大地增加了內(nèi)存的擴充能力,并且簡化了程序設(shè)計。運用同樣的方法還可以定義FlashROM中的數(shù)據(jù)塊寫入地址Address_F_W和寫位置指針地址Address_F_WP,RAM中也有類似的方法定義Address_R_(RAM數(shù)據(jù)塊讀地址)、Address_R_RP(RAM數(shù)據(jù)塊的讀位置指針地址)、Address_R_W(RAM數(shù)據(jù)塊寫地址)和Address_R_WP(RAM數(shù)據(jù)塊的寫位置指針地址)。這樣可以方便地對內(nèi)存的擴展部分進(jìn)行讀寫。下面以MCS-96的匯編語言為例來說明程序中是如何操作的。比如需要從IOPORT0口連續(xù)采集數(shù)據(jù),然后存放到RAM中指定的數(shù)據(jù)塊等待處理,則可以寫出如下程序:

LD 40H,地址值;地址值為即將寫入的目的地址,16位按字編址。

ST 40H,Address_R_WP;設(shè)置寫位置指針

REPEAT:

LDB 40H,IOPORT0

LDB 41H,IOPORTO;40H和41H為內(nèi)部寄存器,因為按字存儲所以連續(xù)讀兩次

ST 40H,Address_R_W ;寫入指定位置條件判斷退出循環(huán)

JMP REPEAT

從上面這個簡單的例子可以看出,這種存儲器組織方法大大簡化了編程的的復(fù)雜性,并且可以采用對位置指針賦初值的方法來實現(xiàn)對擴展存儲器中任何一個位置的讀寫操作。

3 地址分配

有了上面的存儲器擴展方法,再結(jié)合系統(tǒng)的技術(shù)參數(shù)和單片機的特點,就可以做出一套合理的內(nèi)存地址分配方案。下面給出單片機的地址劃分情況:

0000H~01FFH 系統(tǒng)寄存器區(qū),保留0200H~1EFFH用戶區(qū),直接映射到Flash ROM中的

0200H~1EFFH 可以用來存放數(shù)據(jù)、程序等,該區(qū)域可以由單片機直接進(jìn)行尋址。

1FOOH~1FFFH 用戶區(qū),實際使用中把Address—1lR、Address_F_WP等地址以及一些特殊設(shè)備如A/D轉(zhuǎn)換器、LCD顯示屏等的訪問地址設(shè)置在這個區(qū)域。

2000H~207FH 該區(qū)域是中斷向量區(qū)、芯片配置字節(jié)區(qū)、保留字區(qū)等,直接映射到Flash ROM中的2000H-207FH。

2080H~8FFFH 用戶區(qū),單片機啟動也是從 2080H 處開始執(zhí)行程序的,因此把這個地址范圍直接映射到 Flash ROM 的2080H~8FFFH,該區(qū)域設(shè)置系統(tǒng)的引導(dǎo)、初始化等程序。

9000H~FFFFH 用戶區(qū),將這一段映射到 RAM 的9000H~FFFFH,作為系統(tǒng)程序的運行區(qū)域。

上面的分配方案可以通過對地址總線進(jìn)行譯碼生成相應(yīng)的片選信號/CSl和/CS2來實現(xiàn)。這樣分配后,F(xiàn)lash ROM 和 RAM 的使用情況如圖4所示。

圖4中白色區(qū)域是單片機通過總線直接尋址的區(qū)域,可以由單片機直接進(jìn)行訪問?;疑珔^(qū)域為內(nèi)存的擴展區(qū)域,不能被單片機直接訪問,但可以通過前面介紹的方法由EPLD生成地址進(jìn)行讀寫操作。下面簡要介紹一下各個區(qū)域在實際中的用途:Flash ROM中的0000H~1FFH和1F00H~1FFFH因為容量很小,沒有被利用。系統(tǒng)啟動后從Flash ROM的2080H處開始執(zhí)行程序,將2000H~8FFFH的內(nèi)容復(fù)制到RAM中的9000H~FFFFH,然后跳轉(zhuǎn)到RAM中執(zhí)行系統(tǒng)程序。由于Hash ROM的速度慢,需要在讀寫過程中插入一定量的等待周期,因此將程序復(fù)制到RAM中執(zhí)行可以提高系統(tǒng)的性能;同時系統(tǒng)在對Flash ROM進(jìn)行寫入操作后,編程階段的10ms內(nèi)不能對其進(jìn)行讀取,因此RAM在這個時候也提供了程序運行的位置。這樣分配后,程序的長度被限制在28K字節(jié),實際中這個數(shù)量完全可以滿足系統(tǒng)的需求。Hash ROM中的9000~FFFFH共28K字節(jié),用來保存4段系統(tǒng)運行配置程序,每段長度可達(dá)7K字節(jié);10000H-

1FFFFH共64K字節(jié),用來作為采集數(shù)據(jù)的保<

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

主站蜘蛛池模板: 97视频免费在线观看 | 国产色婷婷精品综合在线 | 黄色网址日本 | 国产秦先生大战白丝97在线 | 免费国产调教视频在线观看 | 欧美一区二区在线视频 | 色综合综合色综合色综合 | 久热中文字幕在线观看 | 亚洲成人日韩 | 伊人激情久久综合中文字幕 | 国产成人一区二区三区视频免费蜜 | 一区二区三区四区无限乱码 | 欧美ol丝袜高跟秘书在线播放 | 国产欧美专区在线观看 | www.久久草 | 欧美日韩免费播放一区二区 | 欧美一区中文字幕 | a毛片在线 | 丝袜制服中文字幕 | 一区二区三区免费在线 | 日韩区在线观看 | 任我爽在线视频精品凹凸精品分类 | 一级女性全黄生活片看看 | 精品国产一区二区三区久久影院 | 在线观看国产精品日本不卡网 | 妞干网免费在线视频 | 久久九九色 | 免费一级欧美大片在线观看 | 在线看片网址 | 日本欧美高清 | 亚洲日本在线观看视频 | 久久不卡日韩美女 | 手机在线看片国产日韩生活片 | 国产人妖在线观看一区二区 | 国产亚洲日本 | 青青青亚洲精品国产 | 永久免费观看黄网站 | 国产精品爱久久久久久久小 | 亚洲精品国产第一区二区小说 | 综合九九 | 欧美成人h版影院在线播放 欧美成人h版整片合集 |