1多选(3分)
多周期数据通路实验电路结构包括:
得分/总分
A.标志寄存器PSW,用来保存运算结果产生的标志位SF,ZF,OF,CF
B.数据寄存器RF,用来保存提供给ALU的运算操作数X
C.数据寄存器RX,用来保存ALU的运算结果F
D.数据开关DATA,给该实验电路提供操作数
正确答案:A、D你选对了
2多选(3分)
多周期数据通路执行下面的操作后,寄存器__________的值是__________。
DATA | DATAoe | INDEX | GRSce | GRSoe | RFoe | CLK |
1001 | 1 | 01 | 1 | 0 | 0 | 产生一个 |
得分/总分
A.R1
B.9
C.R2
D.R3
正确答案:A、B
3多选(3分)
多周期数据通路执行下面的操作后,寄存器_________的值是_________。
DATA | DATAoe | INDEX | GRSce | GRSoe | RFoe | CLK |
1100 | 1 | 10 | 1 | 0 | 0 | 产生一个 |
得分/总分
A.C
B.R2
C.0
D.6
正确答案:A、B
4多选(3分)
在多周期数据通路中执行下面的操作,操作过程中注意观察寄存器RX,寄存器RF,标志寄存器PSW,以及通用寄存器组GRS内相应寄存器的值,这八步操作实现的功能是__________.
DATA | DATAoe | INDEX | GRSce | GRSoe | RXce | ALU_OP | PSWce | RFce | RFoe | CLK |
①0111 | 1 | 00 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
②1000 | 1 | 01 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
③1010 | 1 | 00 | 0 | 0 | 1 | 0000 | 0 | 0 | 0 | 产生一个 |
④0000 | 0 | 00 | 0 | 1 | 0 | 0001 | 1 | 1 | 0 | 产生一个 |
⑤0000 | 0 | 10 | 1 | 0 | 0 | 0000 | 0 | 0 | 1 | 产生一个 |
⑥0001 | 1 | 00 | 0 | 0 | 1 | 0000 | 0 | 0 | 0 | 产生一个 |
⑦0000 | 0 | 01 | 0 | 1 | 0 | 1011 | 1 | 1 | 0 | 产生一个 |
⑧0000 | 0 | 11 | 1 | 0 | 0 | 0000 | 0 | 0 | 1 | 产生一个 |
得分/总分
A.双倍字长加法00011010+10000111
B.双倍字长加法10100001+01111000
C.第⑤步骤完成后:
RX的值是A,RF的值是1,标志寄存器的值是4,R2寄存器的值是1。
D.第⑧步骤完成后:
RX的值是1,RF的值是A,标志寄存器的值是8,R3寄存器的值是A。
正确答案:A、D
5多选(3分)
在单周期数据通路中,将数据1001存入R1寄存器,在按下时钟clk之前,需要的操作包括()
得分/总分
A.操作MUX多路器的控制信号,选择0号通道的值输出
B.WE=1
C.操作MUX多路器的控制信号,选择1号通道的值输出
D.RA2=00
正确答案:B、C
6多选(3分)
在单周期数据通路中,完成R1+R2->R3,在按下时钟clk前,需要的操作包括()
得分/总分
A.WA=11
B.操作MUX多路器的控制信号,选择0号通道的值输出0.75/3.00
C.WE=1
D.RA1=01
正确答案:A、B、C、D
7填空(2分)
多周期数据通路执行下面的操作,操作过程中注意观察寄存器RX,寄存器RF,标志寄存器PSW,以及通用寄存器组GRS内相应寄存器的值,③④⑤ 这三步操作实现的功能是__________(R1+R2->R3 / R1-R2->R3 / R1&R2->R3 / R1->R3 / (R1)/2->R3 / (R1)2->R3 )。
符号说明:’+‘加法;’-‘减法;’&‘与;’/‘除法;’'乘法
DATA | DATAoe | INDEX | GRSce | GRSoe | RXce | ALU_OP | PSWce | RFce | RFoe | CLK |
① 1001 | 1 | 01 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
② 1100 | 1 | 10 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
③ 0000 | 0 | 01 | 0 | 1 | 1 | 0000 | 0 | 0 | 0 | 产生一个 |
④ 0000 | 0 | 10 | 0 | 1 | 0 | 0001 | 1 | 1 | 0 | 产生一个 |
⑤ 0000 | 0 | 11 | 1 | 0 | 0 | 0000 | 0 | 0 | 1 | 产生一个 |
得分/总分
正确答案:R1+R2->R3
8填空(2分)
多周期数据通路执行下面的操作,操作过程中注意观察寄存器RX,寄存器RF,标志寄存器PSW,以及通用寄存器组GRS内相应寄存器的值,③④⑤ 这三步操作实现的功能是__________(R1+R2->R3 / R1-R2->R3 / R1&R2->R3 / R1->R3 / (R1)/2->R3 / (R1)*2->R3 )。
DATA | DATAoe | INDEX | GRSce | GRSoe | RXce | ALU_OP | PSWce | RFce | RFoe | CLK |
① 1001 | 1 | 01 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
② 1100 | 1 | 10 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
③ 0000 | 0 | 01 | 0 | 1 | 1 | 0000 | 0 | 0 | 0 | 产生一个 |
④ 0000 | 0 | 00 | 0 | 0 | 0 | 0000 | 0 | 1 | 0 | 产生一个 |
⑤ 0000 | 0 | 11 | 1 | 0 | 0 | 0000 | 0 | 0 | 1 | 产生一个 |
正确答案:R1->R3
9填空(2分)
多周期数据通路执行下面的操作,操作过程中注意观察寄存器RX,寄存器RF,标志寄存器PSW,以及通用寄存器组GRS内相应寄存器的值,③④⑤ 这三步操作实现的功能是__________(R1+R2->R3 / R1-R2->R3 / R1&R2->R3 / R1->R3 / (R1)/2->R3 / (R1)*2->R3 )。
DATA | DATAoe | INDEX | GRSce | GRSoe | RXce | ALU_OP | PSWce | RFce | RFoe | CLK |
① 1001 | 1 | 01 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
② 1100 | 1 | 10 | 1 | 0 | 0 | 0000 | 0 | 0 | 0 | 产生一个 |
③ 0000 | 0 | 01 | 0 | 1 | 1 | 0000 | 0 | 0 | 0 | 产生一个 |
④ 0000 | 0 | 00 | 0 | 0 | 0 | 0110 | 0 | 1 | 0 | 产生一个 |
⑤ 0000 | 0 | 11 | 1 | 0 | 0 | 0000 | 0 | 0 | 1 | 产生一个 |
得分/总分
正确答案:(R1)/2->R3
10填空(2分)
多周期数据通路,写出R1+R2->R3的运算流程(填空时,操作之间用#隔开,例如R1->A#ADD#置PSW)
- R1->RX;
- ______________________________;
- RF->R3。
(R1->RX / R2->RX / R1->ALU.Y / R2->ALU.Y / ADD/ALU->RF / 置PSW /RF->R1 / RF->R2 / RF->R3 /RF->RX)
得分/总分
正确答案:R2->ALU.Y#ADD#ALU->RF#置PSW
11填空(2分)
多周期数据通路,写出(R1)/2->R3的运算流程(填空时,操作之间用#隔开,例如R1->A#ADD#置PSW)
1.R1->A;
2.______________________________;
3.RF->R3。
(R1->RX / R2->RX / R1->ALU.Y / R2->ALU.Y / ADD/ ASR/ SHL/ALU->RF / 置PSW /RF->R1 / RF->R2 / RF->R3 /RF->RX)
得分/总分
正确答案:ASR#ALU->RF
12填空(2分)
多周期数据通路,写出R1->R3的运算流程(填空时,操作之间用#隔开,例如R1->A#ADD#置PSW)
1.R1->A;
2.______________________________;
3.RF->R3。
(R1->RX / R2->RX / R1->ALU.Y / R2->ALU.Y / ADD/ ASR/ SHL/ALU->RF / 置PSW /RF->R1 / RF->R2 / RF->R3 /RF->RX)
得分/总分
正确答案:ALU->RF
13填空(2分)
在单周期数据通路中,因为寄存器堆设计____(R0/R1/R2/R3)寄存器的值恒为0,因此可以通过ALU,令DATA加上该寄存器的值,将DATA传送到寄存器堆的写端口。
得分/总分
R0
2.00/2.00
正确答案:R0
14填空(2分)
根据实验结果,实现同样的运算R1+R2->R3,在多周期数据通路中,需要3个时钟周期,在单周期数据通路中,需要____个时钟周期。
得分/总分
1
2.00/2.00
正确答案:1
实验代码
不含clk的数据通路
`default_nettype none module VirtualBoard ( input logic CLOCK, // 10 MHz Input Clock input logic [19:0] PB, // 20 Push Buttons, logical 1 when pressed input logic [35:0] S, // 36 Switches output logic [35:0] L, // 36 LEDs, drive logical 1 to light up output logic [7:0] SD7, // 8 common anode Seven-segment Display output logic [7:0] SD6, output logic [7:0] SD5, output logic [7:0] SD4, output logic [7:0] SD3, output logic [7:0] SD2, output logic [7:0] SD1, output logic [7:0] SD0 ); /********* Seven-segment decoder instantiation **********/ logic [3:0] HD[7:0]; // 8 hexadecimal display SevenSegDecode ssdecode_inst7(.iData(HD[7]), .oSeg(SD7)); SevenSegDecode ssdecode_inst6(.iData(HD[6]), .oSeg(SD6)); SevenSegDecode ssdecode_inst5(.iData(HD[5]), .oSeg(SD5)); SevenSegDecode ssdecode_inst4(.iData(HD[4]), .oSeg(SD4)); SevenSegDecode ssdecode_inst3(.iData(HD[3]), .oSeg(SD3)); SevenSegDecode ssdecode_inst2(.iData(HD[2]), .oSeg(SD2)); SevenSegDecode ssdecode_inst1(.iData(HD[1]), .oSeg(SD1)); SevenSegDecode ssdecode_inst0(.iData(HD[0]), .oSeg(SD0)); /** The input port is replaced with an internal signal **/ wire reset = PB[0]; wire clk = PB[1]; wire [3:0] DATA = S[3:0]; wire [1:0] INDEX = S[5:4]; wire RFoe = S[6]; wire GRSoe = S[7]; wire DATAoe= S[8]; wire [3:0] ALUop = S[12:9]; // wire = S[13]; wire RFce = S[14]; wire PSWce= S[15]; wire GRSce= S[16]; wire RXce = S[17]; /************* The logic of this experiment *************/ //各模块间连线信号 wire [3:0] BUS, RX_Q, F, RF_Q, GRS_Q; wire [3:0] FLAG, PSW_Q; //模块实例 ALU #(4) ALU_inst(.iOp(ALUop), .iX(RX_Q), .iY(BUS), .oF(F), .oFlag(FLAG), .Cin(PSW_Q[0])); GRS #(4) GRS_inst(.iD(BUS), .oQ (GRS_Q), .Load(GRSce), .Clk(clk), .Index(INDEX)); DataReg #(4) RX_inst(.oQ(RX_Q), .iD(BUS), .Clk(clk), .Load(RXce), .Reset(reset)); DataReg #(4) RF_inst(.oQ(RF_Q), .iD(F), .Clk(clk), .Load(RFce), .Reset(reset)); DataReg #(4) PSW_inst(.oQ(PSW_Q), .iD(FLAG), .Clk(clk), .Load(PSWce ), .Reset(reset)); //三态缓冲器逻辑描述 assign BUS = RFoe ? RF_Q : 4'bzzzz; assign BUS = GRSoe ? GRS_Q : 4'bzzzz; assign BUS = DATAoe ? DATA : 4'bzzzz; /****** Internal signal assignment to output port *******/ assign L[25:22] = PSW_Q; assign L[21:18] = FLAG; assign HD[5] = RX_Q; assign HD[4] = BUS; assign HD[3] = GRS_Q; assign HD[1] = RF_Q; assign HD[0] = F; endmodule
含clk的数据通路
`default_nettype none module VirtualBoard ( input logic CLOCK, // 10 MHz Input Clock input logic [19:0] PB, // 20 Push Buttons, logical 1 when pressed input logic [35:0] S, // 36 Switches output logic [35:0] L, // 36 LEDs, drive logical 1 to light up output logic [7:0] SD7, // 8 common anode Seven-segment Display output logic [7:0] SD6, output logic [7:0] SD5, output logic [7:0] SD4, output logic [7:0] SD3, output logic [7:0] SD2, output logic [7:0] SD1, output logic [7:0] SD0 ); /********* Seven-segment decoder instantiation **********/ logic [3:0] HD[7:0]; // 8 hexadecimal display SevenSegDecode ssdecode_inst7(.iData(HD[7]), .oSeg(SD7)); SevenSegDecode ssdecode_inst6(.iData(HD[6]), .oSeg(SD6)); SevenSegDecode ssdecode_inst5(.iData(HD[5]), .oSeg(SD5)); SevenSegDecode ssdecode_inst4(.iData(HD[4]), .oSeg(SD4)); SevenSegDecode ssdecode_inst3(.iData(HD[3]), .oSeg(SD3)); SevenSegDecode ssdecode_inst2(.iData(HD[2]), .oSeg(SD2)); SevenSegDecode ssdecode_inst1(.iData(HD[1]), .oSeg(SD1)); SevenSegDecode ssdecode_inst0(.iData(HD[0]), .oSeg(SD0)); /** The input port is replaced with an internal signal **/ wire reset = PB[0]; wire clk = PB[1]; wire [1:0] RA2 = S[3:2]; wire [1:0] RA1 = S[1:0]; wire [1:0] WA=S[5:4]; wire WE = S[6]; wire [3:0] ALUop = S[11:8]; wire M0 = S[14]; wire S1 = S[13]; wire S0 = S[12]; wire RXce = S[17]; /************* The logic of this experiment *************/ //各模块间连线信号 wire [3:0] RD1; wire [3:0] RD2; wire [3:0] FLAG; wire [3:0] SSD3; wire [3:0] SSD0; //模块实例 sALU #(4) ALU_inst(.iCtrl(ctrl), .iX(RD1), .iY(SSD0), .oF(SSD3), .oFlag(FLAG)); RegFile #(4) GRS_inst(.iRA1(RA1),.iRA2(RA2),.iWA(WA),.iWE(WE),.Clk(clk),.iWD(SSD3),.oRD1(RD1),.oRD2(RD2)); //三态缓冲器逻辑描述 wire [2:0] ctrl=S[14:12]; always_comb begin case (S[7]) 1'b1: SSD0=ALUop; 1'b0: SSD0=RD2; default: SSD0={4{1'bx}}; endcase end /****** Internal signal assignment to output port *******/ assign HD[3] = SSD3; assign HD[2] = RD2; assign HD[1] = RD1; assign HD[0] = SSD0; assign L[21:18]=FLAG; endmodule