freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mips的31條指令集和ise軟件的單周期cpu設(shè)計與實現(xiàn)(更新版)

2024-12-30 06:08上一頁面

下一頁面
  

【正文】 電路圖時序有錯誤,才解決問題。 reg CLRGetins。 wire [4:0] Rw。 wire RegWr。 wire Branch。 wire LUI。 wire [3:0] ALUCtr。 1。 memory_initialization_vector = 00000000000000000000000000000000, 10011111111111111111111111111111, 00000000000000000000000000001111, 00000000000000000000000000000010, 00000000000000000000000001011000, 11111111111111111111111111111111。 CLRGetins = 0。 wire [31:0] pcjia4。 wire [31:0] luibit。 wire IsShift。 wire Arith。 wire [31:0] Instaddr。 wire REGWe。雖然比起有些同學(xué)的設(shè)計我們的功能沒有鮮明 的 特色,但我們在發(fā)現(xiàn)、 分析 和解決問題的過程中,考慮問題逐漸 變得 更加的全面、仔細。 在控制器的設(shè)計中,需要逐步化簡控制信號的邏輯關(guān)系, ALU 控制器設(shè)計還算比較簡單,在整個電路的控制器設(shè)計中發(fā)現(xiàn)對每個信號都要做大量重復(fù)性質(zhì)很強的的化 簡操作,一旦出錯還非常不容易檢查,需要從化簡開始從頭檢查。 38 sltiu、 j指令 33. 立即數(shù)無符號比較 ($110) $24=1 else $24=0; 34. 跳轉(zhuǎn)到 0000098H。 36 ori、 xori 指令 25. 立即數(shù)逐位或 $8=$1 || 1234H。 18. 邏輯右移 $17 =$5$3。 10. 逐位或非 $10= ~($1 || $2)。 add、 addu 指令 3. 有符號加 $3=$2+$1。 執(zhí)行 j,jal時,總是會導(dǎo)致跳轉(zhuǎn)指令在執(zhí)行下一條指令后才跳轉(zhuǎn)。 電路圖: 詳見“ ”、“ ”: 25 26 遇到的問題: IPcore 生成的電路符號相對于我們的輸入輸出信號數(shù)量來說過于巨大,占用大量畫圖空間,極為不實用,而且非常不美觀。 設(shè)計圖: 20 所用部件: 32 位加法器 1632 位擴展器 左移 2 位器 1 位與門 32 位寄存器 32 位二選一選擇器 詳情見“ ” 電路圖 : 21 遇到的問題: 在執(zhí)行跳轉(zhuǎn)指令時會 先執(zhí)行原先 PC+4 的 指令, 再 執(zhí)行跳轉(zhuǎn) 目標 指令 。 ALU 設(shè)計思路 : ALU 的職能是執(zhí)行算術(shù)運算和邏輯運算,因此需要有兩個操作數(shù)輸入,一個操作數(shù)輸 18 出,一組控制信號輸入,一組狀態(tài)信號輸出; 核心運算器件是兩個 adsu16 串聯(lián)組成的 adsu32 32 位加減法器。 對所有指令進行這樣的表示后,我們會得到 31 個輸出,分別代表 31 條指令。 最終的指令可以分為以下五類: A. 利用寄存器 操作類: add, addu, sub, subu, and, or, xor, nor, slt, sltu B. 需要 移位操作類: sll, srl, sra, sllv, srlv, srav C. 立即數(shù)操作類: addi, addiu, andi, ori, xori, slti, sltiu, lui D. 利用 存儲器操作類: sw, lw E. 跳轉(zhuǎn)指令類: beq, bne, jr, j, jal 在指令再次分類后,需要對各類指令進行逐條分析,在分析 過程中可以逐漸了解所需的元器件和具體的控制信號。 寄存器組織 32 個寄存器混合使用,沒有特定的寄存器類型限制,便于程序使用。 6. 只有 一個時鐘源, 同時 能滿足一個時鐘周期內(nèi)修改寄存器和存儲器、跳轉(zhuǎn)等復(fù)雜操作。理解各個內(nèi)部元器件受時序的控制原理及實現(xiàn)。 4. 加深對 CPU 內(nèi)部數(shù)據(jù)通路、各個工作器件的設(shè)計、實現(xiàn)及工作原理的掌握。 5. 所有指令都在一個周期內(nèi)執(zhí)行完畢。指令系統(tǒng)中的各種條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令,就是為了實現(xiàn)指令的跳躍尋址而設(shè)置的。 在前期 ALU 的設(shè)計中,為了減少 ALU的控制器復(fù)雜度,我們盡量簡化了 ALU 的功能,只在原來加減法的基礎(chǔ)上拓展了邏輯 運算與比較功能,在最后的數(shù)據(jù)通路中直接實現(xiàn)各個移位操作。 對于 R 型指令,我們用另一種方式處理: 16 首先,由于 R 型指令具有統(tǒng)一的特點: op 為全 0,所以可以用一個與門表示所輸入的指令為 R 型指令: 在 OP 輸入全 0 時,這個與門輸出為 1,即判定指令為 R 型指令; 然后,由于 R 型指令依靠 function 區(qū)分,所以使用和區(qū)分 I/J 型指令一樣的模塊化設(shè)計思路,將 R 型指令的 function 對應(yīng)位置進行與運算: 以 ADD 指令為例: 因此,在輸入 op 為 000000, function 為 100000 時,這個與門的輸出 ADD 為 1。 解決方法: 我們原創(chuàng)性地設(shè)想了模塊化的設(shè)計思路:分別將每條指令由 OP 輸入和 FUNTION 輸入表示,當(dāng)輸入的 op 和 function 在 31 條指令的指令集中有效時,對應(yīng)名字的指令引腳會為 1,其他指令引腳為 0;然后由真值表得出每個控制信號在哪些指令時為 1,將對應(yīng)的指令信號通過或門連接得到輸出; 進行上述修改后,再進行真值表擴展時,我們只需要關(guān)注擴展出的部分在輸入哪些指令時,各信號的真值為 1,只需要將對應(yīng)為 1 的指令信號通過或門生成新的信號。 遇到的問題: 剛開始設(shè)計時不理解 ALUOP 的用處,對生成 ALU部件的操作控制信號機制不了解,導(dǎo)致在設(shè)計 ALU 時覺得無從下手; ALU 是使用 ISE 進行設(shè)計的第一個器件,剛開始不熟悉 ISE 的基本操作,加上 ISE自身有非常多的錯誤,所以在畫電路圖、生成部件、修 改部件、重新測試這個過程上花了很長時間; 解決的方法: 從所需結(jié)果出發(fā),根據(jù) ALUOP 的編碼和對應(yīng)的結(jié)果去考慮數(shù)據(jù)的來源和通路方向; 多做做多設(shè)計,熟悉了 ISE的工作原理,會分析是 ISE 這個軟件出錯還是自己設(shè)計出錯,根據(jù)測試結(jié)果逆向排查,及時確定問題來源; 取指部件 設(shè)計思路: 考慮到取值部分判斷電路復(fù)雜,若放在數(shù)據(jù)通路中不易辨別,故單獨封裝成一個器件,便于邏輯判斷。 最終,指令存儲器是用帶 CLK 的 ROM實現(xiàn),數(shù)據(jù)存儲器以有寫入控制功能的 RAM 實現(xiàn)。 執(zhí)行 slti、 sltiu、 slt、 sltu 時,需要將為全零或者全一的結(jié)果回寫目的寄存器中,而 ALU輸出狀態(tài)位時只輸出了 1 位。 2. 取 RAM 第二行數(shù)據(jù)到 $2。 32 xor、 nor 指令 9. 逐位異或 $9=$1 ⊕ $2。 34 sllv、 srlv 指令 17. 左移 $16 =$4$3。 1234H。 32. 立即數(shù)有符號比較 ($110) $23=1 else $23=0。在設(shè)計 ALU 之后,對于 ISE的使用有了初步的掌握,為后期電路設(shè)計修改奠定了一定的基礎(chǔ)。 經(jīng)過一個月的努力我們完成了 CPU設(shè)計的基本要求。 40 // Output wire [31:0] Inst。 wire [5:0] OP。 wire RegDst。 wire Jump。 wire jr。 wire bne。 RegCLR = 0。 的封裝模塊表: 用途及用法 原理圖文件名稱 8 位與 8 位二進制數(shù)按位與 8 位或 8 位二進制數(shù)按位或 8 位異或 8 位二進制數(shù)按位異或 8 位或非 8 位二進制數(shù)按位或非 32 位與 32 位二進制數(shù)按位與 44 32 位或 32 位二進制數(shù)按位或 32 位異或 32 位二進制數(shù)按位異或 32 位或非 32 位二進制數(shù)按位或非 二選一 選擇器 (5 位 ) 1 選擇 B, 0 選擇 A 二選一 選擇器 (5 位總線版 ) 1 選擇 B, 0 選擇 A 二選一 選擇器 (32 位 ) 1 選擇 B, 0 選擇 A 四選一數(shù)據(jù)選擇器 (32 位 ) C0C1=00 選擇 A0 C0C1=01 選擇 A1 C0C1=10 選擇 A2 C0C1=11 選擇 A3 八選一數(shù)據(jù)選擇器 (32 位 ) 具體見原理圖 三十二選一 選擇器 (32 位 ) 具體見原理圖 32 位右移 1 位 C 引腳:右移后的最高位 32 位右移 2 位 C 引腳:右移后的最高位 32 位右移 4 位 C 引腳:右移后的最高位 32 位右移 8 位 C 引腳:右移后的最高位 32 位右移 16 位 C 引腳:右移后的最高位 32 位 鏡像器 31 位 0 位、 30位 1 位 ...16 位 15位 交換 32 位桶形右移器 S(4:0):移動位數(shù) 031 ARITH: 1 表示算術(shù)右移 0 表示邏輯右移 A(31:0): 32 位輸入 K(31:0): 32 位輸出 32 位移位器 A(31:0): 32 位數(shù)據(jù)輸入 B(31:0): 移動位數(shù),低 5 位有效 ARITH: 1 表示算術(shù)移位 0 表示邏輯移位 RIGHT: 1 表示右移 0 表示左移 不含算術(shù)左移 32 位寄存器 CE:使能端, 1 表示有效 CLR:清零端, 1 表示有效 I(31:0):數(shù)據(jù)輸入端 Q(31:0):數(shù)據(jù)輸出端 C:時鐘,上升沿寫入 32 個 32 位寄存器堆 同上 WE 使能段 ,1有效 S(4:0):寄存器地址 532 位譯碼器 將 5 位的二進制編碼轉(zhuǎn)換為 32個二進制數(shù) 532 位擴展器 將 5 位輸入擴展為 32 位 1632 位擴展器 將 16 位輸入擴展為 32 位 45 Sign 為 1 時為符號擴展 2632 位擴展器 將 26 位輸入擴展為 32 位 左移 2 位器 將 32 位輸入左移兩位補 0,乘 4 ALU 控制器 ALUCtr(3:0) 控制信號輸入 OVctr 控制有無溢出 ,為 1 輸出 SUBctr 控制加減 ,減為 1 輸出 SIGctr 控制有無符號比較 有符號為 1 OPctr(3:0) op 輸出用于控制選擇 結(jié)果輸出 32 位加減法器 A(31:0) 32 位輸入 B(31:0) 32 位輸入 SUB 是否為減 , 1 有效 S(31:0) 32 位結(jié)果輸出 OFL 溢出位 CO 進位 ADDSIGN 結(jié)果的符號位即 S(31) ALU ALUCTR(3:0) ALU 控制信號輸入 A(31:0) 32 位輸入 B(31:0) 32 位輸入 S(31:0) 32 位結(jié)果輸出 OFL 溢出位 LESS 比較時判斷 A小為 0 ZERO 當(dāng)結(jié)果全 0 時輸出 1 132 拓展器 INDATA: 輸入數(shù)字 將 1 位轉(zhuǎn)化為 32 位 同原一位 OUTDATA: 32 位輸出結(jié)果 32*32bit RAM D(31:0) 32 位數(shù)據(jù)輸入端 A(4:0) 5 位地址輸入端 WE 寫使能端 ,1時可寫入 WCLK 時鐘信號 上升沿寫入 O(31:0) 32 位輸出數(shù)據(jù) 128*32bit RAM D(31:0) 32 位數(shù)據(jù)輸入端 A(31:0) 32 位地址輸入 A(8:2)位有效 WE 寫使能端 1 時可寫入 WCLK 時鐘信號 ,上升沿寫入 O(31:0) 32 位輸出數(shù)據(jù) 32 位加法器 A(31:0)32 位輸入 46 B(31:0)32 位輸入 CI 進位 S(31:0)32 位結(jié)果輸出 OFL 溢出位 CO 進位 取指模塊 CLK 時鐘信號 上升沿寫入 Target(25:0) 26 位輸入數(shù)據(jù) imm(15:0) 16 位輸入數(shù)據(jù) Jump 是否跳轉(zhuǎn)輸入 Branch 是否有分支 Zero 表示兩數(shù)相減是否為 0 CE 使能端 , 1 有效 CLR 清零端 , 1 有效 RJUP(31:0) 32 位 R 跳轉(zhuǎn)的值 RJUPCtr 控制 R 型跳轉(zhuǎn)是否直接更改 PC 1 有效 PC(31:0) 32 位輸出 NEXTPC(31:0) 32 位 PC+4 寄存器堆 CLR 清零端 1 有
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1