兼容51指令的8位MCU IPCORE設計

圖2 指令狀態(tài)機狀態(tài)圖
如圖2 所示狀態(tài)機共有五種狀態(tài),每個(gè)狀態(tài)轉換時(shí)間都對應一個(gè)時(shí)鐘周期,所有指令共有狀態(tài)為取指狀態(tài)(取指令操作碼)和開(kāi)始狀態(tài)(復位后的狀態(tài)),中間的執行狀態(tài)根據不同指令來(lái)分別采取1 到3 個(gè)執行步驟,比如ADD A RN 需要一個(gè)執行步驟,ADD A #DATA 需要兩個(gè)執行步驟等。這樣所有的指令就可以在一到四個(gè)時(shí)鐘周期內完成整個(gè)指令的執行過(guò)程。
3.3.2 指令狀態(tài)機的實(shí)現
51指令按功能分為五類(lèi):數據傳送類(lèi);算術(shù)操作類(lèi);邏輯操作類(lèi);控制程序轉移類(lèi);布爾變量操作類(lèi)。出于減少內部連線(xiàn)和控制方便的考慮,我們將不同類(lèi)的指令放在了不同的模塊中解碼執行。
算術(shù)操作類(lèi)指令和邏輯操作類(lèi)指令由指令譯碼控制模塊實(shí)現譯碼,產(chǎn)生操作數和ALU控制命令,然后傳送給算術(shù)邏輯運算單元ALU 完成運算,ALU 模塊將運算結果送回指令譯碼控制模塊,再由指令譯碼控制模塊將結果寫(xiě)回目的單元。
數據傳送類(lèi)指令中的MOVX指令的實(shí)現需要所有外部控制時(shí)序信號的配合。在輸出控制邏輯中直接產(chǎn)生MOVX所需的控制信號。數據的輸入輸出則在指令譯碼控制模塊中實(shí)現。數據傳送類(lèi)中其他指令和布爾變量操作類(lèi)指令中的非轉移指令都直接在指令譯碼控制模塊中實(shí)現,通過(guò)內部總線(xiàn)實(shí)現內部存儲器、寄存器,外部存儲器之間的數據傳送。
控制程序轉移類(lèi)指令由于與程序計數器直接相關(guān),因而這一類(lèi)指令中的長(cháng)調用指令、絕對調用指令、長(cháng)轉移指令、絕對轉移指令、相對轉移指令、子程序返回指令的PC計算放在了狀態(tài)機時(shí)序部分PC計算模塊,完成取指操作;而條件轉移指令和布爾變量操作類(lèi)中的測試轉移指令則由指令譯碼控制模塊完成測試比較操作,將比較結果送回PC計算模塊使其根據比較結果來(lái)完成轉移操作;由于數據傳送類(lèi)指令中的MOVC指令直接操作程序計數器,因而它的實(shí)現也放在了這個(gè)模塊中。
4 核內其他單元的設計
4.1 中斷單元的實(shí)現: 此次IPCORE 共有5 個(gè)中斷包括兩個(gè)外部中斷,三個(gè)中斷。中斷源的檢測是在狀態(tài)機時(shí)序部分完成,執行中斷程序之前操作如PC 裝載中斷向量值,PC 值的保存,清除中斷標志等是在狀態(tài)機的組合邏輯部分實(shí)現。
4.2 定時(shí)計數單元和UART 的設計:兩個(gè)多功能16 位定時(shí)/ 計數器,我們用兩個(gè)進(jìn)程分別來(lái)實(shí)現。定時(shí)/ 計數器1 與定時(shí)/ 計數器0 類(lèi)似,但它輸出一個(gè)溢出脈沖到串行接口,給串行接口提供波特率。溢出中斷標志輸出到中斷處理模塊。串行口是一個(gè)全雙工通信接口,它可作UART 用,也可以作同步移位寄存器用。我們用兩個(gè)進(jìn)程來(lái)分別實(shí)現其收發(fā)功能。收發(fā)所需時(shí)鐘在進(jìn)程外實(shí)現,模式1、2、3 的區別只是時(shí)鐘和位數不同,故放在一起實(shí)現。
4.3 存儲器設計:核內包含256B 的存儲器,其中低128 單元作為用戶(hù)RAM,高128 單元作為SFR.外部RAM 和ROM 可根據需要任意擴展到64KB。此次設計采用哈佛總線(xiàn)結構,ROM 和RAM 區由控制模塊分別提供數據,地址傳送總線(xiàn)以及控制信號線(xiàn)。內部RAM 和外部RAM 的讀寫(xiě)也采用不同的控制線(xiàn)獨立控制。這樣的并行結構加速了指令執行的過(guò)程,有利于速度的提升。
5 功能和時(shí)序仿真的結果
5.1 功能測試
編完代碼后,將所有模塊整合,接下來(lái)就需要搭建測試平臺(testbench),寫(xiě)激勵文件,進(jìn)行功能仿真。在源代碼調試階段,編寫(xiě)一簡(jiǎn)單的指令來(lái)進(jìn)行仿真,然后看波形就可以了。當所有指令的調試基本通過(guò)的時(shí)候,就要對其進(jìn)行全功能仿真,因此,針對此核的不同功能,如外中斷、定時(shí)器/計數器、UART等需要編寫(xiě)不同的測試文件,以保證其在多種情況下都能正常工作。
測試平臺見(jiàn)圖

圖3 測試平臺的建立模式
評論