16位微控制器的設計與實(shí)現
需要說(shuō)明:codefetche為取操作碼信號,datafetche為取操作數信號。在指令最后一個(gè)周期時(shí)若有中斷請求,則插入LCALL指令進(jìn)行中斷處理,讀取下一條指令。其流程如圖5所示。本文引用地址:http://dyxdggzs.com/article/162885.htm
2.4 指令譯碼過(guò)程
在MCU設計過(guò)程中,首先完成對各條指令的指令分析工作,確定每個(gè)周期該做的動(dòng)作,然后各部件依據指令分析表進(jìn)行相關(guān)的指令譯碼(RAM控制器只譯RAM要做的動(dòng)作,ALU只譯ALU要做的動(dòng)作)。過(guò)程描述如下:在預取操作碼時(shí),CU單元對操作碼進(jìn)行譯碼確定指令的字節長(cháng)度(nr_bytes)和指令周期數(nr_cycles)。然后CU依據指令字節長(cháng)度(nr_bytes)取操作數,其他部件依據指令和當前指令周期(curcycle)執行相應的指令操作。表1為加法指令分析表,下面以加法指令的譯碼過(guò)程來(lái)說(shuō)明整個(gè)譯碼流程:
1)加法指令 ADD OPl OP2(將OPl+0P2結果寫(xiě)入OPl中);其目標碼格式為:ADD OP2 OPl,其中OPl和OP2均為操作數地址。
2)0周期 實(shí)際指上一條指令的最后一個(gè)時(shí)鐘周期,此周期codefetche取指信號有效,IPU單元將指令送入CU單元確定了指令周期和指令長(cháng)度。
3)l周期 取操作數信號datafetche有效,op2(地址)進(jìn)來(lái),被送入RAM地址線(xiàn),發(fā)讀信號(從RAM寄存器陣列取操作數2)。
4)2周期 操作數2被取入,并存入ALU中的a寄存器;此周期取操作數信號datafetche有效,opl(地址)進(jìn)來(lái),被送入RAM地址線(xiàn),發(fā)讀信號。
5)3周期 操作數l被取入,并存入ALU中的b寄存器;加法器立刻進(jìn)行a+b運算。
6)4周期 將加法結果放到RAM數據線(xiàn)上,地址線(xiàn)=opl,發(fā)寫(xiě)信號。將加法結果寫(xiě)回到opl中,并依據結果對PSW進(jìn)行處理。
7)5周期 無(wú)動(dòng)作,用于寫(xiě)回操作的過(guò)程。
3 驗證結果
3.1 仿真驗證
芯片的功能與結構設計,只是設計流程的一部分,為保證最終設計成功,必須對其全面仿真與功能驗證。對MCU的測試方法如下:1)功能模塊的單元測試,驗證模塊的功能正確性,包括接口時(shí)序等。2)系統集成測試,首先編寫(xiě)簡(jiǎn)單的機器碼測試向量進(jìn)行初步調試:然后使用編譯器寫(xiě)匯編程序,編譯成二進(jìn)制機器碼進(jìn)行程序功能測試。在集成測試中,編寫(xiě)匯編測試程序,用編譯器編譯成機器碼,在Cadenee NC下運行這些測試程序進(jìn)行仿真測試。對每條指令均測試了其各種尋址方式,且測試程序自動(dòng)向DEBUG寄存器寫(xiě)測試結果,以方便調試。經(jīng)過(guò)復雜的測試和不斷修正,驗證結果顯示MCU指令執行的正確性。
3.2 FPGA驗證
使用的FPGA器件是StratixⅡ型號為EP1S40F780C7。綜合結果顯示:A8096使用3 565個(gè)LE(Logic Element)。時(shí)序分析結果:A8096可以運行在49.93 MHz的時(shí)鐘頻率下。A8096占用FPGA資源分布情況如圖6所示。
4 結論
本設計中,采用RISC技術(shù)中的硬布線(xiàn)控制邏輯,有利于減少MCU面積、降低功耗以及提高M(jìn)CU執行效率,FPGA實(shí)現表明其只占用了3 565個(gè)LE單元,工作時(shí)鐘可達50 MHz。同時(shí)該MCU具有很強的擴展性與實(shí)用性,應用領(lǐng)域廣泛,可方便與定時(shí)器、串行通訊接口(I2C)、串行外圍接口(SPI)、模數(A/D)轉換器等外圍功能單元組成各種嵌入式系統,完全具備實(shí)際應用價(jià)值。
評論