<rt id="cwx28"></rt><rt id="cwx28"><delect id="cwx28"><bdo id="cwx28"></bdo></delect></rt><bdo id="cwx28"></bdo><noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"><delect id="cwx28"></delect></rt><noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"></rt><noframes id="cwx28"><rt id="cwx28"></rt> <delect id="cwx28"></delect><bdo id="cwx28"></bdo><rt id="cwx28"></rt><delect id="cwx28"></delect><rt id="cwx28"></rt><noframes id="cwx28"><rt id="cwx28"><delect id="cwx28"></delect></rt><noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"><delect id="cwx28"></delect></rt><rt id="cwx28"></rt><noframes id="cwx28"><rt id="cwx28"><rt id="cwx28"></rt></rt> <noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"><delect id="cwx28"></delect></rt><noframes id="cwx28"><noframes id="cwx28"><noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"><rt id="cwx28"></rt></rt><noframes id="cwx28"><noframes id="cwx28"><rt id="cwx28"></rt><noframes id="cwx28"><rt id="cwx28"><rt id="cwx28"></rt></rt>
  • 全部考試
  • 考試報名
  • 考試時間
  • 成績查詢
  • 網絡課程
  • 考試真題
  • 模擬試題
  • 公文文檔
  • 文檔大全
  • 作文大全
  • 范文大全
  • 招聘大全
  • 當前位置: 勤學考試網 > 招聘大全 > 正文

    計算機組成原理實驗三【計算機組成原理實驗報告材料1-單周期】

    時間:2020-06-30 07:45:57 來源:勤學考試網 本文已影響 勤學考試網手機站

     計算機組成原理實驗報告

     單周期處理器開發

     

     

      Q:1064950364

     2015.05.12

     文檔目錄:

     功能設計說明

     模塊化和層次化設計說明

     具體模塊定義

     測試代碼及結果

     實驗完成時間安排

     心得體會

     功能設計說明

     1. 完成的指令集:

     a) add,sub,and,or,slt,lw,sw,beq 和J 指令。

     b) 不支持溢出。

     2. 處理器為單周期設計。

     3. 功能模塊統一采用書上201頁的圖4-24設計,信號控制采用書上的193頁圖4-12和200頁圖4-22的真值表進行化簡。

     模塊化和層次化設計說明

     具體模塊定義

     數據通路:

     1)PC模塊定義:

     (1) 基本描述

     PC 主要功能是完成輸出當前指令地址。復位后,PC指向0x0000_0000,此處為第一條指令的地址。

     (2) 模塊接口

     

     信號名

     方向

     描述

     [31:0]address

     I

     輸入的指令地址

     clk

     I

     時鐘信號

     rst

     I

     復位信號

     [31:0]out

     O

     輸出的指令地址

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     復位

     rst=1時,將out置為0X0000_0000

     2

     輸出指令地址

     時鐘信號到來時,將address賦給out

     2)NPC模塊定義:

     (1) 基本描述

     NPC 主要功能是根據當前指令是否為beq指令,輸出下一條指令的地址。該模塊調用了MUX模塊。

     (2) 模塊接口

     

     信號名

     方向

     描述

     [15:0]imaddr

     I

     指令的低16位

     zero

     I

     ALU計算結果:

     1表示當前兩寄存器(rs,rt)值相等;

     0表示不相等。

     br

     I

     是否為beq指令。1是0否

     [31:0]pc

     I

     輸入當前指令地址

     [31:0]npc

     O

     輸出下一條指令地址

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出指令地址

     根據zero與br的值輸出下一條指令的地址。

     3)ALU模塊定義:

     (1) 基本描述

     實現加、減、與、或、小于則賦1五種計算。

     (2) 模塊接口

     

     信號名

     方向

     描述

     [2:0]aluctrl

     I

     ALU控制信號

     [31:0]A

     I

      rs寄存器的值

     [31:0]B

     I

     rt寄存器的值

     zero

     O

     B=0,則zero=1;

     否則zero=0.

     [31:0]result

     O

     Alu計算輸出的結果。

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出計算結果

     根據alu控制信號,輸出A與B的計算結果

     2

     輸出zero

     若result=0

     則輸出zero=1,否則輸出zero=0。

     4)MUX模塊定義:

     (1) 基本描述

     實現32位和5位二選一數據選擇器

     (2) 模塊接口

     信號名

     方向

     描述

     S

     I

     MUX控制信號

     [31:0]d0/

     [4:0]d0

     I

      MUX輸入

     [31:0]d1/

     [4:0]d1

     I

     MUX輸入

     [31:0]y/

     [4:0]y

     O

     MUX輸出

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出d0,或d1的值

     S為0,y=d0;

     S為1,y=d1.

     5)EXT模塊定義:

     (1) 基本描述

     將輸入的16位地址按符號位擴展為32位。

     (2) 模塊接口

     信號名

     方向

     描述

     [15:0]addrin

     I

     輸入的16位地址

      [31:0]addrout

     O

      輸出的32位地址

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出擴展的32位地址.

     將addrin擴展為32位的addrout.

     6)regfile模塊定義:

     (1) 基本描述

      根據輸入的兩個寄存器地址,輸出相應寄存器的值,根據寄存器寫信號和寄存器地址,將輸入的數據選擇寫入寄存器。

      (2) 模塊接口

     信號名

     方向

     描述

     clk

     I

     時鐘信號

     [4:0]rreg1

     I

      Rs寄存器地址

     [4:0]rreg2

     I

     Rt寄存器地址

     [31:0]rdata1

     O

     Rs寄存器值

     [31:0]rdata2

     O

     Rt寄存器值

     regw

     I

     寫寄存器信號

     [4:0]wreg

     I

     Rt寫寄存器地址

     [31:0]wdata

     I

     寫入寄存器的信號

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     讀寄存器數據

     讀rs、rt寄存器的數據

     2

     向寄存器寫入數據

     根據寫信號向寄存器選擇寫入數據

     7)im_4k模塊定義:

     (1) 基本描述

      指令存大小為4K,初始化從code.txt載入指令。根據輸入的指令地址,輸出當前位置存儲的指令。

      (2) 模塊接口

     信號名

     方向

     描述

     [9:0]addr

     I

     指令地址

     [31:0]dout

     O

      指令

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     載入指令

     初始化載入code.txt中的指令

     2

     輸出指令

     根據輸入的指令地址,輸出當前指令

     8)dm_4k模塊定義:

     (1) 基本描述

      “數據存”大小為4K,根據輸入的地址讀出“數據存”中的數據,并根據數據寫信號,將輸入的數據選擇寫入“數據存”中。

      (2) 模塊接口

     信號名

     方向

     描述

     clk

     I

     時鐘信號

     [9:0]addr

     I

      數據地址

     [31:0]din

     I

     寫入的數據

      we

     I

     數據存寫信號

     [31:0]dout

     O

     讀出的數據

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     讀數據存數據

     根據輸入的數據地址,讀出數據存的數據,讀出的數據不一定被使用,只有lw指令才會使用。

     2

     向數據存寫入數據

     在時鐘信號到來時,根據寫數據信號,將輸入的數據選擇寫入數據存中。

     9)Jump模塊定義:

     (1) 基本描述

      將輸入的低26位指令左移兩位,高四位加上pc+4的高4位,組成32位地址輸出。

      (2) 模塊接口

     信號名

     方向

     描述

     [25:0]addrin

     I

     低26位指令

     [31:0]pc

     I

      當前PC

     [31:0]addrout

     O

     計算出的32位地址

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出J跳轉地址

     輸出計算得到的32位地址,為J指令要跳轉的地址。

     10) ALUCtrl模塊定義:

     (1) 基本描述

      根據指令的低6位(function字段)和輸入的aluop控制信號,利用真值表化簡輸出三位的ALU控制信號。真值表利用書上193頁圖4-12.

      (2) 模塊接口

     信號名

     方向

     描述

     [5:0]func

     I

     指令低6位

     [1:0]aluop

     I

      Aluop控制信號

     [2:0]aluctrl

     O

      Alu控制信號

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

      輸出ALU控制信號

     利用真值表化簡輸出ALU控制信號。

     11) controller模塊定義:

     (1) 基本描述

      根據輸入的指令高6位(Op字段),利用真值表化簡,輸出RegDst,ALUSrc,MemtoReg,RegWrite,MemWrite,

     Branch,J,ALUOp控制信號。真值表采用書上200頁圖4-22,再加上J指令的輸入輸出。其中高阻狀態設為0。MemRead信號可以省略。

      (2) 模塊接口

     信號名

     方向

     描述

     [5:0]Op

     I

     指令高6位

      RegDst

     O

      Rd寄存器控制信號

      ALUSrc

     O

      ALU數據來源控制信號

      MemtoReg

     O

      數據存數據寫入寄存器控制信號

      RegWrite

     O

      寄存器寫控制信號

      MemWrite

     O

      數據存寫控制信號

      Branch

     O

      Beq指令控制信號

     J

     O

      J指令控制信號

     [1:0]ALUOp

     O

      ALUOp控制信號

    ?。?)功能定義

     序號

     功能名稱

     功能描述

     1

     輸出各種控制信號

     根據輸入的OP,利用真值表化簡,輸出各種控制信號。

     測試代碼及結果

     測試代碼及結果:

     在regfile模塊初始化了17($s1),18($s2),20($s4)號寄存器的值分別為8、4、12.

     add $s3,$s2,$s1 //$s3=4+8=12

     sub $s5,$s4,$s3 //$s5=12-12=0

     beq $s3,$s4,LI //$s3==$s4,跳到LI

     sw $s2,1($s1)

     lw $s3,1($s1)

     LI:and $s5,$s4,$s3 //$s5=$s4 & $s3=12

     or $s5,$s3,$s1 //$s5=$s4 | $s3=12

     slt $s5,$s3,$s1 //$s3>$s1,$s5=0

     sw $s2,1($s1) //存入4

     lw $s3,1($s1) //載入4到$s3

     j LI //跳轉

     生成的16進制文件(code.txt): // add $s3,$s2,$s1

     0293a822 // sub $s5,$s4,$s3 // beq $s3,$s4,LI

     ae320001 // sw $s2,1($s1)

     8e330001 //lw $s3,1($s1)

     0293a824 // LI:and $s5,$s4,$s3

     0271a825 // or $s5,$s3,$s1

     0271a82a // slt $s5,$s3,$s1

     ae320001 // sw $s2,1($s1)

     8e330001 // lw $s3,1($s1) //j LI

     實驗完成時間安排

     實驗前2小時看了Verilog語法,并用ModelSim跑了PPT給的counter程序。

     實驗課上跟著老師寫了各個模塊,至此各個模塊已經基本寫完。

     中午用了不到1小時寫了控制信號及頂層模塊,只剩下測試工作。

     中午用了大概半小時時間測試程序可以運行,完成調試。

     總體完成時間在10小時以。

     6、心得體會

      通過該實驗,對硬件編程有了更深入的理解。之前參加學校的PLD比賽賽前培訓(后來時間太緊,比賽放棄),使用過Vivado跑了一段測試程序,當時對仿真一塊還不太懂,此次實驗更加深了理解。對單周期處理器的認識也更深刻了。開發初期,受c語言開發的限制,老是想不通這些模塊的調用參數是如何傳遞的。后來想到Verilog有wire型變量,其實就可以將其想象成一條條真實的線,各個模塊就是各個真實的器件,這些器件用線連接起來才可以工作。于是,便突破了思想局限,順利完成了實驗。使用開發工具多了,漸漸就會發現這些工具都小異,所以上手也會很快。

    相關熱詞搜索: 周期 原理 實驗 計算機 材料

    • 考試時間
    • 范文大全
    • 作文大全
    • 課程
    • 試題
    • 招聘
    • 文檔大全

    推薦訪問

    想看手机在线黃色欧美围产一级大片-1级毛片免费视频看一下-av不卡免费啊不想在线观看-国产美女毛片Av一级