章鳴嬛,葉有祥
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅猛發(fā)展,尤其是大規(guī)??删幊唐骷绗F(xiàn)場(chǎng)可編程邏輯陣列FPGA(Field Programmable Gate Array)的出現(xiàn),在苛刻的實(shí)時(shí)處理系統(tǒng)的要求下,出現(xiàn)了一種新穎靈活的技術(shù)——可重構(gòu)技術(shù)。它采用實(shí)時(shí)電路重構(gòu)技術(shù)[1],在運(yùn)行時(shí)根據(jù)需要,動(dòng)態(tài)改變系統(tǒng)的電路結(jié)構(gòu),主要通過(guò)對(duì)系統(tǒng)中的可編程器件進(jìn)行重配置或部分重配置,從而使系統(tǒng)既有硬件優(yōu)化所能達(dá)到的高速度和高效率,又能像軟件那樣靈活可變,易于升級(jí)??芍貥?gòu)體系結(jié)構(gòu)[2]能夠跟據(jù)不同的應(yīng)用需求,靈活、快速地改變自身的結(jié)構(gòu),以便能為每個(gè)特定的應(yīng)用提供與之相匹配的體系結(jié)構(gòu)。
1.1.1 “實(shí)驗(yàn)CPU”的總體結(jié)構(gòu)框圖
控制器是CPU及整個(gè)處理器系統(tǒng)的核心,它負(fù)責(zé)指揮控制協(xié)調(diào)處理器系統(tǒng)的所有工作。根據(jù)微操作控制信號(hào)產(chǎn)生方法的不同,控制器可分為常規(guī)邏輯控制器和微程序控制器兩種。
“實(shí)驗(yàn)CPU”采用微程序控制器的方式,其總體邏輯結(jié)構(gòu),如圖1所示:
圖1 實(shí)驗(yàn)CPU的總體邏輯框圖
1.1.2 系統(tǒng)主要模塊概述
總線:本系統(tǒng)采用單總線,即微處理器的內(nèi)部總線和外部總線均為一條總線。采用16位地址總線;結(jié)合實(shí)驗(yàn)平臺(tái)要求,采用兩條數(shù)據(jù)總線,一條是入32位CPU的數(shù)據(jù)總線DBin,另外一條是出32位CPU的數(shù)據(jù)總線DBout。需要讀內(nèi)存時(shí),連至DBin,要寫內(nèi)存時(shí),連至DBout。
寄存器組:寄存器模塊寄存器組中共包括R0至R31共32個(gè)寄存器。
運(yùn)算器部件ALU:ALU包括含累加器A和A2、暫存器ACT、狀態(tài)寄存器等,可完成各種算術(shù)、邏輯運(yùn)算功能,如加減、與、或及移位等。
指令部件:指令部件模塊包括指令寄存器、程序計(jì)數(shù)器(PC)及其控制電路等。
微程序控制部件:微程序控制摸塊包括微指令寄存器、微程序計(jì)數(shù)器及它的控制電路(加 1、接數(shù)等)、微指令寄存器、時(shí)序控制電路、微操作信號(hào)發(fā)生電路等。
存儲(chǔ)器:存儲(chǔ)器為外接的RAM存儲(chǔ)器,容量為32K*8b。
外設(shè):為了實(shí)現(xiàn)外部輸入信息的處理,系統(tǒng)中使用4*4鍵盤作為外設(shè)。對(duì)存儲(chǔ)器和外設(shè)分別設(shè)置獨(dú)立的讀/寫信號(hào)。
本系統(tǒng)指令集共設(shè)計(jì)26條常用指令,包括傳送、運(yùn)算、存取及跳轉(zhuǎn)、棧操作、移位、子程序調(diào)用等類型,尋址方式包括立即尋址、直接尋址,間接尋址及相對(duì)尋址等。
1.2.1 指令執(zhí)行流程
分別對(duì)傳送及加法指令在系統(tǒng)邏輯框圖中的執(zhí)行流程進(jìn)行列舉,如表1所示:
表1 指令集舉例及指令執(zhí)行流程
1.2.2 指令編碼
對(duì)表1中列舉的指令進(jìn)行指令編碼,如表2所示:
表2 指令編碼
“實(shí)驗(yàn)CPU”采用微程序控制器。將微程序控制信號(hào)以微碼的形式構(gòu)成微指令,編成多微指令的微程序,存于存儲(chǔ)器中。
1.3.1 微指令編碼及微程序編碼
設(shè)計(jì)微處理器的微指令寬度為32位。微操作數(shù)少于32個(gè),可采用直接表示法每一個(gè)微操作信號(hào)都由微指令相應(yīng)的某一位來(lái)控制。
根據(jù)各指令在系統(tǒng)邏輯框圖中的執(zhí)行流程和微指令編碼中信號(hào)的有效性,得到微程序編碼[3]。以表1中的傳送指令:“MOV A,Ri”為例,說(shuō)明如下:
為了執(zhí)行該條指令,首先必須根據(jù)表1中的指令執(zhí)行流程,得到在指令執(zhí)行的過(guò)程中,需要用到哪些控制信號(hào),而后根據(jù)這些控制信號(hào)的有效與否,對(duì)控制信號(hào)進(jìn)行取值。
該指令為單字節(jié)指令,因此,共需要兩條微指令來(lái)執(zhí)行,前條執(zhí)行本條指令的功能,后條為“取指微指令”。即:
001,0111,1110,1000,1110,0011,1010,1101 17E8E3AE
001,1100,1110,1000,1101,0011,1010,0001 1CE8D3A1
1.3.2 時(shí)鐘發(fā)生選擇器及時(shí)鐘分頻器的設(shè)計(jì)
時(shí)鐘發(fā)生選擇器的存在是由于需要產(chǎn)生不同的波形,“實(shí)驗(yàn)CPU”連續(xù)運(yùn)行時(shí)是連續(xù)的方波,單步運(yùn)行時(shí)是兩個(gè)脈沖,還需要產(chǎn)生持續(xù)的低電平用來(lái)暫停CPU。
時(shí)鐘分頻器的存在是由于ARM9實(shí)驗(yàn)平臺(tái)上提供的時(shí)鐘較快,加入該時(shí)鐘分頻器保證了在每次內(nèi)存操作完成之后,實(shí)驗(yàn)CPU才進(jìn)入下半個(gè)時(shí)鐘周期。本系統(tǒng)中分頻倍率為16777216倍,可以將60MHz的晶振頻率降到0.25-0.5Hz。
為了利用可重構(gòu)技術(shù)及可編程資源在物理上實(shí)現(xiàn)“實(shí)驗(yàn)CPU”,需要將實(shí)驗(yàn)CPU系統(tǒng)進(jìn)行VHDL(Very high speed integrated circuit Hardware Description Language,VHDL)描述,形成可綜合的代碼[4]。
例如,微程序控制器模塊功能的部分VHDL描述如下[5]:
--MCLK,MPCK,MICK
process(CLK,RESET,RUN)
begin
if(RESET='0')then MCLK<='0';
elsif falling_edge(CLK)then
if(RUN='1')then MCLK<=not MCLK;
end if;
end if;
end process;
--MCLR
process(MCLK,RESET)
begin
if(RESET='0')then MCLR<='0';
elsif rising_edge(MCLK)then MCLR<='1';
end if;
end process;
本開發(fā)中所用的綜合工具為Synplicity,它是VHDL/VerilogHDL綜合軟件,生成“.edf”文件后可調(diào)入任何PLD開發(fā)平臺(tái)進(jìn)行布線、仿真和下載。
將經(jīng)過(guò)綜合而生成網(wǎng)表文件cpu_32.edf文件,下載到目標(biāo)板的可編程資源FPGA中,從而構(gòu)成可重構(gòu)的“實(shí)驗(yàn)CPU”。
論文涉及的雙CPU監(jiān)控系統(tǒng),兩個(gè)處理器內(nèi)核均可正常運(yùn)行指令、執(zhí)行任務(wù);利用ARM9實(shí)驗(yàn)板平臺(tái)的ARMCPU來(lái)監(jiān)視用“實(shí)驗(yàn)CPU”的工作情況,并模擬實(shí)驗(yàn)CPU的內(nèi)存,以實(shí)現(xiàn)機(jī)器碼運(yùn)行;通過(guò)串行口發(fā)送的指令來(lái)完成單步、運(yùn)行、停止、實(shí)驗(yàn)CPU指令文件傳送、實(shí)驗(yàn)CPU內(nèi)存修改、內(nèi)存察看等工作。本系統(tǒng)利用一個(gè)已知的CPU來(lái)監(jiān)控可重構(gòu)的另一CPU,研究雙CPU監(jiān)控系統(tǒng),嘗試對(duì)新的體系結(jié)構(gòu)的研究。
為了實(shí)現(xiàn)數(shù)據(jù)監(jiān)控,例如地址線、微指令地址線、數(shù)據(jù)線的工作狀態(tài),及微指令數(shù)據(jù)線數(shù)值的讀取,需要在對(duì)應(yīng)的輸出部件連上了狀態(tài)寄存器(狀態(tài)口),從而在程序設(shè)計(jì)中提供了查看接口;而對(duì)于“實(shí)驗(yàn)CPU”的“運(yùn)行”與“重啟”接口,進(jìn)行了接上命令寄存器(控制口)的連接,從而可以控制“實(shí)驗(yàn)CPU”的運(yùn)行與初始化。
雙CPU監(jiān)控系統(tǒng)的工作內(nèi)容可以分為兩部分。一部分是初始化工作,其中涉及到中斷服務(wù)程序的初始化、對(duì)通信口的初始化,對(duì)模擬內(nèi)存的初始化等工作;另一部分是狀態(tài)機(jī),主要由4種不同的大狀態(tài)組成,分別是:STOP(START),RUNNING,STEP,COM。狀態(tài)之間的關(guān)系,如圖4所示:
圖4 雙CPU監(jiān)控系統(tǒng)的工作狀態(tài)轉(zhuǎn)換
(1)START狀態(tài)下,32位“實(shí)驗(yàn)CPU”未處于運(yùn)行狀態(tài)。因此相關(guān)的狀態(tài)是設(shè)置CPU的“重啟”及“運(yùn)行”均為無(wú)效狀態(tài)(低電平0)。
(2)RUNNING(連續(xù)運(yùn)行)狀態(tài)下,32位“實(shí)驗(yàn)CPU”全速運(yùn)行,CPU的“重啟”及運(yùn)行均處于有效狀態(tài)。時(shí)鐘發(fā)生選擇器需要產(chǎn)生連續(xù)的方波。系統(tǒng)還特別設(shè)置了直接進(jìn)入STOP(START)狀態(tài)的快捷鍵。
(3)STEP(單步運(yùn)行)狀態(tài)下,32位“實(shí)驗(yàn)CPU”單步運(yùn)行,時(shí)鐘發(fā)生選擇器產(chǎn)生兩個(gè)脈沖。之后每按一次“單步運(yùn)行”快捷鍵T,“實(shí)驗(yàn)CPU“完成一個(gè)工作周期,并打印出幾個(gè)監(jiān)控接口的觀察值。在STEP中的工作狀態(tài),如圖5所示:
圖5 系統(tǒng)進(jìn)入STEP模式
(4)COM狀態(tài)下,將有3個(gè)功能菜單可供選擇:0選擇文件(機(jī)器指令文件,即S19文件)傳輸,1、選擇模擬內(nèi)存修改,2、選擇模擬內(nèi)存察看,3、選擇退回到執(zhí)行(START)模式。在這個(gè)狀態(tài)下,文件傳輸就是將機(jī)器指令文件通過(guò)串行口傳至ARM CPU,解碼后放在指定內(nèi)存地址中,然后可以退回到執(zhí)行模式下運(yùn)行即可;內(nèi)存察看的方法是,選擇2即可輸入地址,按回車可以查看;內(nèi)存修改則輸入地址和需要修改的內(nèi)容即可。如圖6所示:
圖6 COM模式下內(nèi)存查看
通過(guò)上述分析,可以看出雙CPU監(jiān)控系統(tǒng)具有以下特點(diǎn):
(1)該系統(tǒng)在工作時(shí)能夠正常穩(wěn)定的運(yùn)行指令和執(zhí)行任務(wù),可實(shí)現(xiàn)處理器資源的并行處理,提高處理器的實(shí)時(shí)工作性能。
(2)在工作時(shí),ARM-CPU能夠監(jiān)視“實(shí)驗(yàn)CPU”的工作狀態(tài),提高實(shí)驗(yàn)CPU工作的穩(wěn)定性。
(3)本系統(tǒng)采用可重構(gòu)資源實(shí)現(xiàn),實(shí)現(xiàn)硬件系統(tǒng)的軟件化,便于系統(tǒng)升級(jí)。
本系統(tǒng)的另一特點(diǎn)是,32位的“實(shí)驗(yàn)CPU”具有較快的系統(tǒng)時(shí)鐘,大約僅需要0.01秒即可完成一個(gè)周期,有較高的工作效率,并引入了鍵盤作為外設(shè),進(jìn)行內(nèi)存與外設(shè)的交互。
為了節(jié)省可重構(gòu)的資源,也采用了模擬內(nèi)存的方式,但結(jié)果顯示,速度立刻會(huì)下降。這是因?yàn)閮?nèi)存是模擬的,因此很多操作就會(huì)占用時(shí)間。以內(nèi)存讀取為例,首先,由于地址是通過(guò)放在內(nèi)存中的一個(gè)變量實(shí)現(xiàn)的,對(duì)其讀取意味著是對(duì)內(nèi)存操作;其次,要讀取指定地址的模擬內(nèi)存的值,這又需要一次內(nèi)存操作;最后將結(jié)果放置于數(shù)據(jù)總線DBin上,這也是一次內(nèi)存操作。綜合多方面的因素,大約需要4秒鐘才能完成一個(gè)工作周期。
本文論述采用可重構(gòu)技術(shù),利用實(shí)驗(yàn)平臺(tái)的可編程資源,設(shè)計(jì)出簡(jiǎn)單靈活的微處理器系統(tǒng),該微處理器擁有指令集和控制單元,能夠正確執(zhí)行所有指令;并利用該平臺(tái)上的另一處理器ARM-CPU,可與已有的微處理器構(gòu)成雙CPU監(jiān)控系統(tǒng),從而獲得更高可靠性和實(shí)用性系統(tǒng)。并可以根據(jù)根據(jù)需要添加適當(dāng)?shù)耐獠吭O(shè)備,如在擴(kuò)展實(shí)驗(yàn)中,本研究還將外部的模擬信號(hào)引入并進(jìn)行數(shù)模轉(zhuǎn)換,再對(duì)得到的數(shù)字信號(hào)分析處理。
[1]章鳴嬛.基于可重構(gòu)技術(shù)的雙核微處理器系統(tǒng)的設(shè)計(jì)[J].微型電腦應(yīng)用,2011,27(7):12-14.
[2]徐佳慶,鄔貴明,竇勇.二維DCT在粗粒度可重構(gòu)處理器上的實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2008,34(20):257.
[3]徐允文,蔡敏.基于微程序技術(shù)的存儲(chǔ)控制器的研究和設(shè)計(jì)[J].半導(dǎo)體技術(shù),2007,32(11):997.
[4]黃潔.可編程邏輯器件及其應(yīng)用前景[J].中國(guó)科技信息,2005,13:38.
[5]陳耀和.VHDL語(yǔ)言設(shè)計(jì)技術(shù)[M].北京:電子工業(yè)出版社,2004:7-8.