Professional Documents
Culture Documents
CU TRC MY TNH
BI LAB 1
H Vit Vit
Trn Cng
V Mai nh
Nguyn Ngc Tun
08dt4
08dt4
08dt4
1. B Muxer 32-1:
- B chn knh, chn 1 bit u ra t 32 bit u vo.
+ Code:
// Multiplexor select 1bit from 32bits
module Muxer (f, data, sel);
output f;
input [0:31] data;
input [0:31] sel;
wire
wire
wire
[0:31] f1;
[0:7] f2;
f3,f4;
genvar i;
generate
for (i=0; i<32; i=i+1) begin: and_gates
and (f1[i], data[i], sel[i]);
end
for (i=0; i<8; i=i+1) begin: or_gates
or (f2[i], f1[4*i], f1[4*i+1], f1[4*i+2], f1[4*i+3]);
end
or (f3, f2[0], f2[1], f2[2], f2[3]);
or (f4, f2[4], f2[5], f2[6], f2[7]);
or (f, f3, f4);
endgenerate
endmodule
+ Kt qu m phng trong Quartus:
2. B gii m 5 32:
- Gii m 5 bit la chn thanh ghi thnh bus select 32 bit
+ Code:
// Decoder 5 to 32
module Decoder (UnCoded, Coded);
input [4:0] Coded;
output [31:0] UnCoded;
wire
wire
wire
[4:0] nCoded;
[4:0] dCoded;
f1, f2, f3, f4;
not
#50
(nCoded[3], Coded[3]),
(nCoded[4], Coded[4]);
buf
#50
(dCoded[3], Coded[3]),
(dCoded[4], Coded[4]);
and
#50
not
#100
(nCoded[0], Coded[0]),
(nCoded[1], Coded[1]),
(nCoded[2], Coded[2]);
buf
#100
(dCoded[0], Coded[0]),
(dCoded[1], Coded[1]),
(dCoded[2], Coded[2]);
and #50
and #50
and #50
assign UnCoded[0] = 0;
endmodule
+ Kt qu m phng trn Quartus:
+ Code:
// Single register from 32 DFF
module SinReg (data_out, data_in, reset, clk, wri_en);
output [31:0] data_out;
input [31:0] data_in;
input reset, clk, wri_en;
wire
f;
and
genvar i;
generate
for (i=0; i<32; i=i+1) begin: DFF
D_FF DFF(data_out[i], data_in[i], reset, f);
end
endgenerate
endmodule
[31:0] f1 [31:0];
[31:0] f2 [31:0];
genvar i,j;
generate
for (i=0; i<32; i=i+1) begin: register
SinRegregister(f1[i], data_in, reset, clk, wri_sel[i]);
end
for (i=0; i<32; i=i+1) begin: Mux1
for (j=0; j<32; j=j+1) begin: Mux2
assign f2[j][i] = f1[i][j];
end
end
for (i=0; i<32; i=i+1) begin: Mux3
Muxer Muxers1(data_out1[i], f2[i], read_sel1);
Muxer Muxers2(data_out2[i], f2[i], read_sel2);
end
endgenerate
endmodule
4. Module chnh regfile:
- Gm 1 bus d liu u vo v 2 bus d liu u ra.
- 3 bus 5bit la chn thanh ghi
- 3 u vo iu khin clk, reset v cho php ghi RegWrite
+ Code:
// register file
module regfile (ReadData1, ReadData2, WriteData, ReadRegister1, ReadRegister2, WriteRegister,
RegWrite, clk, reset);
output [31:0] ReadData1;
output [31:0] ReadData2;
input [31:0] WriteData;
input [4:0] WriteRegister;
input [4:0] ReadRegister1;
input [4:0] ReadRegister2;
input clk, reset, RegWrite;
wire
wire
wire
wire
[31:0] wri_sel;
[31:0] read_sel1;
[31:0] read_sel2;
[31:0] f;
genvar i;
generate
Decoder Decoder1(f, WriteRegister);
endgenerate
endmodule
+ Kt qu m phng trn Quartus: