新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 兼容51指令的8位MCU IPCORE設(shè)計(jì)

        兼容51指令的8位MCU IPCORE設(shè)計(jì)

        作者: 時(shí)間:2012-10-24 來源:網(wǎng)絡(luò) 收藏

        3.3.1 狀態(tài)的

        圖2 狀態(tài)機(jī)狀態(tài)圖

        如圖2 所示狀態(tài)機(jī)共有五種狀態(tài),每個(gè)狀態(tài)轉(zhuǎn)換時(shí)間都對(duì)應(yīng)一個(gè)時(shí)鐘周期,所有共有狀態(tài)為取指狀態(tài)(取指令操作碼)和開始狀態(tài)(復(fù)位后的狀態(tài)),中間的執(zhí)行狀態(tài)根據(jù)不同指令來分別采取1 到3 個(gè)執(zhí)行步驟,比如ADD A RN 需要一個(gè)執(zhí)行步驟,ADD A #DATA 需要兩個(gè)執(zhí)行步驟等。這樣所有的指令就可以在一到四個(gè)時(shí)鐘周期內(nèi)完成整個(gè)指令的執(zhí)行過程。

        3.3.2 指令狀態(tài)機(jī)的實(shí)現(xiàn)

        51指令按功能分為五類:數(shù)據(jù)傳送類;算術(shù)操作類;邏輯操作類;控制程序轉(zhuǎn)移類;布爾變量操作類。出于減少內(nèi)部連線和控制方便的考慮,我們將不同類的指令放在了不同的模塊中解碼執(zhí)行。

        算術(shù)操作類指令和邏輯操作類指令由指令譯碼控制模塊實(shí)現(xiàn)譯碼,產(chǎn)生操作數(shù)和ALU控制命令,然后傳送給算術(shù)邏輯運(yùn)算單元ALU 完成運(yùn)算,ALU 模塊將運(yùn)算結(jié)果送回指令譯碼控制模塊,再由指令譯碼控制模塊將結(jié)果寫回目的單元。

        數(shù)據(jù)傳送類指令中的MOVX指令的實(shí)現(xiàn)需要所有外部控制時(shí)序信號(hào)的配合。在輸出控制邏輯中直接產(chǎn)生MOVX所需的控制信號(hào)。數(shù)據(jù)的輸入輸出則在指令譯碼控制模塊中實(shí)現(xiàn)。數(shù)據(jù)傳送類中其他指令和布爾變量操作類指令中的非轉(zhuǎn)移指令都直接在指令譯碼控制模塊中實(shí)現(xiàn),通過內(nèi)部總線實(shí)現(xiàn)內(nèi)部存儲(chǔ)器、寄存器,外部存儲(chǔ)器之間的數(shù)據(jù)傳送。

        控制程序轉(zhuǎn)移類指令由于與程序計(jì)數(shù)器直接相關(guān),因而這一類指令中的長調(diào)用指令、絕對(duì)調(diào)用指令、長轉(zhuǎn)移指令、絕對(duì)轉(zhuǎn)移指令、相對(duì)轉(zhuǎn)移指令、子程序返回指令的PC計(jì)算放在了狀態(tài)機(jī)時(shí)序部分PC計(jì)算模塊,完成取指操作;而條件轉(zhuǎn)移指令和布爾變量操作類中的測試轉(zhuǎn)移指令則由指令譯碼控制模塊完成測試比較操作,將比較結(jié)果送回PC計(jì)算模塊使其根據(jù)比較結(jié)果來完成轉(zhuǎn)移操作;由于數(shù)據(jù)傳送類指令中的MOVC指令直接操作程序計(jì)數(shù)器,因而它的實(shí)現(xiàn)也放在了這個(gè)模塊中。

        4 核內(nèi)其他單元的

        4.1 中斷單元的實(shí)現(xiàn): 此次 共有5 個(gè)中斷包括兩個(gè)外部中斷,三個(gè)中斷。中斷源的檢測是在狀態(tài)機(jī)時(shí)序部分完成,執(zhí)行中斷程序之前操作如PC 裝載中斷向量值,PC 值的保存,清除中斷標(biāo)志等是在狀態(tài)機(jī)的組合邏輯部分實(shí)現(xiàn)。

        4.2 定時(shí)計(jì)數(shù)單元和UART 的:兩個(gè)多功能16 位定時(shí)/ 計(jì)數(shù)器,我們用兩個(gè)進(jìn)程分別來實(shí)現(xiàn)。定時(shí)/ 計(jì)數(shù)器1 與定時(shí)/ 計(jì)數(shù)器0 類似,但它輸出一個(gè)溢出脈沖到串行接口,給串行接口提供波特率。溢出中斷標(biāo)志輸出到中斷處理模塊。串行口是一個(gè)全雙工通信接口,它可作UART 用,也可以作同步移位寄存器用。我們用兩個(gè)進(jìn)程來分別實(shí)現(xiàn)其收發(fā)功能。收發(fā)所需時(shí)鐘在進(jìn)程外實(shí)現(xiàn),模式1、2、3 的區(qū)別只是時(shí)鐘和位數(shù)不同,故放在一起實(shí)現(xiàn)。

        4.3 存儲(chǔ)器設(shè)計(jì):核內(nèi)包含256B 的存儲(chǔ)器,其中低128 單元作為用戶RAM,高128 單元作為SFR.外部RAM 和ROM 可根據(jù)需要任意擴(kuò)展到64KB。此次設(shè)計(jì)采用哈佛總線結(jié)構(gòu),ROM 和RAM 區(qū)由控制模塊分別提供數(shù)據(jù),地址傳送總線以及控制信號(hào)線。內(nèi)部RAM 和外部RAM 的讀寫也采用不同的控制線獨(dú)立控制。這樣的并行結(jié)構(gòu)加速了指令執(zhí)行的過程,有利于速度的提升。

        5 功能和時(shí)序仿真的結(jié)果

        5.1 功能測試

        編完代碼后,將所有模塊整合,接下來就需要搭建測試平臺(tái)(testbench),寫激勵(lì)文件,進(jìn)行功能仿真。在源代碼調(diào)試階段,編寫一簡單的指令來進(jìn)行仿真,然后看波形就可以了。當(dāng)所有指令的調(diào)試基本通過的時(shí)候,就要對(duì)其進(jìn)行全功能仿真,因此,針對(duì)此核的不同功能,如外中斷、定時(shí)器/計(jì)數(shù)器、UART等需要編寫不同的測試文件,以保證其在多種情況下都能正常工作。

        測試平臺(tái)見圖

        圖3 測試平臺(tái)的建立模式



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 固阳县| 富源县| 井冈山市| 长治县| 商丘市| 临城县| 江西省| 夏津县| 修水县| 宁国市| 新营市| 贵南县| 淄博市| 奉化市| 长子县| 郯城县| 东丽区| 广东省| 伊春市| 新和县| 崇仁县| 景洪市| 永清县| 昌乐县| 衡山县| 滦南县| 吉林省| 辉南县| 芜湖市| 万宁市| 揭西县| 小金县| 湖北省| 汕尾市| 固始县| 呼伦贝尔市| 神农架林区| 英德市| 丹阳市| 久治县| 龙南县|