国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、實(shí)驗(yàn)?zāi)康?/h3>

1.掌握寄存器堆的工作原理和接口。
2.掌握寄存器堆的實(shí)現(xiàn)方法。
3.掌握寄存器堆在微處理器中承擔(dān)的功能。

二.實(shí)驗(yàn)內(nèi)容

  1. 設(shè)計(jì)一32*32bit 的寄存器文件,即32 個(gè) 32 位的寄存器文件(寄存器組)
    –具備兩組讀端口及一組寫端口;
    –通過讀端口可從0~31 號(hào)的任意地址讀取 數(shù)據(jù);
    –通過寫端口可向1~31 號(hào)的任意地址寫入 數(shù)據(jù)(0號(hào)寄存器的值固定為32’b0);
  2. 利用寄存器堆和ALU 完成平方數(shù)f(n),其 中 1<n<16。
  3. 可選:
    1)用fsm三段式實(shí)現(xiàn)
    2)用7段數(shù)碼管輸出
    –數(shù)碼管的輸出不能有明顯的閃爍

三.實(shí)驗(yàn)程序

alu.v(加法器)

module alu(
    input [31:0] a,
    input [31:0] b,
    input [3:0] op,
    output reg[31:0] f,
    output c
    );
    always @(*)
    case(op)
        4'b0000: f = 32'b0;
        4'b0001: f = a + b;
        4'b0010: f = a - b;
        4'b0011: f = a & b;
        4'b0100: f = a | b;
        4'b0101: f = a ^ b;
        default: f = 32'b0;
    endcase
    assign c = ~(|f);
endmodule

RegFiles.v(寄存器堆)

module RegFiles(
    input clk,
    input [4:0] raddr1,
    output [31:0] rdata1,
    input [4:0] raddr2,
    output [31:0] rdata2,
    input we,
    input [31:0] wdata,
    input [4:0] waddr
    );
    reg[31:0] regs[1:31]; // 寄存器堆,每個(gè)寄存器32bit
    assign rdata1=(raddr1==5'b00000)?32'b0:regs[raddr1]; // 讀端口1
    assign rdata2=(raddr2==5'b00000)?32'b0:regs[raddr2]; // 讀端口2
    always @(posedge clk) // 寫端口
        if(we)
            if(waddr!=5'b00000)
                regs[waddr]<=wdata;

endmodule

square.v(求平方數(shù))

module square(
    input clk,
    input rst,
    input [3:0] n,
    output [7:0] result
    );
    wire[31:0] a_w,b_w,f_w; // 兩個(gè)加數(shù)(讀端口數(shù)據(jù))和結(jié)果
    wire[31:0] wd; //寫端口數(shù)據(jù)
    reg[4:0] wa; // 寫端口地址(reg)
    reg[4:0] ra1,ra2; // 讀端口地址
    reg we=1'b0; // 讀寫控制
    reg isf; // 判斷加數(shù)
    reg[3:0] count; // 計(jì)數(shù)
    reg[1:0] cur_state,nex_state; // 現(xiàn)態(tài)和次態(tài)

    assign wd=isf?f_w:n; // 第一個(gè)加數(shù)恒為n,ifs為0,第二個(gè)加數(shù)為n,ifs為1,第二個(gè)加數(shù)為f_w
    RegFiles myreg(.clk(clk),.raddr1(ra1),.raddr2(ra2),.rdata1(a_w),.rdata2(b_w),.waddr(wa),.wdata(wd),.we(we)); 
    alu myalu(.a(a_w),.b(b_w),.op(4'b0001),.f(f_w)); 
    // 狀態(tài)轉(zhuǎn)移 
    always @(posedge clk)
    begin
        if(rst)
        begin
            cur_state<=2'b00;
        end
        else
            cur_state<=nex_state;
    end
    // 狀態(tài)轉(zhuǎn)移條件    
    always @(*)
    begin
        case(cur_state)
            2'b00:
                nex_state<=2'b01;
            2'b01:
                nex_state<=2'b10;
            2'b10:
                nex_state<=2'b10;
        endcase
    end
    // 狀態(tài)輸出    
    always @(posedge clk)
    begin
        case(cur_state)
            2'b00:
            begin
                count<=4'b0010;
                isf<=1'b0;
                wa<=5'b00001;
                we<=1'b1;
            end
            2'b01:
            begin
                isf<=1'b0;
                ra1<=5'b00001;
                ra2<=5'b00010;
                wa<=5'b00010;
                we<=1'b1;
            end
            2'b10:
            begin
                if(count<n)
                begin
                    isf<=1'b1;
                    count<=count+1;
                    we<=1'b1;
                end
                else
                begin
                    we<=1'b0;
                end
            end
        endcase
    end
    assign result=f_w[7:0];
endmodule

div.v(分頻器)

module div(
    input clk,
    output clk_new
    );
    reg[17:0] q = 18'b0;
    always @(posedge clk)
    begin
        q=q+1'b1;
    end
    assign clk_new=q[17];
endmodule

seven.v(七段數(shù)碼管)

module seven(
    input [3:0] data,
    output reg[6:0] out
    );
  always @(*)
  case (data)
      4'b0000:out = 7'b1111110; // 7e
      4'b0001:out = 7'b0110000; // 30
      4'b0010:out = 7'b1101101; // 6d
      4'b0011:out = 7'b1111001; // 79
      4'b0100:out = 7'b0110011; // 33
      4'b0101:out = 7'b1011011; // 5b
      4'b0110:out = 7'b1011111; // 5f
      4'b0111:out = 7'b1110000; // 70
      4'b1000:out = 7'b1111111; // 7f
      4'b1001:out = 7'b1111011; // 7b
      4'b1010:out = 7'b1110111; // 77
      4'b1011:out = 7'b0011111; // 1f
      4'b1100:out = 7'b1001110; // 4e
      4'b1101:out = 7'b0111101; // 3d
      4'b1110:out = 7'b1001111; // 4f
      4'b1111:out = 7'b1000111; // 47
      default:out = 7'b1111110; //7e
  endcase 
endmodule

show.v(七段數(shù)碼管顯示)

module show(
    input clk,
    input rst,
    input [7:0] result,
    output reg[1:0] an,
    output [6:0] out
    );
    wire clk_new;
    div mydiv(.clk(clk),.clk_new(clk_new));
    reg[3:0] data;
    reg[1:0] cur_state,nex_state;
    // 狀態(tài)轉(zhuǎn)移
//    always @(posedge clk)
    always @(posedge clk_new)
    begin
    if (rst)
        cur_state<=2'b00;
    else
        cur_state<=nex_state;
    end
    // 狀態(tài)轉(zhuǎn)移條件
    always @(*)
    begin
        case(cur_state)
            2'b00:
                nex_state<=2'b01;
            2'b01:
                nex_state<=2'b00;
        endcase
    end
    // 狀態(tài)輸出
//    always @(posedge clk)
    always @(posedge clk_new)
    begin
        case(cur_state)
            2'b00:
            begin
                an<=2'b01;
                data<=result[3:0];
            end
            2'b01:
            begin
                an<=2'b10;
                data<=result[7:4];
            end
        endcase
    end
    seven myseven(.data(data),.out(out));     
endmodule

top.v(不用數(shù)碼管顯示)

module top(
    input clk,
    input rst,
    input [3:0] n,
    output [7:0] result
    );
    wire[7:0] result;
    square mysquare(.clk(clk),.rst(rst),.n(n),.result(result));
endmodule

top.v(用數(shù)碼管顯示)

module top(
    input clk,
    input rst,
    input [3:0] n,
    output [2:0] an,
    output [6:0] out
    );
    wire[31:0] temp;
    fib myfib(.clk(clk),.rst(rst),.n(n),.result(temp));
    show myshow(.clk(clk),.rst(rst),.result(temp[11:0]),.an(an),.out(out)); 
endmodule

四、仿真程序

mysim.v(不用數(shù)碼管顯示)

module mysim(

    );
    reg clk=1'b0;
    reg rst=1'b1;
    reg[3:0] n=4'b1110;
    wire [7:0] result;
    always
        #10 clk=~clk;
    initial
        #11 rst=1'b0;
    top mytop(.clk(clk),.rst(rst),.n(n),.result(result));
endmodule

mysim.v(用數(shù)碼管顯示)

module mysim(

    );
    reg clk=1'b0;
    reg rst=1'b1;
    reg[3:0] n=4'b1110;
    wire[2:0] an;
    wire[6:0] out;
    always
        #10 clk=~clk;
    initial
        #11 rst=1'b0;
    top mytop(.clk(clk),.rst(rst),.n(n),.an(an),.out(out)); 
endmodule

五、仿真結(jié)果

不用數(shù)碼管顯示:計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)
用數(shù)碼管顯示:
計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)

六、實(shí)驗(yàn)結(jié)果

用數(shù)碼管顯示
計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-455972.html

到了這里,關(guān)于計(jì)算機(jī)組成原理實(shí)驗(yàn)——二、寄存器實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)組成原理實(shí)驗(yàn)——三、存儲(chǔ)器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理實(shí)驗(yàn)——三、存儲(chǔ)器實(shí)驗(yàn)

    1.掌握存儲(chǔ)器的工作原理和接口。 2.掌握存儲(chǔ)器的實(shí)現(xiàn)方法和初始化方法。 3.掌握RISC-V中存儲(chǔ)器的存取方式。 1.利用vivado IP核創(chuàng)建64 32的ROM,并在 系數(shù)文件中設(shè)置數(shù)據(jù)為123489ab; 2.利用vivado IP核創(chuàng)建64 32的RAM,并在 其上封裝一個(gè)模塊,使得其能完成risc-v 的load/store指令功能。

    2024年02月04日
    瀏覽(22)
  • 計(jì)算機(jī)組成原理實(shí)驗(yàn) 實(shí)驗(yàn)一 存儲(chǔ)器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理實(shí)驗(yàn) 實(shí)驗(yàn)一 存儲(chǔ)器實(shí)驗(yàn)

    目錄 實(shí)驗(yàn)1? 存儲(chǔ)器實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)原理 三、實(shí)驗(yàn)電路 四、實(shí)驗(yàn)步驟 五、實(shí)驗(yàn)數(shù)據(jù)分析 六、思考題 1.熟悉DVCC計(jì)算機(jī)組成原理實(shí)驗(yàn)機(jī)的結(jié)構(gòu),掌握其主要操作。 2.掌握靜態(tài)隨機(jī)存儲(chǔ)器RAM工作特性。 3.掌握靜態(tài)隨機(jī)存儲(chǔ)器RAM的數(shù)據(jù)讀寫方法。 4.能夠運(yùn)用靜態(tài)隨機(jī)存

    2023年04月18日
    瀏覽(23)
  • 計(jì)算機(jī)組成原理實(shí)驗(yàn)——實(shí)驗(yàn)1 運(yùn)算器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理實(shí)驗(yàn)——實(shí)驗(yàn)1 運(yùn)算器實(shí)驗(yàn)

    (1)掌握算術(shù)邏輯運(yùn)算單元的工作原理。 (2)熟悉簡單運(yùn)算器的電路組成。 (3)熟悉4位運(yùn)算功能發(fā)生器(74LS181)的算術(shù)、邏輯運(yùn)算功能。 (1)做好實(shí)驗(yàn)預(yù)習(xí),看懂電路圖,熟悉實(shí)驗(yàn)中所用芯片各引腳的功能和連接方法。 (2)按照實(shí)驗(yàn)內(nèi)容與步驟的要求,認(rèn)真仔細(xì)地完

    2024年02月12日
    瀏覽(20)
  • 計(jì)算機(jī)組成原理 存儲(chǔ)器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理 存儲(chǔ)器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理實(shí)驗(yàn)環(huán)境 掌握靜態(tài)隨機(jī)存儲(chǔ)器 RAM 的工作特性。 掌握靜態(tài)隨機(jī)存儲(chǔ)器 RAM 的讀寫方法。 做好實(shí)驗(yàn)預(yù)習(xí),熟悉 MEMORY6116 芯片各引腳的元器件的功能和連接方式,熟悉其他實(shí)驗(yàn)元器件的功能特性和使用方法,看懂電路圖。 按照實(shí)驗(yàn)內(nèi)容與步驟的要求,認(rèn)真仔細(xì)地

    2024年02月02日
    瀏覽(28)
  • 【計(jì)算機(jī)組成原理實(shí)驗(yàn)】CPU設(shè)計(jì)

    【計(jì)算機(jī)組成原理實(shí)驗(yàn)】CPU設(shè)計(jì)

    設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單處理器模型完成功能驗(yàn)證。 ASUS VivoBook + Windows10 + Vivado2019.2,語言為 Verilog HDL。 1. 處理器應(yīng)基于 6.5 指令集或 MIPS 指令集或 RISCV 指令集進(jìn)行設(shè)計(jì)或自行設(shè)計(jì)指令集。 2. 處理器的控制器結(jié)構(gòu)應(yīng)為微程序控制器或集硬布線控制器。 3. 處理器需支持算術(shù)運(yùn)算、

    2024年02月08日
    瀏覽(19)
  • 計(jì)算機(jī)組成原理 累加器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理 累加器實(shí)驗(yàn)

    計(jì)算機(jī)組成原理實(shí)驗(yàn)環(huán)境 理解累加器的概念和作用。 連接運(yùn)算器、存儲(chǔ)器和累加器,熟悉計(jì)算機(jī)的數(shù)據(jù)通路。 掌握使用微命令執(zhí)行各種操作的方法。 做好實(shí)驗(yàn)預(yù)習(xí),讀懂實(shí)驗(yàn)電路圖,熟悉實(shí)驗(yàn)元器件的功能特性和使用方法。在實(shí)驗(yàn)之前設(shè)計(jì)好要使用的微命令,填入表 6-2 、

    2024年02月06日
    瀏覽(242)
  • 【機(jī)組】計(jì)算機(jī)組成原理實(shí)驗(yàn)指導(dǎo)書.

    【機(jī)組】計(jì)算機(jī)組成原理實(shí)驗(yàn)指導(dǎo)書.

    ? ??個(gè)人主頁: Sarapines Programmer ???系列專欄: 《機(jī)組 | 模塊單元實(shí)驗(yàn)》 ?詩賦清音:云生高巔夢(mèng)遠(yuǎn)游, 星光點(diǎn)綴碧海愁。 山川深邃情難晤, 劍氣凌云志自修。 ? 目錄 一、性能特點(diǎn) 1.1 系統(tǒng)功能及特點(diǎn) 1.1.1? 提供各個(gè)基本功能模塊 1.1.2?? 組成結(jié)構(gòu) 1.1.3? 監(jiān)控模塊 1.

    2024年01月24日
    瀏覽(23)
  • 合肥工業(yè)大學(xué)計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告

    ?作者簡介:CSDN內(nèi)容合伙人、信息安全專業(yè)在校大學(xué)生?? ??系列專欄 :本科生課設(shè)-計(jì)算機(jī)組成原理實(shí)驗(yàn) ??新人博主 :歡迎點(diǎn)贊收藏關(guān)注,會(huì)回訪! ??舞臺(tái)再大,你不上臺(tái),永遠(yuǎn)是個(gè)觀眾。平臺(tái)再好,你不參與,永遠(yuǎn)是局外人。能力再大,你不行動(dòng),只能看別人成功!

    2024年02月04日
    瀏覽(28)
  • 計(jì)算機(jī)組成原理實(shí)驗(yàn)二 存儲(chǔ)系統(tǒng)預(yù)習(xí)報(bào)告

    計(jì)算機(jī)組成原理實(shí)驗(yàn)二 存儲(chǔ)系統(tǒng)預(yù)習(xí)報(bào)告

    掌握靜態(tài)隨機(jī)存儲(chǔ)器?RAM??工作特性及數(shù)據(jù)的讀寫方法。 基于信號(hào)時(shí)序圖,了解讀寫靜態(tài)隨機(jī)存儲(chǔ)器的原理。 1、閱讀實(shí)驗(yàn)指導(dǎo)書,然后回答問題。 實(shí)驗(yàn)所用的靜態(tài)存儲(chǔ)器由一片 6116( 2K*8bit ?)構(gòu)成(位于MEM 單元),6116?有三個(gè)控制線:CS?表示( 片選線 ?)?, ??OE?表示

    2023年04月15日
    瀏覽(26)
  • 計(jì)算機(jī)組成原理實(shí)驗(yàn) MIPS RAM設(shè)計(jì)

    計(jì)算機(jī)組成原理實(shí)驗(yàn) MIPS RAM設(shè)計(jì)

    一、設(shè)計(jì)要求 ????Logisim中RAM組件只能提供固定的地址位寬,數(shù)據(jù)輸出也只能提供固定的數(shù)據(jù)位寬,訪問時(shí)無法同時(shí)支持字節(jié)/半字/字三種訪問模式,實(shí)驗(yàn)要求利用4個(gè)4K * 8 位的 RAM 組件進(jìn)行擴(kuò)展,設(shè)計(jì)完成既能按照8位、也能按照16位、也能按照32位進(jìn)行讀寫訪問的32位存儲(chǔ)器

    2024年02月04日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包