資源描述:
《《簡(jiǎn)化cpu設(shè)計(jì)》-》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、電子科技大學(xué)通信學(xué)院簡(jiǎn)化CPU設(shè)計(jì)2013年9月19一、課程設(shè)計(jì)要求1.設(shè)計(jì)16位精簡(jiǎn)指令集CPU指令系統(tǒng);2.完成精簡(jiǎn)指令集CPU的結(jié)構(gòu)設(shè)計(jì)和所有模塊的代碼編寫,并仿真驗(yàn)證;3.編寫能夠完成加法器﹑流水燈等功能的匯編程序,并翻譯成二進(jìn)制機(jī)器碼;4.設(shè)計(jì)CPU外圍模塊如分頻器,存儲(chǔ)器和IO接口,并在軟件平臺(tái)上仿真CPU執(zhí)行程序的完整過(guò)程;5.下載工程到FPGA芯片,在硬件資源上實(shí)現(xiàn)。二、設(shè)計(jì)思路1、CPU指令集系統(tǒng)設(shè)計(jì)本課程設(shè)計(jì)所設(shè)計(jì)的RISC_CPU指令長(zhǎng)度為16位,能夠處理16位數(shù)據(jù),指令中需要操作符,寄存
2、器地址和立即數(shù)等字段。完成立即數(shù)數(shù)據(jù)載入操作需要如下指令:mil:將立即數(shù)放在低8位mih:將立即數(shù)放在高8位因?yàn)橐粭l指令無(wú)法載入完整16比特立即數(shù)數(shù)據(jù),設(shè)計(jì)指令格式中用于存放立即數(shù)的字段為8bits,將16bits數(shù)據(jù)傳遞到通用寄存器需要2條指令,“milR1,I(低8位)”將立即數(shù)I的低8位傳遞給通用寄存器R1,“mihR1,I(高8位)”將立即數(shù)I的高8位傳遞給通用寄存器R1。完成存儲(chǔ)器或I/O數(shù)據(jù)載入與存儲(chǔ)的操作需要如下指令:lda:載入指定地址數(shù)據(jù)sta:儲(chǔ)存數(shù)據(jù)到指定地址inp:從端口輸入oup:輸
3、出到端口因?yàn)榇鎯?chǔ)器中有些地址的數(shù)據(jù)可能是有工程意義的,對(duì)這些地址上的數(shù)據(jù)的處理是必不可少的。“l(fā)daRdRs”將通用寄存器Rs的數(shù)據(jù)作為指定地址,將存儲(chǔ)器中該地址上的數(shù)據(jù)載入到通用寄存器Rd中,“staRdRs”將通用寄存器Rd的數(shù)據(jù)作為指定地址,將通用寄存器Rs的數(shù)據(jù)儲(chǔ)存到存儲(chǔ)器該地址上。完成通用寄存器陣列內(nèi)數(shù)據(jù)運(yùn)算操作需要如下指令:and:寄存器數(shù)據(jù)與操作orr:寄存器數(shù)據(jù)或操作not:寄存器數(shù)據(jù)非操作shl:左移shr:右移add:寄存器數(shù)據(jù)相加sub:寄存器數(shù)據(jù)相減mul:寄存器數(shù)據(jù)相乘19cmp:寄存
4、器數(shù)據(jù)相比較這些是本CPU設(shè)計(jì)能夠完成的數(shù)據(jù)處理操作,有3點(diǎn)需要注意:1、所有操作的數(shù)據(jù)必須儲(chǔ)存于通用寄存器中2、乘法運(yùn)算只能進(jìn)行8比特?cái)?shù)據(jù)相乘,溢出則取其低8位數(shù)據(jù)相乘3、cmp指令的結(jié)果會(huì)影響標(biāo)志位,該標(biāo)志位可作為分支操作的條件,但執(zhí)行cmp指令之前建議先清除相關(guān)標(biāo)志位。完成對(duì)標(biāo)志位的處理操作需要如下指令:szf:對(duì)零標(biāo)志位置1czf:清除零標(biāo)志位scf:對(duì)進(jìn)位標(biāo)志位置1ccf:清除進(jìn)位標(biāo)志位設(shè)計(jì)這些指令為分支操作的執(zhí)行創(chuàng)造了條件,還需要注意其它指令在執(zhí)行過(guò)程中同樣可能影響標(biāo)志位的值。完成指令跳轉(zhuǎn)、分支操作
5、需要如下指令:spc:保存pc的值jpa:跳轉(zhuǎn)到指定位置jpr:跳轉(zhuǎn)到相關(guān)位置brz:以零標(biāo)志位為條件的分支brc:以進(jìn)位標(biāo)志位為條件的分支spc、jpa、jpr指令為程序的循環(huán)執(zhí)行創(chuàng)造了基礎(chǔ),brz、brc指令為程序的分支執(zhí)行創(chuàng)造了基礎(chǔ)。如果一個(gè)程序不只是順序執(zhí)行,那么這些指令是必不可少的?!皊pcRdI”將當(dāng)前PC值與立即數(shù)I相加的結(jié)果送給通用寄存器Rd,“brcI”如果進(jìn)位標(biāo)志位C為1,將當(dāng)前PC的值與立即數(shù)I相加的結(jié)果作為PC的值。完成對(duì)窗口指針的操作需要如下指令:cwp:清除窗口指針awp:窗口指針與
6、立即數(shù)相加窗口指針用于存放通用寄存器的窗口偏移值,達(dá)到擴(kuò)大通用寄存器數(shù)量的目的。在最終的指令格式中通用寄存器地址(編號(hào))只有兩比特,也就是直接表示只能表示4個(gè)寄存器,經(jīng)驗(yàn)證無(wú)法完成本課程設(shè)計(jì)所設(shè)計(jì)所要求的完成流水燈的程序編寫,而加上窗口指針偏移值后,就可以表示更多的通用寄存器以達(dá)到課程設(shè)計(jì)要求。完成無(wú)操作、中斷需要如下指令:nop:無(wú)操作hlt:中斷建議本課程設(shè)計(jì)所設(shè)計(jì)的CPU的指令格式為:15-12bit規(guī)定指令的類型;11-8bit選擇寄存器,共設(shè)有8個(gè)寄存器,前2位為目的寄存器,后2位為源寄存器;7-0b
7、it為立即數(shù)。部分示例指令如下表2-1所示,其中D、S分別為目的、源寄存器,I為立即數(shù)。表2-1部分指令集系統(tǒng)助記符及定義比特15:0注釋nop無(wú)操作0000-00-00-00000000無(wú)操作hlt中斷0000-00-01-00000000中斷,遇到停止19szf對(duì)零標(biāo)志位置10000-00-10-00000000Z<=’1’czf清除零標(biāo)志位0000-00-11-00000000Z<=’0’scf對(duì)進(jìn)位標(biāo)志位置10000-01-00-00000000C<=’1’ccf清除進(jìn)位標(biāo)志位0000-01-01-00
8、000000C<=’0’cwp清除窗口指針0000-01-10-00000000WP<=’000’mvr轉(zhuǎn)移寄存器數(shù)據(jù)0001-D-S-00000000Rd<=Rslda載入指定地址數(shù)據(jù)0010-D-S-00000000Rd<=(Rs)sta儲(chǔ)存數(shù)據(jù)到指定地址0011-D-S-00000000(Rd)<=Rsinp從端口輸入0100-D-S-00000000把端口Rs進(jìn)來(lái)的數(shù)據(jù)寫入Rd