版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康氖紫壤肕INISYS中的MIPS指令編寫一個(gè)小程序;將簡(jiǎn)單模型機(jī)和小程序一起加載到N4主板上;能夠正確執(zhí)行編譯后的程序,并觀察相關(guān)的程序。實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái),DigilentNexys4TM開(kāi)發(fā)板,XilinxVivado開(kāi)發(fā)套件,MINISYS匯編器。實(shí)驗(yàn)原理MINISYS原型結(jié)構(gòu)MINISYS采用32位MIPS指令中最常用的31條指令,其寄存器組,指令格式等均采用MIPS指令系統(tǒng)相同的格式。共有32個(gè)32位寄存器,32位定長(zhǎng)格式指令,5種尋址方式。MINISYS寄存器組寄存器名寄存器號(hào)約定用途$zero0常數(shù)0,該寄存器永遠(yuǎn)只返回0。$at1用做匯編器的暫時(shí)變量。$v0~$v12~3用來(lái)存放一個(gè)子程序(函數(shù))的非浮點(diǎn)運(yùn)算的結(jié)果或返回值。$a0~$a34~7存放子程序(函數(shù))調(diào)用時(shí)的非浮點(diǎn)參數(shù)。$t0~$t78~15暫時(shí)變量,子程序(函數(shù))使用時(shí)不保存這些寄存器的值,因此調(diào)用后它們的值會(huì)被破壞。$s0~$s716~238個(gè)子程序用寄存器。子程序(函數(shù))必須在返回之前恢復(fù)這些寄存器的值以保證其沒(méi)有變化。$t8~$t924~25暫時(shí)變量,子程序(函數(shù))使用時(shí)不保存這些寄存器的值,因此調(diào)用后它們的值會(huì)被破壞。$k0~$k126~27為中斷/異常處理保留。由操作系統(tǒng)的異常或中斷處理程序使用,不恢復(fù)原來(lái)的值。$gp28全局指針。某些運(yùn)行時(shí)系統(tǒng)用來(lái)為Static或Extern變量提供簡(jiǎn)單的訪問(wèn)方式。$sp29堆棧指針,對(duì)它的調(diào)整必須顯式的通過(guò)指令來(lái)實(shí)現(xiàn),硬件不支持堆棧指針的調(diào)整。$s8/$fp30第9個(gè)子程序用寄存器變量,子程序用它做堆棧幀指針。$ra31存放調(diào)用子程序(函數(shù))時(shí)的返回地址。MINISYS指令的尋址方式立即數(shù)尋址指令中第3操作數(shù)可使用16位二進(jìn)制立即數(shù)寄存器尋址操作數(shù)存放在寄存器中,指令里放的是寄存器號(hào)變址尋址操作數(shù)存放在數(shù)據(jù)存儲(chǔ)器中,其有效地址由兩部分組成,基地址放在一個(gè)寄存器中,偏移部分為一個(gè)16位的立即數(shù)PC相對(duì)尋址操作數(shù)是下一條指令的PC值(PC+4)加上一個(gè)16位偏移量地址左移兩位的值偽直接尋址26位偏移地址+PC高4位30位字地址(MINISYS中直接用26位偏移地址左移兩位)MINISYS端口地址分配表接口部件首地址數(shù)碼管0FFFFFC00H4×4鍵盤(Pmod)0FFFFFC10H定時(shí)/計(jì)數(shù)器0FFFFFC20H脈沖寬度調(diào)制器0FFFFFC30H異步串行口0FFFFFC40H看門狗0FFFFFC50HLED0FFFFFC60H撥碼開(kāi)關(guān)0FFFFFC70HMINISYS匯編器使用方法匯編器支持31條指令,采用.asm源文件輸入,同時(shí)輸出結(jié)果可以由XilinxBlockRAMIP核直接加載;支持4KB,8KB,16KB,32KB,64KB和128KB存儲(chǔ)器。編譯器容許打開(kāi)多個(gè)文檔進(jìn)行編輯,匯編器會(huì)選擇當(dāng)前激活的文檔進(jìn)行編譯。支持關(guān)鍵詞、數(shù)字及注釋等的語(yǔ)法高亮,并且可以訪問(wèn)中文路徑及添加中文注釋(Unicode編碼)。用戶還可以進(jìn)行相關(guān)的查找和替換等操作。MINISYS單周期數(shù)據(jù)通路MINISYS匯編程序設(shè)計(jì)匯編語(yǔ)句格式[標(biāo)號(hào):]指令助記符第1操作數(shù)[,第2操作數(shù)[,第3操作數(shù)]][#注釋][]中的內(nèi)容為可選項(xiàng)標(biāo)號(hào)可以是以英文字母開(kāi)頭的字母-數(shù)字串,可以由字母、數(shù)字、下劃線,“$”和“.”組成,長(zhǎng)度不超過(guò)8個(gè)字符。注意不要和保留字重名。標(biāo)號(hào)和指令助記符都不區(qū)分字母的大小寫匯編代碼是以行為單位的,不支持一行內(nèi)有多條指令“#”到行末的是注釋部分,但要注意,“#”不要出現(xiàn)在一行的最左列,因?yàn)樽钭罅械摹?”表示要啟用C預(yù)編譯器偽指令數(shù)據(jù)段定義偽指令.data [addr] 定義數(shù)據(jù)段,程序的變量需要在該偽指令下定義。匯編程序應(yīng)分配和初始化變量的存儲(chǔ)空間。如果定義了addr,則該數(shù)據(jù)段從這個(gè)addr地址開(kāi)始。例:.data #數(shù)據(jù)段開(kāi)始buf:.word128,434,174559,7.data0x10000200arra:.word20,70,-15,67數(shù)據(jù)定義偽指令[變量名:]數(shù)據(jù)類型初始值[,初始值[,初始值……]]變量名是以字母開(kāi)頭的字母數(shù)字串,字母包括‘A’~‘Z’26個(gè)大寫字母和‘a(chǎn)’~‘z’26個(gè)小寫字母,數(shù)字包括‘0’~‘9’,字母大小寫不作區(qū)分。類型之后是數(shù)據(jù)定義的初始值列表,兩個(gè)數(shù)據(jù)之間用西文逗號(hào)隔開(kāi)。數(shù)據(jù)可以是十六進(jìn)制或十進(jìn)制表示。十六進(jìn)制數(shù)需要用0x作為前綴十進(jìn)制數(shù)不需要前綴或后綴如果要連續(xù)的定義幾個(gè)大小相等的數(shù)據(jù),可以在初始值列表中采用“初始值:重復(fù)數(shù)”的格式來(lái)表示。字符串的初始值要用""括起來(lái)。變量名具有地址屬性,表示了該變量的首地址。類型用于定義變量的數(shù)據(jù)類型,主要有如下數(shù)據(jù)類型。類型數(shù)據(jù)類型.byte字節(jié)類型(8bits).half半字類型(16bits).word字類型(32bits).float單精度浮點(diǎn)類型.double雙精度浮點(diǎn)類型.asciiASCII字符串類型.asciiz以'\0'結(jié)尾的ASCII字符串類型數(shù)據(jù)定義的例子如下:buf:.byte3,8,87,21#定義了4個(gè)字節(jié)數(shù),3,8,87,21.half0x34a,15 #定義了2個(gè)半字(16位)數(shù), #十六進(jìn)制的34a和十進(jìn)制數(shù)15.word6:3,2 #定義了4個(gè)字(32位)數(shù),6,6,6,2str:.ascii"hello\0","a"str2:.asciiz"hello".float12.678.double12.678,7.6137e-1代碼段定義偽指令.text[addr]定義代碼段,如果定義了addr,則該代碼段從這個(gè)addr地址開(kāi)始。例:.text #代碼段開(kāi)始lw$t0,buff($t1)匯編程序結(jié)構(gòu).DATA0x100000 #數(shù)據(jù)段定義開(kāi)始BUF:.WORD0X000000FF,0X55005500 #定義數(shù)據(jù).TEXT #代碼段定義開(kāi)始start:addi$t0,$Zero,0 #程序的第一條指令必須有一個(gè)標(biāo)號(hào),$t0=0lw $v0,buf($t0) #$v0=000000FF(buf[0])addi$t0,$t0,4 #$t0=$t0+4lw $v1,buf($t0) #$v1=55005500(buf[4])add$v0,$v0,$v1 #$v0=$v0+$v1=550055FF addi$t0,$t0,4 #$t0=$t0+1 sw$v0,buf($t0)#buf[8]=550055FF j start實(shí)驗(yàn)步驟示例是編寫程序不斷地從撥碼開(kāi)關(guān)讀出數(shù)據(jù),并將數(shù)據(jù)輸出到LED燈上。打開(kāi)MINISYS匯編器,創(chuàng)建文件并保存文件,然后開(kāi)始編輯匯編程序。關(guān)鍵代碼步驟如下:第一步,$28中放端口地址的高20位lui$1,0xffffori$28,$1,0xF000第二步,讀撥碼開(kāi)關(guān)端口lw $s1,0C70H($28)第三步,將撥碼開(kāi)關(guān)的數(shù)據(jù)寫到LED上sw$1,0xC60($28)最后根據(jù)匯編程序的結(jié)構(gòu)來(lái)編輯完成程序,最終的效果如下圖。使用MINISYS匯編器編寫匯編程序完成后,選擇菜單欄下的64K,然后編譯通過(guò)無(wú)錯(cuò)誤后,將生成2個(gè)coe文件(在根目錄下有個(gè)output文件夾)。打開(kāi)MINISYS項(xiàng)目,導(dǎo)入2個(gè)coe文件分別替代rom和ram中的文件,rom的操作如下圖所示。點(diǎn)擊確定后,會(huì)彈出如下對(duì)話框,選擇Generate。ram文件的替代操作類似。依次按照下圖的步驟綜合項(xiàng)目源文件、實(shí)施活動(dòng)的設(shè)計(jì)合成的網(wǎng)表。綜合的目的是檢查代碼是否存在語(yǔ)法錯(cuò)誤,生成網(wǎng)表后可以綁定相應(yīng)的管腳。綁定輸入輸出變量對(duì)應(yīng)的開(kāi)發(fā)板的引腳,將輸入變量switch2N4對(duì)應(yīng)的端口綁定到開(kāi)關(guān)的16位,將輸出變量led2N4的對(duì)應(yīng)端口綁定到對(duì)應(yīng)的16個(gè)LED上,如原理圖所示,并保存生成的約束文件。然后按照上圖的第3步驟生成編碼文件。連接開(kāi)發(fā)板,并打開(kāi)開(kāi)發(fā)板開(kāi)關(guān),將程序下載到開(kāi)發(fā)板上,觀察輸入不同操作對(duì)應(yīng)的撥碼開(kāi)關(guān)和LED的顯示情況。課程設(shè)計(jì)選擇題目如下:題目1——節(jié)日彩燈按如下要求設(shè)計(jì)一個(gè)有16個(gè)發(fā)光二極管的彩燈程序。能夠循環(huán)執(zhí)行每隔大約半秒變換一次(用循環(huán)來(lái)獲得大約半秒延遲)每次燈的變換如下,1表示亮,0表示滅燈。燈亮的順序是,從兩邊向中間依次點(diǎn)亮,再?gòu)闹虚g向兩邊依次熄滅。題目2——原碼一位乘(見(jiàn)附件1)以原碼一位乘為基礎(chǔ),設(shè)計(jì)一個(gè)兩個(gè)數(shù)乘法程序。不斷從撥碼開(kāi)關(guān)中讀入數(shù)據(jù),其中SW3-SW0為乘數(shù),SW15~SW12為被乘數(shù),乘法結(jié)果輸出到LD7~LD0。要求程序中必須出現(xiàn)SRL,SLL指令。題目3——多功能計(jì)算程序內(nèi)部有一變量VAL=4,LED始終輸出VAL的低16位值。SW15/SW14/13為功能選擇,含義如下表。SW15SW14SW13動(dòng)作X00無(wú)動(dòng)作001將SW12~SW0這13位作為輸入賦值給VAL010VAL=VAL+1(每隔約1秒動(dòng)作一次)011VAL=VAL-1(每隔約1秒動(dòng)作一次)101VAL左移1位(每隔約1秒動(dòng)作一次)110VAL邏輯右移1位(每隔約1秒動(dòng)作一次)111VAL算數(shù)右移1位(每隔約1秒動(dòng)作一次)附件1原碼一位乘原碼1位乘與乘法極為相似,只差在符號(hào)位,所以我們可以通過(guò)被乘數(shù)和乘數(shù)的兩個(gè)符
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版廣告投放合同詳細(xì)條款
- 學(xué)期家委會(huì)工作計(jì)劃六篇
- 中國(guó)紅酒包裝設(shè)計(jì)行業(yè)發(fā)展監(jiān)測(cè)及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 中國(guó)單雙面膠粘帶項(xiàng)目投資可行性研究報(bào)告
- 中國(guó)鹽酸貝那普利行業(yè)市場(chǎng)供需格局及投資規(guī)劃建議報(bào)告
- 消費(fèi)者效用最大化探究問(wèn)卷調(diào)查報(bào)告
- 大學(xué)生電工實(shí)習(xí)報(bào)告錦集十篇
- 網(wǎng)頁(yè)課程設(shè)計(jì)備忘錄
- 2022年醫(yī)院后勤個(gè)人工作計(jì)劃
- 筷子課程設(shè)計(jì)教案
- 2024年機(jī)動(dòng)車檢測(cè)站質(zhì)量手冊(cè)程序文件記錄表格合集(根據(jù)補(bǔ)充要求編制)
- 公司未來(lái)發(fā)展規(guī)劃及目標(biāo)制定
- 2024年01月11067知識(shí)產(chǎn)權(quán)法期末試題答案
- 2025版國(guó)家開(kāi)放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(2)》期末紙質(zhì)考試案例分析題庫(kù)
- 一年級(jí)家長(zhǎng)會(huì)課件2024-2025學(xué)年
- 情侶防出軌合同模板
- 2024公安機(jī)關(guān)人民警察高級(jí)執(zhí)法資格考試題及答案
- 2023-2024學(xué)年云南省昆明市五華區(qū)八年級(jí)(上)期末物理試卷
- 陜西省渭南市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)2
- 廢棄催化劑中貴金屬的回收
- 期末 (試題) -2024-2025學(xué)年譯林版(三起)(2024)英語(yǔ)三年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論