8位高速微控制器IP軟核的設計與實(shí)現
摘 要: 本文介紹了一種8位高速微控制器IP軟核的設計,該IP采用哈佛總線(xiàn)和二級流水線(xiàn),指令集與PIC16F676兼容。本文按照自頂而下的設計流程,首先定義了該MCU IP核的頂層功能和體系結構,然后對各單元模塊進(jìn)行了詳細的設計,講述了IP軟核的設計方法及其仿真驗證,并對該微控制器的讀/寫(xiě)時(shí)序進(jìn)行了分析。
關(guān)鍵詞: IP軟核;微控制器
引言
隨著(zhù)集成電路設計的不斷發(fā)展,集成電路的規模越來(lái)越大,設計難度日趨復雜,傳統的設計方法已越來(lái)越不能適應集成電路設計發(fā)展的需要?;贗P復用的數字IC設計方法是有效提高IC設計產(chǎn)能的關(guān)鍵技術(shù),有助于快速實(shí)現工藝先進(jìn)、功能強大的產(chǎn)品。
微控制器MCU是嵌入式系統的核心,8位MCU IP核具有很高的通用性和靈活性,廣泛地應用于工業(yè)控制、機械設備、家用電器以及汽車(chē)電子等各個(gè)領(lǐng)域。本文介紹的是基于RISC體系結構的8位高速MCU IP軟核的設計與實(shí)現,采用Verilog HDL自上而下地描述了MCU IP軟核的硬件結構,并驗證了設計的可行性和正確性。在實(shí)際硬件電路中,該IP核的運行頻率達到75MHz,可應用于高速控制領(lǐng)域。
系統結構設計
本設計的總線(xiàn)采用了哈佛結構,14位指令字長(cháng),8位數據字長(cháng),指令集與PIC16F676兼容。它具有35條指令,在連續工作的情況下,除了程序跳轉指令要用2個(gè)指令周期外,其它的所有指令都可以在1個(gè)指令周期內完成。由于哈佛結構總線(xiàn)具有獨立的指令總線(xiàn)和數據總線(xiàn),可同時(shí)從程序存儲器和數據存儲器中分別讀取數據,大大提高了MCU內部執行的并行性,簡(jiǎn)化了控制電路的設計。與更深級流水線(xiàn)相比,簡(jiǎn)單的指令周期避免了深度流水線(xiàn)增加電路結構復雜性和芯片面積。
該微處理器在結構上可以劃分為四個(gè)子系統,分別為控制單元、數據通道、存儲單元、I/O單元。其中數據通道包含ALU和一個(gè)W工作寄存器。片內程序存儲器ROM的容量是8k14位;數據存儲器由包括專(zhuān)用寄存器在內的256個(gè)可尋址的8位寄存器組成,通過(guò)數據總線(xiàn)與算術(shù)邏輯單元ALU相連,系統可以對數據存儲器用直接或間接尋址方式進(jìn)行訪(fǎng)問(wèn)。I/O單元提供了系統內部的數據總線(xiàn)與外界總線(xiàn)的連接接口,實(shí)現數據的輸入/輸出??刂茊卧獎t會(huì )根據指令產(chǎn)生相應的指示信號控制系統的協(xié)調運行。系統結構如圖1所示。
MCU IP核的時(shí)序設計
時(shí)鐘網(wǎng)絡(luò )的時(shí)序設計
本設計的時(shí)序設計部分采用內部包含4個(gè)節拍時(shí)鐘的結構,時(shí)鐘網(wǎng)絡(luò )模塊在復位結束后會(huì )利用兩級嵌套的D觸發(fā)器將外部時(shí)鐘(CLK)分頻產(chǎn)生4個(gè)非重疊正交的節拍時(shí)鐘信號q1、q2、q3、q4,一個(gè)指令周期分為4個(gè)狀態(tài)。節拍時(shí)鐘會(huì )與譯碼電路產(chǎn)生的控制信號配合,在不同時(shí)鐘節拍選通不同的電路操作,進(jìn)而協(xié)調整個(gè)系統的運行。
二級流水線(xiàn)時(shí)序設計
本設計所采用的二級流水線(xiàn)劃分為取指和執行兩級。系統運行時(shí),會(huì )在前一指令周期的q4節拍從ROM中取出下一條待執行的指令并鎖存在指令寄存器中,在下一指令周期的q1節拍從指令寄存器中取出指令,同時(shí)程序計數器(PC)加1,q2到q4對所取指令進(jìn)行譯碼和執行。因此,一條指令的完整執行過(guò)程大概分為取指令、指令鎖存、指令譯碼、取操作數、執行、回寫(xiě)、PC+1等7個(gè)步驟。從時(shí)序上看,指令取指周期與執行周期是并行執行的,即在取指的同時(shí),上一條指令正在進(jìn)入執行周期。
程序跳轉指令與其它單周期指令一樣進(jìn)入流水線(xiàn),在執行程序跳轉指令時(shí),屏蔽下一條指令進(jìn)入指令譯碼單元,用空操作指令NOP代替。這樣,控制邏輯不需要做太大修改就能滿(mǎn)足流水線(xiàn)的執行。二級指令流水線(xiàn)操作過(guò)程如圖2所示。
MCU IP核的內部電路實(shí)現
指令寄存器
指令寄存器(IR)是為了實(shí)現兩級指令流水線(xiàn)而設計的。如果沒(méi)有指令寄存器,那么取指和執行就分別需要占用一個(gè)指令周期。但如果利用IR,在上條指令執行的同時(shí)把下一條指令從程序存儲器ROM中取出來(lái)寄存在IR中,這樣在每個(gè)指令周期內同時(shí)有指令的取出和執行,等效來(lái)看,一條指令只需要一個(gè)指令周期就可以執行完畢,從而提高了效率。
指令寄存器IR的另外一個(gè)功能是當執行分支指令的時(shí)候產(chǎn)生空操作,這是采用指令流水線(xiàn)結構所必需的。例如在執行程序跳轉指令GOTO的時(shí)候,由于GOTO指令會(huì )改變程序計數器PC的值,跳轉到另外的地址,那么在執行GOTO指令時(shí)取得的緊接GOTO的下一條指令就不是要執行的下一條指令,這個(gè)已經(jīng)取得的指令就必須被屏蔽。具體的操作是在執行GOTO指令的時(shí)候,指令譯碼單元產(chǎn)生清零信號使得指令寄存器內部14位寄存單元被清零,那么下一指令周期的輸出就變?yōu)镹OP指令。在執行該空操作的同時(shí)把GOTO指令跳轉后指向地址對應的指令取出來(lái),在下個(gè)指令周期執行。
指令譯碼單元
指令譯碼單元在每個(gè)時(shí)鐘周期的q1節拍接收來(lái)自IR的14位執行指令,并對指令進(jìn)行譯碼工作,給出其它各單元的操作控制信號,包括算術(shù)邏輯單元(ALU)的運算控制信號、RAM的讀寫(xiě)控制、總線(xiàn)控制器的選擇信號、PC尋址等。
算術(shù)邏輯單元
算術(shù)邏輯單元(ALU)是微控制器運算電路的核心部分,主要功能是按照指令譯碼器輸出的控制信號,實(shí)現算術(shù)運算、邏輯運算、循環(huán)移位等操作。ALU的字寬是8位,在A(yíng)LU中做運算的2個(gè)操作數分別來(lái)自W寄存器和數據總線(xiàn),最后運算的結果由指令譯碼后的控制信號決定是存放在W寄存器中,還是通用寄存器RAM中。本文通過(guò)將加、減操作復用到一個(gè)8位超前進(jìn)位加法器,大大縮短了ALU算術(shù)運算的時(shí)間,進(jìn)而提高了整個(gè)系統的運行速度。
程序計數器和堆棧
13位的PC對8k14bit的ROM進(jìn)行尋址,八級堆棧存儲的是ROM的地址,即在主程序中調用的子程序最多允許嵌套8次。當系統復位后PC從0000h地址開(kāi)始執行,然后在每個(gè)指令周期q1節拍,PC自動(dòng)加1。當執行GOTO指令時(shí),就從指令中獲取地址來(lái)改變PC的值,然后PC再在此基礎上自動(dòng)加1,順序執行指令。當執行調用子程序指令CALL指令時(shí),把取指的地址送到堆棧保護起來(lái),然后PC裝載子程序入口的地址,接著(zhù)順序執行子程序指令直到子程序執行完,程序返回時(shí)把堆棧中的地址裝載到PC,PC繼續自動(dòng)加1順序執行指令。
在每個(gè)時(shí)鐘周期,PC會(huì )檢測是否有來(lái)自中斷處理單元的中斷請求信號發(fā)生,一旦有中斷響應,PC就會(huì )進(jìn)入中斷處理模式,把中斷現場(chǎng)的地址送入堆棧保護起來(lái),并在下一指令周期PC指向中斷向量地址0004h,這是中斷服務(wù)程序的入口地址,系統執行中斷服務(wù)程序直到中斷返回,再把保護在堆棧的中斷現場(chǎng)地址加載到PC中,然后又順序執行指令。
定時(shí)器/計數器
TIMER0為8位可讀寫(xiě)的定時(shí)器/計數器單元,其內部有一個(gè)分頻器,可以通過(guò)寄存器配置選擇定時(shí)或計數工作方式,以及分頻器的分頻比,分頻比最高可達1:128。當TIMER0從FFh到00h計數溢出時(shí),將產(chǎn)生TIMER0中斷。
中斷處理單元
中斷處理單元會(huì )響應各個(gè)中斷源的中斷,并向系統的控制電路發(fā)出總中斷請求信號。該單元設置有8位中斷控制寄存器和外設中斷寄存器,使用標志位來(lái)記錄各種中斷請求。中斷控制寄存器還包括各中斷的使能控制位以及全局中斷使能位。全局中斷使能位將使能(置1時(shí))所有未被屏蔽的中斷,或禁止(清零時(shí))所有中斷。一旦進(jìn)入中斷服務(wù)程序,可通過(guò)查詢(xún)中斷標志位確定中斷源。
雙向I/O
PORTA和PORTC為2個(gè)6位雙向I/O端口,每個(gè)端口有2個(gè)物理寄存器,分別是方向寄存器和數據寄存器。方向寄存器控制對應端口的輸入/輸出屬性,數據寄存器負責鎖存輸入/輸出數據。
MCU IP核的硬件仿真
IP軟核的仿真測試是設計過(guò)程中非常重要的環(huán)節,通過(guò)自主建立的測試向量庫,編寫(xiě)了覆蓋所有指令的測試文件,對軟核的多種指令、地址和數據組合進(jìn)行了仿真測試,提高了軟核功能仿真的測試覆蓋率,保證了設計的正確性。由PORTA和PORTC的輸出來(lái)驗證設計正確性。部分信號波形如圖3所示,在正常情況下,地址是在每個(gè)指令周期進(jìn)行加1取指的;當中斷信號int_req=1時(shí),地址在下一指令周期跳到中斷向量地址0004h,同時(shí)屏蔽下一條指令進(jìn)入指令譯碼單元,用NOP指令代替。
結語(yǔ)
本文介紹了一個(gè)8位RISC結構的高速微控制器IP軟核的設計,其指令集與PIC16F676兼容,采用模塊化結構,面向硬件映射,保證可綜合性。該核使用VerilogHDL 為RTL 級描述語(yǔ)言,通過(guò)了ActiveHDL仿真驗證后,用Quartus II 5.0進(jìn)行綜合,并在A(yíng)ltera的EP1C12Q24C08器件上實(shí)現了布局布線(xiàn)。經(jīng)測試,時(shí)鐘頻率達到了75MHz,驗證了設計的正確性,為今后的設計積累了大量有益的經(jīng)驗。
參考文獻
1.DOMER R, GAJSKIL D D. Reuse and Protection of Intellectual Property in the SpecC System[J]. Proc of the Asia and South Pacific Design Automation Conf[C]. Yokohama, Japan, 2000, 49―54
2. HanQi, ZhengJiang, JiaWei. IP Reusable Design Methodology[C], In:Proceedings of the 4th ASIC International Conference, 2001, 7562759
3. JouJer-Min, KuangShiann-Rong, WuKuang-Ming. A Hierarchical Interface Design Methodology and Models for SoC IP Integration[C]. In: CircuitsandSystems. IEEE International Symposium, 2002, vol. 2:3602363
4. PIC16/17 Microcontroller Data Book, Microchip Technology Inc., May,1995
評論