欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告(精選五篇)

      時間:2019-05-14 11:32:54下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告》。

      第一篇:非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告

      非常簡單CPU數(shù)據(jù)通路設(shè)計

      【實驗?zāi)康摹?/p>

      1.掌握CPU的設(shè)計步驟 2.學(xué)會芯片的運用及其功能 【實驗環(huán)境】

      Maxplus2環(huán)境下實現(xiàn)非常簡單CPU數(shù)據(jù)通路的設(shè)計 【實驗內(nèi)容】

      繪制非常簡單CPU的寄存器:一個8位累加器AC,一個6位的地址寄存器AR,一個6位的程序計數(shù)器PC,一個8位的數(shù)據(jù)寄存器DR,一個2位的指令寄存器IR。其數(shù)據(jù)通路詳見教材P。

      1、零件制作

      6位寄存器

      (自行設(shè)計)

      6位計數(shù)器

      (自行設(shè)計)

      8位寄存器

      (可選擇74系列宏函數(shù)74273)

      8位計數(shù)器

      (由兩個74161構(gòu)成)

      2位寄存器

      (由D觸發(fā)器構(gòu)成,自行設(shè)計)

      6三態(tài)緩沖器

      (自行設(shè)計,可由74244內(nèi)部邏輯修改而成)

      8三態(tài)緩沖器

      (選擇74系列宏函數(shù)74244,或作修改)

      alu模塊

      (自行設(shè)計,限于時間,其內(nèi)部邏輯不作要求)

      2、選擇器件,加入數(shù)據(jù)通路頂層圖

      8位累加器AC:選擇8位計數(shù)器

      6位地址寄存器AR:reg6

      6位的程序計數(shù)器PC:cou6

      8位的數(shù)據(jù)寄存器DR:選擇8位寄存器

      2位的指令寄存器IR:選擇2位寄存器

      3、為PC、DR加入三態(tài)緩沖器。

      4、調(diào)整版面大小,器件位置。

      5、設(shè)計地址引腳、數(shù)據(jù)引腳、8位內(nèi)部總線,加入數(shù)據(jù)引腳到內(nèi)部總線的緩沖器。

      6、連接各器件之間以及到內(nèi)部總線的線路,設(shè)計并標(biāo)注各控制信號。

      7、(選做)編譯之后,給出微操作 AR<-PC 的測試方法及仿真結(jié)果。

      8、實驗報告中應(yīng)給出各元部件的實現(xiàn)方法、內(nèi)部邏輯貼圖、打包符號說

      明及頂層的“非常簡單CPU”數(shù)據(jù)通路圖。

      實驗報告

      一、實驗步驟

      基于前面非常簡單CPU的講解,我掌握了非常簡單CPU的指令集結(jié)構(gòu)及非常簡單CPU的指令讀取過程和執(zhí)行過程,本次實驗是在上次實驗的基礎(chǔ)之上完成非常簡單CPU數(shù)據(jù)通路的設(shè)計,其步驟如下:(1)、AC累加器原理圖如下:

      打包后得到如下:

      (2)、兩位高地址寄存器IR的設(shè)計如下:

      打包后得電路圖如下:

      (3)、6位地址寄存器AR設(shè)計如下:

      打包后AR如下:

      (4)、八位地址寄存器DR如下:

      打包后如下:

      (5)、程序計數(shù)器PC如下:(老師已給出)

      打包后得:

      (6)、控制8位地址總線的三態(tài)緩沖器電路如下:

      打包圖如下:

      同理有控制6位地址總線的三態(tài)緩沖器:

      打包圖如下:

      最重要的部分ALU設(shè)計如下:

      由一個八與門電路和并行加法器連入一個16位輸入的數(shù)據(jù)選擇器,在受到SEL和GN控制時分別選擇and8或者并行加法器得到的結(jié)果并送到AC的輸入端

      打包如下:

      其中八輸入與門為下圖:

      并行加法器為下圖:

      十六位數(shù)據(jù)選擇器為下圖:

      最后得到簡單CPU設(shè)計數(shù)據(jù)通路如下:

      仿真波形為下圖:

      說明:從圖中可以看出當(dāng)PC輸入為100011時AR的輸出也為10011,即該CPU實現(xiàn)了PC到AR的功能。CPU功能驗證完畢!實驗結(jié)論:

      整體來看,簡單CPU的設(shè)計基本完工,但是有些地方不夠完善,所以還沒能夠?qū)崿F(xiàn)所有的 功能。實驗感想:

      本次實驗是在對基本CPU的設(shè)計的理解上完成的,其中運用到了很多數(shù)電方面的知識。所以這對知識的融會貫通很有好處。設(shè)計該簡單CPU時比較難的地方就是ALU部分,這里用到了并行加法器,數(shù)據(jù)選擇器和門電路的等,由于在EDA實驗時有了比較好的基礎(chǔ),所以在設(shè)計這個部分時不時非常難,但是我也明白了以前知識的用處是很大的,做好復(fù)習(xí)很重要!

      第二篇:計算機(jī)組成CPU數(shù)據(jù)通路verilog實驗報告

      計算機(jī)組成與系統(tǒng)結(jié)構(gòu)實驗報告

      實驗?zāi)康?

      院(系): 計算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè)班級: 學(xué) 號: 姓 名: 同 組 者: 指導(dǎo)教師: 實驗時間: 2012 年 5 月 23 日

      完成處理器的單周期cpu的設(shè)計。實驗儀器:

      PC機(jī)(安裝Altebra 公司的開發(fā)軟件 QuartusII)一臺

      實驗原理:

      控制器分為主控制器和局部ALU控制器兩部分。主控制器的輸入為指令操作碼op,輸出各種控制信號,并根據(jù)指令所涉及的ALU運算類型產(chǎn)生ALUop,同時,生成一個R-型指令的控制信號R-type,用它來控制選擇將ALUop輸出作為ALUctr信號,還是根據(jù)R-型指令中的func字段來產(chǎn)生ALUctr信號。

      實驗過程及實驗記錄: 1.設(shè)計過程:

      第一步:分析每條指令的功能,并用RTL來表示。

      第二步:根據(jù)指令的功能給出所需的元件,并考慮如何將它們互連。

      第三步:確定每個元件所需控制信號的取值。

      第四步:匯總各指令涉及的控制信號,生成所反映指令與控制信號之間的關(guān)系圖。

      第五步:根據(jù)關(guān)系表,得到每個控制信號的邏輯表達(dá)式,據(jù)此設(shè)計控制電路。

      2.完成代碼的編寫,并調(diào)試運行。1)control module Control(op,func,Branch,Jump,RegDst,ALUSrc,ALUctr,MemtoReg,RegWr,MemWr,ExtOp);input [5:0] op,func;output reg Branch,Jump,RegDst,ALUSrc,MemtoReg,RegWr,MemWr,ExtOp;output reg [2:0] ALUctr;always @(op)case(op)6'b000000: begin Branch=0;Jump=0;RegDst=1;ALUSrc=0;MemtoReg=0;RegWr=1;MemWr=0;case(func)6'b100000:ALUctr=3'b001;6'b100010:ALUctr=3'b101;6'b100011:ALUctr=3'b100;6'b101010:ALUctr=3'b111;6'b101011:ALUctr=3'b110;endcase end 6'b001101: begin Branch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr=0;ExtOp=0;ALUctr=3'b010;end 6'b001001: begin Branch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr=0;ExtOp=1;ALUctr=3'b000;end

      6'b100011: begin Branch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=1;RegWr=1;MemWr=0;ExtOp=1;ALUctr=3'b000;end 6'b101011: begin Branch=0;Jump=0;ALUSrc=1;RegWr=0;MemWr=1;ExtOp=1;ALUctr=3'b000;end 6'b000100: begin Branch=1;Jump=0;ALUSrc=0;RegWr=0;MemWr=0;ALUctr=3'b100;end 6'b000010: begin Branch=0;Jump=1;RegWr=0;MemWr=0;end endcase endmodule

      2)數(shù)據(jù)通路DataRoad module DataRoad(Run,Clk,RegWr,MemWr,MemtoReg,RegDst,Branch,Jump,ExtOp,ALUctr,ALUSrc,busA,busB,busW,Instruction,Reg0,Reg1,Reg2,Reg3,Reg4,Mem1,Mem2,Mem3,Result,Im);input Run,Clk,RegWr,MemWr,MemtoReg,RegDst,Branch,Jump,ExtOp,ALUSrc;input [2:0] ALUctr;output [31:0] Instruction,busA,busB,busW,Reg0,Reg1,Reg2,Reg3,Reg4,Mem1,Mem2,Mem3,Result,Im;wire [31:0] busC,DataOut;

      wire [15:0] im;wire [4:0] Rs,Rd,Rt;wire Overflow,Zero;QZL qzl(Clk,Branch,Jump,Zero,Instruction,Run);assign Rs=Instruction[25:21];assign Rt=Instruction[20:16];assign Rd=Instruction[15:11];assign im=Instruction[15:0];Register register(Run,RegWr,Overflow,RegDst,Rd,Rs,Rt,busW,busA,busB,Clk,Reg0,Reg1,Reg2,Reg3,Reg4);ALU alu(busA,busC,ALUctr,Zero,Overflow,Result);DataMem(Run,MemWr,Clk,busB,DataOut,Result,Mem1,Mem2,Mem3);MUX mux1(ALUSrc,busB,Im,busC);MUX mux2(MemtoReg,Result,DataOut,busW);Extender ext(im,Im,ExtOp);endmodule 3)取指令

      module QZL(Clk,Branch,Jump,Zero,Instruction,Run);input Clk,Branch,Jump,Zero,Run;output [31:0] Instruction;wire [4:0] addmem;reg [29:0] PC;wire [29:0] Newpc,pc_1,pc_2,pc_3,pc_12,imm30;wire Branch_Zero;assign addmem={PC[2:0],2'b00};InsMem GetIns(addmem,Instruction);always @(negedge Clk)if(Run==1)begin PC<=Newpc;end else begin

      PC<=0;end assign pc_1=PC+1;assign imm30={{14{Instruction[15]}},Instruction[15:0]};assign pc_2=pc_1+imm30;assign pc_3={PC[29:26],Instruction[25:0]};assign Branch_Zero=Branch&Zero;MUX m1(Branch_Zero,pc_1,pc_2,pc_12);MUX m2(Jump,pc_12,pc_3,Newpc);endmodule module InsMem(addmem,Instruction);input [4:0] addmem;output reg[31:0] Instruction;reg [31:0] Mem[31:0];always @(*)begin Mem[0]<={6'b100011,5'b00000,5'b00001,5'b00000,5'b00000,6'b000001};Mem[4]<={6'b100011,5'b00000,5'b00010,5'b00000,5'b00000,6'b000010};Mem[8]<={6'b000000,5'b00001,5'b00010,5'b00011,5'b00000,6'b100000};Mem[12]<={6'b101011,5'b00000,5'b00011,5'b00000,5'b00000,6'b000010};Mem[16]<={6'b001101,5'b00100,5'b00100,5'b11111,5'b11111,6'b111111};Mem[20]<={6'b000000,5'b00011,5'b00010,5'b00010,5'b00000,6'b100010};Mem[24]<={6'b000100,5'b00010,5'b00001,5'b00000,5'b00000,6'b001000};Mem[28]<={6'b000010,5'b00000,5'b00000,5'b00000,5'b00000,6'b000000};end always @(*)

      Instruction=Mem[addmem];Endmodule

      4)ALU module ALU(A,B,ALUctr,Zero,Overflow,Result);parameter n=32;input [n-1:0] A,B;input [2:0] ALUctr;output Zero,Overflow;output [n-1:0] Result;wire SUBctr,OVctr,SIGctr,SignA,SignB,Cin;wire [1:0] OPctr;wire [n-1:0] X,Y,Z,Less,M,N,Add_Result;wire Add_Carry,Add_Overflow,Add_Sign;assign M={n{1'b0}};assign N={n{1'b1}};assign SUBctr=ALUctr[2];assign OVctr=!ALUctr[1]&ALUctr[0];assign SIGctr=ALUctr[0];assign OPctr[1]=ALUctr[2]&ALUctr[1];assign OPctr[0]=!ALUctr[2]&ALUctr[1]&!ALUctr[0];assign Cin=SUBctr;assign X=B^{n{SUBctr}};assign Y=A|B;Adder ad(Cin,A,X,Add_Carry,Add_Overflow,Add_Sign,Add_Result,Zero);assign SignA=Cin^Add_Carry;assign SignB=Add_Overflow^Add_Sign;assign Overflow=Add_Overflow&OVctr;MUX m1(SIGctr,SignA,SignB,Less);defparam m1.k=1;MUX m2(Less,M,N,Z);MUX3_1 m3(Add_Result,Y,Z,Result,OPctr);

      endmodule module MUX3_1(A,B,C,D,ctr);parameter k=32;input [k-1:0] A,B,C;output reg [k-1:0] D;input [1:0] ctr;always @(A or B or C or ctr)if(ctr==2'b00)D=A;else if(ctr==2'b01)D=B;else if(ctr==2'b10)D=C;endmodule module Adder(Cin,X,Y,Add_Carry,Add_Overflow,Add_Sign,Add_Result,Zero);parameter k=32;input [k-1:0] X,Y;input Cin;output reg [k-1:0] Add_Result;output Add_Carry,Add_Overflow,Add_Sign,Zero;reg Add_Carry;assign Zero=~|Add_Result;assign Add_Sign=Add_Result[k-1];assign Add_Overflow=(X[k-1]&Y[k-1]&~Add_Result[k-1])|(~X[k-1]&~Y[k-1]&Add_Result[k-1]);always @(X or Y or Cin){Add_Carry,Add_Result}=X+Y+Cin;Endmodule

      5)數(shù)據(jù)存數(shù) module DataMem(Run,MemWr,Clk,DataIn,DataOut,Adr,Mem1,Mem2,Mem3);

      input Run,MemWr,Clk;input [31:0] DataIn,Adr;output [31:0] DataOut;output [31:0] Mem1,Mem2,Mem3;reg[31:0] Mem[31:0];assign Mem1=Mem[1];assign Mem2=Mem[2];assign Mem3=Mem[3];assign DataOut=Mem[Adr];always @(negedge Clk)if(Run==0)begin Mem[0]=0;Mem[1]=10;Mem[2]=20;Mem[3]=30;end else begin if(MemWr==1)Mem[Adr]=DataIn;end endmodule 6)寄存器 module Register(Run,Regwr,Overflow,RegDst,Rd,Rs,Rt,busW,busA,busB,Clk,Reg0,Reg1,Reg2,Reg3,Reg4);input Regwr,Clk,RegDst,Run,Overflow;input [31:0] busW;input [4:0] Rd,Rt,Rs;output reg [31:0] busA,busB;output [31:0] Reg0,Reg1,Reg2,Reg3,Reg4;reg [31:0] Mem[31:0];reg [4:0] Rw;

      wire [4:0] Ra,Rb;wire RegWr;assign RegWr=Regwr&~Overflow;assign Ra=Rs;assign Rb=Rt;assign Reg0=Mem[0];assign Reg1=Mem[1];assign Reg2=Mem[2];assign Reg3=Mem[3];assign Reg4=Mem[4];always @(Rd or Rt or RegDst)if(RegDst==1'b1)Rw=Rd;else Rw=Rt;always @(negedge Clk)if(Run==1'b1)begin if(RegWr==1'b1)Mem[Rw]=busW;end else begin Mem[0]<=0;Mem[1]<=2;Mem[2]<=4;Mem[3]<=6;Mem[4]<=8;end always @(Ra or Rb)if(Run==1'b1)begin busA=Mem[Ra];busB=Mem[Rb];

      end else begin busA=0;busB=0;end endmodule

      7)數(shù)據(jù)選擇

      module MUX(ctr,X,Y,Z);parameter k=32;input [k-1:0] X,Y;output reg [k-1:0] Z;input ctr;always @(X or Y or ctr)if(ctr==1'b0)Z<=X;else Z<=Y;endmodule 3.進(jìn)行仿真并驗證其正確性:

      第三篇:數(shù)據(jù)通路實驗報告

      數(shù)據(jù)通路實驗報告

      數(shù)據(jù)通路實驗報告

      一. 實驗概述。

      1.數(shù)據(jù)通路的設(shè)計原則。

      數(shù)據(jù)通路的設(shè)計直接影響到控制器的設(shè)計,同時也影響到數(shù)字系統(tǒng)的速度指標(biāo)和成本。一般來說,處理速度快的數(shù)字系統(tǒng),其中獨立傳遞信息的通路較多。當(dāng)然,獨立數(shù)據(jù)傳送通路的數(shù)量增加勢必提高控制器設(shè)計復(fù)雜度。因此,在滿足速度指標(biāo)的前提下,為使數(shù)字系統(tǒng)結(jié)構(gòu)盡量簡單,一般小型系統(tǒng)中多采用單一總線結(jié)構(gòu)。在較大系統(tǒng)中可采用雙總線結(jié)構(gòu)或者三線結(jié)構(gòu)。2.數(shù)據(jù)通路的結(jié)構(gòu)。

      ① 算術(shù)邏輯單元ALU:有S3,S2,S1,S0,M,CN等6個控制端,用于選擇運算類型。

      ② 暫存器A和B:保存通用寄存器組讀出的數(shù)據(jù)或BUS上來的數(shù)據(jù)。③ 通用寄存器組R:暫時保存運算器單元ALU算出的結(jié)果。④ 寄存器C:保存ALU運算產(chǎn)生的進(jìn)位信號。

      ⑤ RAM隨機(jī)讀寫存儲器:受讀/寫操作以及時鐘信號等控制。⑥ MAR:RAM的專用地址寄存器,寄存器的長度決定RAM的容量。⑦ IR:專用寄存器,可存放由RAM讀出的一個特殊數(shù)據(jù)。

      ⑧ 控制器:用來產(chǎn)生數(shù)據(jù)通路中的所有控制信號,它們與各個子系統(tǒng)上的使能控制信號一一對應(yīng)。

      ⑨ BUS:單一數(shù)據(jù)總線,通過三態(tài)門與有關(guān)子系統(tǒng)進(jìn)行連接。

      數(shù)據(jù)通路實驗報告

      二. 實驗設(shè)計及其仿真檢測。

      一,運算器。

      8位運算器VHDL

      數(shù)據(jù)通路實驗報告

      數(shù)據(jù)通路實驗報告

      二波形仿真

      存儲器。

      頂層設(shè)計:

      其中sw_pc_ar的VHDL語言描述:,數(shù)據(jù)通路實驗報告

      波形仿真

      三,原仿真實驗電路。

      數(shù)據(jù)通路實驗報告

      仿真結(jié)果:

      四,修改電路。

      因為此次實驗結(jié)果需要下載到FPGA板中進(jìn)行操作及觀察,而原始電路中,需要輸入的變量數(shù)量過多,導(dǎo)致電板中的輸入按鍵不夠用,所以需要對電路進(jìn)行修改。此時我們引入一個計數(shù)器PC來代替需要手動輸入的指令alu_sel[5..0]以及數(shù)據(jù)d[7...0]。同時還需要引入數(shù)碼管的位選信號譯碼器choose和段選信號譯碼器xianshi。計數(shù)器PC的VHDL語言描述

      數(shù)據(jù)通路實驗報告

      位選信號譯碼器choose的VHDL語言描述

      數(shù)據(jù)通路實驗報告

      段選信號譯碼器的VHDL語言描述

      經(jīng)過修改和完善以后的電路圖為

      數(shù)據(jù)通路實驗報告

      完善后的電路的引腳分配情況

      數(shù)據(jù)通路實驗報告

      三. 實驗過程。

      a)進(jìn)行數(shù)學(xué)運算以及將運算結(jié)果儲存在某個固定的內(nèi)存地址處。然后從該地址處讀出結(jié)果 i.ii.打開pc_sel[2],重置地址計數(shù)器。

      打開總線開關(guān)bus_sel[0],和PC_sel[2],pc_sel[1],pc_sel[0],讓地址計數(shù)器開始計數(shù),跳變到某個地址x時關(guān)閉。

      iii.打開總線開關(guān)BUS_SEL[4],打開暫存器r1的開關(guān)ld_reg[4],然后打開計數(shù)器開關(guān)en計數(shù)器開始計數(shù),當(dāng)計數(shù)到需要的數(shù)字a時,關(guān)閉計數(shù)器開關(guān)en,此時數(shù)字a存入暫存器r1,關(guān)閉暫存器的開關(guān)ld_reg[4],后再關(guān)閉總線開關(guān)BUS_SEL[4],然后再打開計數(shù)器的清零開關(guān)clr再關(guān)閉。iv.v.同理第iii步,在暫存器r2中存入數(shù)據(jù)b。打開總線開關(guān)

      bus_sel[0].地址計數(shù)器開關(guān)

      ld_reg[0]和pc_sel[2],pc_sel[1],pc_sel[0]選擇存儲地址 vi.打開運算器到總線的開關(guān)bus_sel[1],打開計數(shù)器en計數(shù)開關(guān)en當(dāng)計數(shù)器跳

      數(shù)據(jù)通路實驗報告

      變到加法指令011001時,關(guān)閉計數(shù)開關(guān)en,然后代開rom的地址開關(guān)pc_sel[2],以及可寫開關(guān)we_rd[1]。將從運算器中計算出來的運算結(jié)果a+b存儲到ram中的x地址中,關(guān)閉可寫開關(guān)we_rd[1],關(guān)閉pc_sel[2]和總線開關(guān),最后將計數(shù)器清零。

      vii.打開ram的可讀開關(guān),讀取x地址處的數(shù)據(jù)a+b。

      四. 實驗現(xiàn)象。

      輸入數(shù)據(jù)a

      輸入數(shù)據(jù)b

      數(shù)據(jù)通路實驗報告

      進(jìn)行運算并將運算結(jié)果寫入內(nèi)存

      數(shù)據(jù)通路實驗報告

      從內(nèi)存中讀取計算結(jié)果

      數(shù)據(jù)通路實驗報告

      五. 實驗心得。

      第一次在電板上進(jìn)行這么多的操作。操作過程雖然很多,但只要理解操作過程,明白各個按鍵所設(shè)置的引腳作用,實驗其實并不難,重點在于要理解過程,明白數(shù)據(jù)的輸入,存入寄存器,運算以及往內(nèi)存中進(jìn)行存取值的操作,那么數(shù)據(jù)通路的按鍵很容易記住。

      在實驗過程中還是存在很多問題的,尤其的剛開始做實驗的時候,不理解數(shù)據(jù)通路實驗過程中各個門的輸入的意義和順序,但真正懂得的時候,實驗就變得簡單了。

      第四篇:運算器數(shù)據(jù)通路實驗報告

      運算器數(shù)據(jù)通路實驗

      設(shè)計報告

      學(xué)號: 姓名: 成績: 學(xué)號: 姓名: 成績:

      一、實驗名稱:

      總線、半導(dǎo)體靜態(tài)存儲器實驗

      二、實驗?zāi)康?1.熟悉函數(shù)功能發(fā)生器的功能、使用方法。2.熟悉運算器的數(shù)據(jù)傳送通路。

      3.完成幾種算邏運算操作,加深對運算器工作原理的理解。

      三、實驗原理

      運算器是計算機(jī)中對數(shù)據(jù)進(jìn)行運算操作的重要部件,它的核心是ALU 函數(shù)功能發(fā)生器(由EPM7064S 構(gòu)成),其次還要有存放操作數(shù)和運算的中間結(jié)果之寄存器以及傳送數(shù)據(jù)的總線等部分。選用不同的控制信號,運算器可以完成不同的運算功能。1.函數(shù)功能發(fā)生器(ALU)的功能。

      該函數(shù)功能發(fā)生器(ALU),當(dāng)輸入為Aj、Bj,對應(yīng)輸出為Fj(j=0,1,2,3,4,5,6,7),它可 實現(xiàn)8 種不同的算術(shù)運算和邏輯算,而且通過對控制參數(shù)SEL2~SEL0S0 來選擇。2.?dāng)?shù)據(jù)傳送通路實驗電路方案

      實驗方案框圖見圖2—5 所示。

      圖中SA、SB 為存放兩個現(xiàn)行操作的緩沖寄存器,其中SA 兼作存放中間結(jié)果的累加器,并且可以通過SA 所連接的八個數(shù)據(jù)燈顯示。SA、SB 接收來自總線的數(shù)據(jù)信息送入ALU 進(jìn)行 算術(shù)或邏輯操作。通過移位門將運算操作結(jié)果送到總線。并且ALU 和總線之間需用三態(tài)門隔 離(采用74LS245)。

      四、實驗內(nèi)容

      1.按照實驗電路方案框圖,設(shè)計一個能完成下列八種補碼運算指令的八位運算器。該運算器實現(xiàn)的八種功能如表2—1 所示。

      表2—1:

      2.根據(jù)運算器設(shè)計,選擇所需元器件,畫出實驗電路的詳細(xì)邏輯圖,對開關(guān),單脈沖等 定義。因為和上次實驗類似,也是絕大多數(shù)的器件在“數(shù)據(jù)通路”中已安排好,只要控制各 個控制點即可,除了開關(guān)組通過三態(tài)傳輸門(74LS245)的接法和實驗一一樣外,設(shè)置一個指令寄存器(IR),用74LS573 擔(dān)當(dāng)IR。通過八根連接線和“數(shù)據(jù)通路”中的八位總線連接起來。存放ALU 的控制信息SEL2~SEL0。為了便于觀察IR 中內(nèi)容,可以在IR 的輸出端同時接上三 個電平顯示燈。有的同學(xué)如用三個電平開關(guān)設(shè)置SEL2~SLE0。當(dāng)然可以得出結(jié)果,但是由于 IR 是一個不可缺少的計算機(jī)部件,為了達(dá)到完整熟悉計算機(jī)各組成部分的目的,這里專門設(shè)置了指令寄存器IR。

      3.在電路上進(jìn)行表2—1 所列的八種指令的手動操作,每次一條指令。實驗時可由數(shù)據(jù) 開關(guān)輸入指令碼及操作數(shù),予以功能的驗證。4.本實驗應(yīng)實現(xiàn)的操作

      K→SA(開關(guān)輸入的第一個操作數(shù)置入SA,LED 顯示)K→SB(開關(guān)輸入的第二個操作數(shù)置入SB,無顯示)K→IR(開關(guān)輸入的ALU 控制代碼置入IR)

      ALU 運算結(jié)果通過ALU-244→SA(將運算結(jié)果送SA 顯示)具體實驗過程(僅僅作為參考)如下:

      1)從輸入設(shè)備(八個鈕子開關(guān))置入第一個數(shù)據(jù),74LS245 的E=0,74LS573 的C 由“0”變?yōu)椤?”(鎖存)后再變?yōu)椤?”(保持);送入Sa(該寄存器接有LED 顯示); 2)從輸入設(shè)備(八個鈕子開關(guān))置入第一個數(shù)據(jù),74LS245 的E=0,74LS573 的C 由“0”變?yōu)椤?”(鎖存)后再變?yōu)椤?”(保持);送入Sb(該寄存器沒有接LED 顯示); 3)從輸入設(shè)備(八個鈕子開關(guān))將需要進(jìn)行運算操作(如加法操作)的控制代碼(具體內(nèi)容可見表3-4)置入到IR,74LS245 的E=0,74LS573 的C 由“0”變?yōu)椤?”(鎖存)后再變?yōu)椤?”(保持);

      4)控制接通ALU-244,使運算結(jié)果上總線;

      5)將結(jié)果置入Sa,并通過所接的LED 將結(jié)果顯示出來。

      五、測試結(jié)果與性能分析

      1、測試結(jié)果:

      1)數(shù)據(jù)A準(zhǔn)備→三態(tài)門①打開→給寄存器Sa脈沖→數(shù)據(jù)進(jìn)入Sa;

      數(shù)據(jù)B準(zhǔn)備→給寄存器Sb脈沖→數(shù)據(jù)進(jìn)入Sb; 數(shù)據(jù)準(zhǔn)備(指令)→給指令寄存器IR脈沖→指令進(jìn)入IR→三態(tài)門①關(guān)閉; 2)ALU按照指令進(jìn)行計算,結(jié)果進(jìn)入總線→三態(tài)門②(寄存器Sa往顯示燈)打開→給寄存器Sa脈沖→顯示燈顯示計算結(jié)果

      實驗輸入三組數(shù)據(jù)進(jìn)行計算 00010000 – 00000001 = 00001111;00010101 & 00001010 = 00000000;00001000 + 00000110 = 00001110;

      2、性能分析

      單總線結(jié)構(gòu)數(shù)據(jù)傳送慢,使用多總線結(jié)構(gòu)可以提高數(shù)據(jù)傳送效率 另外,EPM7064S 器件性能介紹:

      高性能和EEPROM的可編程邏輯器件(PLD)的第二代基于Max 架構(gòu) 5.0-V在系統(tǒng)可編程能力(ISP)具有完整的EPLD的邏輯密度

      5納秒引腳到引腳的邏輯延時高達(dá)175.4 MHz的計數(shù)器頻率(包括互連)

      六、課程設(shè)計總結(jié)(包括設(shè)計的總結(jié)和需要改進(jìn)之處及體會)

      通過這次實驗設(shè)計,我們可以了解運算器數(shù)據(jù)通路的工作原理,各組數(shù)據(jù)的走向和時間邏輯關(guān)系,也更清楚認(rèn)識了指令控制的重要性。另外這是第一次在電腦上對運算器芯片的引腳進(jìn)行設(shè)置,稍微有一點差錯就會造成實驗結(jié)果的差異,因此使得我們在實驗中更加專注和仔細(xì)。這次實驗的分工也很明確,我負(fù)責(zé)在實驗臺上搭線,張成濤同學(xué)負(fù)責(zé)在電腦上設(shè)置運算器引腳。但最終因為實驗臺的更換問題,實驗結(jié)果沒有調(diào)試出來。換了一個電腦進(jìn)行引腳設(shè)置后,終于成功了。由于有協(xié)調(diào)的合作,實驗操作過程也不會復(fù)雜繁瑣,這次實驗過程很有趣,并且讓我們對機(jī)器內(nèi)部數(shù)據(jù)通路的理解有更進(jìn)一步的啟發(fā)。

      教師評語:

      教師簽字:

      日期:

      第五篇:實驗4 數(shù)據(jù)通路 實驗報告

      班級:計算機(jī)科學(xué)與技術(shù)3班

      學(xué)號: 20090810310

      姓名:

      康小雪

      日期: 2011-10-14

      實驗3 存儲器實驗

      預(yù)習(xí)實驗報告

      疑問:

      1、數(shù)據(jù)通路是干嘛的?

      2、數(shù)據(jù)通路如何實現(xiàn)其功能?

      3、實驗書上的存儲器部分總線開關(guān)接在高電平上,是不是錯了?

      實驗報告

      一、波形圖:

      參數(shù)設(shè)置:

      Endtime:2.0us

      Gridsize:100.0ns 信號設(shè)置:

      clk:

      時鐘信號,設(shè)置周期為100ns占空比為50%。

      bus_sel:

      sw|r4|r5|alu|pc_bus的組合,分別代表的是總線(sw_bus)開關(guān),將

      存儲器r4的數(shù)據(jù)顯示到總線上,將存儲器r5的數(shù)據(jù)顯示到總線上,將alu的運算結(jié)果顯示到總線上,將pc的數(shù)據(jù)打入AR中二進(jìn)制輸入,低電平有效。

      alu_sel:

      m|cn|s[3..0]的組合,代表運算器的運算符號選擇,二進(jìn)制輸入,高

      電平有效。

      ld_reg:

      lddr1|lddr2|ldr4|ldr5|ld_ar的組合,分別表示將總線數(shù)據(jù)載入寄存器

      r1,r2,r4, r5或AR中,二進(jìn)制輸入,高電平有效。

      pc_sel:

      pc_clr|ld|en的組合,分別代表地址計數(shù)器PC的清零(pc_clr)、裝

      載(pc_ld)和計數(shù)使能信號(pc_en),二進(jìn)制輸入,低電平有效。

      we_rd:

      信號we和rd的組合,分別代表對ram的讀(we)與寫(rd)的操作,二進(jìn)制輸入,高電平有效

      k:

      k [7]~ k [0],數(shù)據(jù)輸入端信號,十六進(jìn)制輸入。

      d:

      d[7]~d[0],數(shù)據(jù)輸出中間信號,十六進(jìn)制雙向信號。

      d~result:

      d [7] result ~d[0] result,最終的數(shù)據(jù)輸出信號,十六進(jìn)制輸出。ar:

      ar[7]~ ar[0],地址寄存器AR的輸出結(jié)果,十六進(jìn)制輸出。pc:

      pc [7]~ pc [0],地址計數(shù)器PC的輸出結(jié)果,十六進(jìn)制輸出。

      仿真波形

      以在01H單元中寫入05H、02H單元中寫入0AH并進(jìn)行【(A加B)減(非A與B)加B】為例:

      1)初始狀態(tài):bus_sel=11111,alu_sel=00000,ld_reg=00000,pc_sel=100,we_rd=00,k=00H,總線上無數(shù)據(jù),呈高阻態(tài)。2)讀取01H單元的05A:

      ① 置數(shù)法PC=01H:bus_sel=01111,pc_sel=101 ② PC->AR:bus_sel=11110,ld_reg=00001 ③ 讀01H單元的數(shù)據(jù)放入R1中:bus_sel=11111,ld_reg=10000,we_rd=01 3)讀取02H單元的0AH:

      ① PC+1,PC->AR:bus_sel=11110,ld_reg=00001,pc_sel=111 ② 讀01H單元的數(shù)據(jù)放入R2中:bus_sel=11111,ld_reg=01000,we_rd=01 4)將地址加到03H :bus_sel=11110,ld_reg=00001,pc_sel=111 5)驗證數(shù)據(jù)并運算: bus_sel=11101 ① 讀取R1中的數(shù)據(jù):alu_sel=010000,得到R1=05H ② 讀取R2中的數(shù)據(jù):alu_sel=101010,得到R2=0AH ③ 計算(A加B)結(jié)果存于R4中:alu_sel=011001,ld_reg=00100,結(jié)果為0FH ④ 計算(非A與B)結(jié)果存于03H單元中:alu_sel=100010,we_rd=10,結(jié)果為0AH ⑤ 計算((A加B)加B)結(jié)果存于04H單元中:

      ? R4->R1:bus_sel=10111,ld_reg=10000 ? PC+1,PC->AR:bus_sel=11110,ld_reg=00001,pc_sel=111 ? 計算((A加B)加B)結(jié)果存于04H單元中:bus_sel=11101,alu_sel=011001,we_rd=10 ⑥ 計算(((A加B)加B)減(非A與B))結(jié)果存于05H中:

      ?((A加B)加B)->R1:bus_sel=11111,ld_reg=10000,we_rd=01 ?(非A與B)->R2:

      ? PC=03H:k=03H,bus_sel=01111,pc_sel=101 ? PC->AR:bus_sel=11110,ld_reg=00001 ?(非A與B)->R2:bus_sel=11111,ld_reg=01000,we_rd=01 ? PC=05H:

      ? PC=05H:k=03H,bus_sel=01111,pc_sel=101 ? PC->AR:bus_sel=11110,ld_reg=00001 ?

      ?(((A加B)加B)減(非A與B))結(jié)果存于05H中:bus_sel=11101,alu_sel=000110,we_rd=10 最后結(jié)果為0FH。結(jié)論:

      本實驗的設(shè)計能結(jié)合了運算器和存儲器,能實現(xiàn)在mif文件中進(jìn)行初始化,將固定地址單元中存儲的數(shù)據(jù)讀取到運算器中進(jìn)行(((A加B)加B)減(非A與B))的運算并將結(jié)果存于指定的內(nèi)存單元中,與實驗要求一致,故電路設(shè)計正確。

      二、實驗日志

      預(yù)習(xí)疑問解答:

      1.通路是干嘛的?

      在數(shù)字系統(tǒng)中,各個子系統(tǒng)通過數(shù)據(jù)總線連接形成的數(shù)據(jù)傳送路徑稱為數(shù)據(jù)通路.2.通路如何實現(xiàn)其功能?

      在這次的實驗中,數(shù)據(jù)通路主要是由運算器部分和存儲器部分組成的,通過運算器的運算結(jié)合存儲器在mif文件的中的操作進(jìn)行數(shù)據(jù)的傳輸與存儲,從而構(gòu)成一個數(shù)據(jù)通路.錯

      3.書上的存儲器部分總線開關(guān)接在高電平上,是不是錯了? 事實證明沒有接錯.

      思考題:

      1. 畫數(shù)據(jù)通路電路圖時,如何連結(jié)單一總線? 如圖:

      ALU模塊的sw_bus依然連接bus_sel,存儲器部分的sw_bus連接高電平.2. 如何統(tǒng)一兩個模塊的總線輸入端k[7..0]及inputd[7..0]?

      答:如圖: 輸入放在運算器部分,存儲器部分無輸入,存儲器部分的數(shù)據(jù)要么來自總線傳輸,要么從mif文件中讀取.實驗中遇到的問題:

      1.把之前的alu和ram的原理圖拷到了當(dāng)前工程下面。直接生成該工程的符號文件,連接起來,但是仿真有問題。

      幾乎是在每一次和總線交換數(shù)據(jù)的時候都得不到正確的值。下面是解決的過程:

      我懷疑是兩個模塊之間通過總線傳輸?shù)臄?shù)據(jù)沒有傳輸成功,于是把alu模塊的d引了一個輸出端口d_alu,從ram模塊的d引出了一個輸出端口d_ram,在仿真波形圖上,然后就可以看到了數(shù)據(jù)到達(dá)總線上了,而且這個時候d的值也能看到了,只是后面的最后一個讀操作出來的數(shù)據(jù)不對,本來應(yīng)該是寫進(jìn)去的07,但現(xiàn)在是17,再仿真就會變成別的數(shù)據(jù)。2.在連接電路圖的時候,我以為存儲器部分的sw_bus連在高電平上是錯的,然后又連到了bus_sel[4],所以得到了上一個部分的仿真結(jié)果,后來不研究了一下那個高電平,發(fā)現(xiàn)是用來處理單一總線問題的,就改成了與書上一樣的圖,我以為上面出現(xiàn)的錯誤結(jié)果和這個有關(guān),改了之后波形圖有變化,但是,還是是錯誤的.但是在兩種情況下功能仿真的結(jié)果都是正確的:

      問題解決了~

      原因是周期太短,計算結(jié)果還來不及存入到內(nèi)存單元中,把寫入內(nèi)存的時間周期延長一個周期結(jié)果就出來了。電路本身沒有問題。

      實驗心得:

      這次實驗是基于前兩次實驗的成果而成的綜合,之前沒有發(fā)現(xiàn)驗收成果后模塊中還存在什么問題,把兩個模塊一拼在一起,問題就出來了,而且不止我一個人出現(xiàn)這樣的狀況,一直沒弄明白這是為什么,后來經(jīng)過反反復(fù)復(fù)的仿真和觀察,終于找出了問題的原因,并順利解決了。這一次又學(xué)到了許多東西。

      下載非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告(精選五篇)word格式文檔
      下載非常簡單CPU數(shù)據(jù)通路設(shè)計實驗報告(精選五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        傳媒--數(shù)據(jù)通路實驗報告1號

        實驗四 數(shù)據(jù)通路實驗 一、實驗?zāi)康?1、理解總線的概念、作用和特性。 2、掌握用總線控制數(shù)據(jù)傳送的方法。 3、進(jìn)一步熟悉教學(xué)計算機(jī)的數(shù)據(jù)通路。 4、掌握數(shù)字邏輯電路中故障......

        計組實驗數(shù)據(jù)通路實驗報告

        存儲器實驗 預(yù)習(xí)實驗報告 疑問: 1、 數(shù)據(jù)通路是干嘛的? 2、 數(shù)據(jù)通路如何實現(xiàn)其功能? 3、 實驗書上的存儲器部分總線開關(guān)接在高電平上,是不是錯了? 一、 波形圖:參數(shù)設(shè)置: 信號......

        計算機(jī)組成原理實驗報告+++數(shù)據(jù)通路實驗

        數(shù)據(jù)通路組成實驗 一、實驗?zāi)康? (1)將雙端口通用寄存器組和雙端口存儲器模塊聯(lián)機(jī);(2)進(jìn)一步熟悉計算機(jī)的數(shù)據(jù)通路; (3)掌握數(shù)字邏輯電路中故障的一般規(guī)律,以及排除故障的一般原則和方......

        Vb設(shè)計實驗報告

        Vb設(shè)計實驗報告 一、 設(shè)計內(nèi)容和目的 這次實驗設(shè)計,我做的是學(xué)生信息管理系統(tǒng),主要功能是提供學(xué)生信息保存和查詢功能。 主要分為個窗口,其具體功能如下: 1、 登錄窗口:提供學(xué)生......

        網(wǎng)頁設(shè)計實驗報告

        網(wǎng)頁設(shè)計實驗報告 本課程的設(shè)計目的是通過實踐使同學(xué)們經(jīng)歷Dreamweaver cs3開發(fā)的全過程和受到一次綜合訓(xùn)練,以便能較全面地理解、掌握和綜合運用所學(xué)的知識。結(jié)合具體的開發(fā)......

        機(jī)械零件設(shè)計實驗報告

        通過這次帶傳動實驗,對帶傳動實驗臺結(jié)構(gòu)及工作原理有了一定的了解,并且加深了我對帶傳動知識的認(rèn)識,同時在之前課堂上很多不太懂的東西,通過這次實驗也懂得了。例如在帶傳動的彈......

        PCB設(shè)計實驗報告(范文大全)

        Protel 99SE原理圖與PCB設(shè)計的實驗報告 摘要: Protel 99SE是一種基于Windows環(huán)境下的電路板設(shè)計軟件。該軟件功能強大,提供了原理圖設(shè)計、電路混合信號仿真、PCB圖設(shè)計、信號......

        女裝設(shè)計實驗報告參考

        《 女裝設(shè)計》課程實驗報告 學(xué) 號: 字體是黑體三號不加粗姓 名: 學(xué) 院: 輕紡工程與藝術(shù)學(xué)院 專 業(yè): 班 級: 日 期: 2015年7月2日 指導(dǎo)教師: 亓 妍 妍 安徽農(nóng)......