ựa vào hiểu biết của mình, thiết ố liệu thực tế, giải thích ệu tham khảo: ựa vào hiểu biết của mình, thiết ảng gồm 32 thanh ghi 32-bit khác nhau.. 32 file thanh ghi ững kết luận có tính
Trang 1LỜI CAM ĐOAN
Chúng em xin cam đoan nội dung của đồ án này không phải là bản saochép của bất cứ đồ án hoặc công trình đã có từ trước
Chữ kí của nhóm:
Trang 2MỤC LỤC
1 Tóm tắt yêu cầu của bài Lab1
2 Phần thiết kế thực hiện trên Verilog
3 Hình ảnh mô phỏng
Trang 3PHẦN MỞ ĐẦU
Lab1: Design a MIPS 32 by 32 Register File
N i dung Đ án: ội dung Đồ án: ồ án:
Thi t k b MIPS 32 t 32 file thanh ghi s d ng Verilog 32 file thanh ghiừ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghinày là m t m ng g m 32 thanh ghi 32-bit khác nhau.ảng gồm 32 thanh ghi 32-bit khác nhau ồm 32 thanh ghi 32-bit khác nhau
Tài li u tham kh o: ệu tham khảo: ảng gồm 32 thanh ghi 32-bit khác nhau Computer Organization and Design 4th edition c a tácủa tác
gi :ảng gồm 32 thanh ghi 32-bit khác nhau Patterson and Hennessy
Ph ương án thực hiện: ng án th c hi n: ực hiện: ện:
Nghiên c u Verilog t các tài li u sau đó d a vào hi u bi t c a mình, thi từ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi ệu tham khảo: ựa vào hiểu biết của mình, thiết ểu biết của mình, thiết ủa tác
k , mô ph ng theo yêu c u c a đ án D a trên s li u th c t , gi i thíchầu của đồ án Dựa trên số liệu thực tế, giải thích ủa tác ồm 32 thanh ghi 32-bit khác nhau ựa vào hiểu biết của mình, thiết ố liệu thực tế, giải thích ệu tham khảo: ựa vào hiểu biết của mình, thiết ảng gồm 32 thanh ghi 32-bit khác nhau
đư c hình nh mô ph ng T đó rút ra nh ng k t lu n có tính chuyên mônảng gồm 32 thanh ghi 32-bit khác nhau ừ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi ững kết luận có tính chuyên môn ận có tính chuyên mônsâu, nh m phát tri n hằm phát triển hướng đề tài ra quy mô rộng hơn ểu biết của mình, thiết ướng đề tài ra quy mô rộng hơnng đ tài ra quy mô r ng h nề tài ra quy mô rộng hơn ơn
Trang 41 Tóm t t yêu c u c a bài Lab1 ắt yêu cầu của bài Lab1 ầu của bài Lab1 ủa bài Lab1
1.1 Yêu c u chungầu của đồ án Dựa trên số liệu thực tế, giải thích
* Register File g m 32 thanh ghi, m i thanh ghi ch a 32 bits.ồm 32 thanh ghi 32-bit khác nhau ỗi thanh ghi chứa 32 bits
* Các thanh ghi này ph i đảng gồm 32 thanh ghi 32-bit khác nhau ư c x y d ng t DFF.ận có tính chuyên môn ựa vào hiểu biết của mình, thiết ừ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi
* Đ c bi t, thanh ghi Zero luôn có ngõ ra b ng 0 m c cho giá tr b t kỳ nàoệu tham khảo: ằm phát triển hướng đề tài ra quy mô rộng hơn ị bất kỳ nào ất kỳ nào
đư c ghi vào nó
* Thi t k dùng c u trúc l nh Structural.ất kỳ nào ệu tham khảo:
* Các c ng logic không vổng logic không vượt quá 4 ngõ vào ư t quá 4 ngõ vào
*Delay 50ps
1.2 S đ kh iơn ồm 32 thanh ghi 32-bit khác nhau ố liệu thực tế, giải thích
- C u t o 1 file thanh ghi bao g m:ất kỳ nào ạo 1 file thanh ghi bao gồm: ồm 32 thanh ghi 32-bit khác nhau
+ 32 thanh ghi 32 bit, riêng thanh ghi zero luôn mang giá tr 0.ị bất kỳ nào
+ Có 2 ngõ vào ch n thanh ghi đ c (Read Register1 và Readọn thanh ghi đọc (Read Register1 và Read ọn thanh ghi đọc (Read Register1 và ReadRegister2) và 2 ngõ ra d li u tững kết luận có tính chuyên môn ệu tham khảo: ươnng ng (Read Data1 và Read Data2) khi
đ c file thanh ghi.ọn thanh ghi đọc (Read Register1 và Read
+ Có 1 ngõ vào ch n thanh ghi đ ghi d li u (Write Register ), 1 ngõọn thanh ghi đọc (Read Register1 và Read ểu biết của mình, thiết ững kết luận có tính chuyên môn ệu tham khảo: vào cho phép ghi (RegWrite) và m t ngõ vào d li u (Write Data) khi ghiững kết luận có tính chuyên môn ệu tham khảo: vào file thanh ghi
Trang 5Sơ đồ chi tiết của 1 file thanh ghi:
1.3 Cách th c hi nựa vào hiểu biết của mình, thiết ệu tham khảo:
Xây d ng file thanh ghi:ựa vào hiểu biết của mình, thiết
M i thanh ghi là m t m ng c a 32 DFF Ngõ vào D c a DFF tỗi thanh ghi chứa 32 bits ảng gồm 32 thanh ghi 32-bit khác nhau ủa tác ủa tác ươnng ng v iớng đề tài ra quy mô rộng hơn
1 bit trong đường dữ liệu 32 bit Ngõ ra Q sẽ tương ứng với 1 bit trongng d li u 32 bit Ngõ ra Q sẽ tững kết luận có tính chuyên môn ệu tham khảo: ươnng ng v i 1 bit trongớng đề tài ra quy mô rộng hơn
Trang 6đường dữ liệu 32 bit Ngõ ra Q sẽ tương ứng với 1 bit trongng d li u ra 32 bit Giá tr c a ngõ ra Q sẽ gi ng ngõ vào n u giá trững kết luận có tính chuyên môn ệu tham khảo: ị bất kỳ nào ủa tác ố liệu thực tế, giải thích ị bất kỳ nàocho phép ghi Enable c a D_FF b ng 1 Tín hi u cho phép ghi c a D_FF đủa tác ằm phát triển hướng đề tài ra quy mô rộng hơn ệu tham khảo: ủa tác ư c
k t n i v i cùng 1 tín hi u cho phép ghi WriteEnable tín hi u ngõ vào ố liệu thực tế, giải thích ớng đề tài ra quy mô rộng hơn ệu tham khảo: ệu tham khảo: DFF có tín hi u clock đ đ ng b các thanh ghi Tín hi u clock và tín hi uệu tham khảo: ểu biết của mình, thiết ồm 32 thanh ghi 32-bit khác nhau ệu tham khảo: ệu tham khảo: WriteEnable là nh ng tín hi u riêng bi t Clock là m t tín hi u tu n hoànững kết luận có tính chuyên môn ệu tham khảo: ệu tham khảo: ệu tham khảo: ầu của đồ án Dựa trên số liệu thực tế, giải thích
và n đ nh, do đó đổng logic không vượt quá 4 ngõ vào ị bất kỳ nào ư c dùng đ đi u ch nh tín hi u cho phép ghi, đ m b oểu biết của mình, thiết ề tài ra quy mô rộng hơn ỉnh tín hiệu cho phép ghi, đảm bảo ệu tham khảo: ảng gồm 32 thanh ghi 32-bit khác nhau ảng gồm 32 thanh ghi 32-bit khác nhau.quá trình ghi c a các thanh ghi là chính xác ủa tác
2 N i dung thi t k ội dung Đồ án: ết kế ết kế
T s đ chi ti t cho th y, thi t k m t file thanh ghi yêu c u:ừ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi ơn ồm 32 thanh ghi 32-bit khác nhau ất kỳ nào ầu của đồ án Dựa trên số liệu thực tế, giải thích
+ 32 thanh ghi đư c c u t o t các DFFất kỳ nào ạo 1 file thanh ghi bao gồm: ừ 32 file thanh ghi sử dụng Verilog 32 file thanh ghi
+ 1 b gi i mã 5:12 đi u khi n ghi d li uảng gồm 32 thanh ghi 32-bit khác nhau ề tài ra quy mô rộng hơn ểu biết của mình, thiết ững kết luận có tính chuyên môn ệu tham khảo:
+ 2 b Multiplexer 32x32 to 32
2.1 Thiết kế bộ giải mã 5:32
- Yêu cầu của khối mạch cần thiết kế là xuất ra tín hiệu điều khiển ghi dữ liệu vào các thanh ghi, với đầu vào là 5 bits để chọn thanh ghi, với tín hiệu điều khiển ghi RegWrite
- Để thiết kế bộ giải mã 5:32, ta xây dựng từ các bộ giãi mã 2:4 và 3:8
2.1.1 Mạch giải mã 1:2
Code Verilog:
module demux1_2(out, sel, in);
input in, sel;
output [1:0]out;
buf #50 gate01(bsel, sel);
not #50 gate02(nsel, sel);
and #50 gate03(out[0], nsel, in);
and #50 gate04(out[1], bsel, in);
endmodule
Trang 7K t qu mô ph ng trên Quartus :ảng gồm 32 thanh ghi 32-bit khác nhau.
2.1.2 M ch gi i mã 2:4ạo 1 file thanh ghi bao gồm: ảng gồm 32 thanh ghi 32-bit khác nhau
S d ng b gi i mã 1:2 trên đ xây d ng b gi i mã 2:4ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghi ảng gồm 32 thanh ghi 32-bit khác nhau ở trên để xây dựng bộ giải mã 2:4 ểu biết của mình, thiết ựa vào hiểu biết của mình, thiết ảng gồm 32 thanh ghi 32-bit khác nhau
demux1_2 demux01(tmp[1:0], sel[1], in);
demux1_2 demux02(out[1:0], sel[0], tmp[0]);
demux1_2 demux03(out[3:2], sel[0], tmp[1]);
endmodule
Trang 8K t qu mô ph ng trên Quartus:ảng gồm 32 thanh ghi 32-bit khác nhau.
2.1.3 M ch gi i mã 3:8ạo 1 file thanh ghi bao gồm: ảng gồm 32 thanh ghi 32-bit khác nhau
S d ng 1 b gi i mã 1:2 và 2 b gi i mã 2:4 đ xây d ng b gi i mã 3:8ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghi ảng gồm 32 thanh ghi 32-bit khác nhau ảng gồm 32 thanh ghi 32-bit khác nhau ểu biết của mình, thiết ựa vào hiểu biết của mình, thiết ảng gồm 32 thanh ghi 32-bit khác nhau.module demux1_8(out, sel, in);
input in;
input [2:0]sel;
output [7:0]out;
wire [1:0]tmp;
demux1_2 demux01(tmp[1:0], sel[2], in);
demux1_4 demux02(out[3:0], sel[1:0],
tmp[0]);
demux1_4 demux03(out[7:4], sel[1:0],
tmp[1]);
endmodule
Trang 9K t qu mô ph ng trên Quartus:ảng gồm 32 thanh ghi 32-bit khác nhau.
2.1.4 M ch gi i mã 5:12ạo 1 file thanh ghi bao gồm: ảng gồm 32 thanh ghi 32-bit khác nhau
Trang 10Code Verilog:
S d ng 1 b gi i mã 2:4 và 4 b gi i mã 3:8 đ xây d ng b gi i mã 5:32ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghi ảng gồm 32 thanh ghi 32-bit khác nhau ảng gồm 32 thanh ghi 32-bit khác nhau ểu biết của mình, thiết ựa vào hiểu biết của mình, thiết ảng gồm 32 thanh ghi 32-bit khác nhau
Trang 11module demux1_32(out, sel, in);
input in;
input [4:0]sel;
output [31:0]out;
wire [3:0]tmp;
demux1_4 demux01(tmp[3:0], sel[4:3], in);
demux1_8 demux02(out[7:0], sel[2:0], tmp[0]);
demux1_8 demux03(out[15:8], sel[2:0],
K t qu mô ph ng trênQuartusảng gồm 32 thanh ghi 32-bit khác nhau
2.2 Thi t k 1 thanh ghi 32 bit:
- Theo cấu trúc của file thanh ghi ta thiết kế thì nó bao gồm 32 thanh ghi, mà mỗi thanh ghi là gồm 32 bit, mỗi bit lại được tạo bởi 1 DFF Do đó ta phải trải qua các bước sau:
Trang 12+ Xây dựng 1 bit từ DFF.
+ Xây dựng 1 thanh ghi 32 bit từ 32 DFF.
2.2.1 Xây dựng 1 bit từ DFF:
- Bảng trạng thái:
- Phương trình logic của DFF : Qn+1 = Dn
Code Verilog th c hi n 1 DFFựa vào hiểu biết của mình, thiết ệu tham khảo:
2.2.2 Xây dựng một thanh ghi 32 bit:
- Ở trên ta đã thực hiện tạo 1 bit của thanh ghi, do đó chỉ cần dùng module trên tạo ra 32 đối tượng rồi ghép lại ta được 1 thanh ghi 32 bits:
2.2.3 Xây dựng thanh ghi zero:
- Thanh ghi zero là thanh ghi luôn luôn đọc ra giá trị 0 và không cho ghi giá trị nào lên trên thanh ghi đó.
Code Verilog :
module ZeroReg(q, d, reset, clk);
Dn Qn+1
0 1
0 1
Trang 13D_FF DFFZ(q[i], data[i], rst, clk);
end endgenerate endmodule
K t qu mô ph ng trên Quartus:ảng gồm 32 thanh ghi 32-bit khác nhau
Trang 142.2.4 Xây d ng 31 thanh ghi còn l iựa vào hiểu biết của mình, thiết ạo 1 file thanh ghi bao gồm:
Code Verilog:
K t qu mô ph ng ảng gồm 32 thanh ghi 32-bit khác nhau.trên Quartus
2.3 Thi t k b Multiplexor 32x32 to 32
- B Multiplexor32x32 to 32 có
32 ngõ d li u ững kết luận có tính chuyên môn ệu tham khảo:
đ u vào, m i ầu của đồ án Dựa trên số liệu thực tế, giải thích ỗi thanh ghi chứa 32 bits
module NormalReg(q, d, reset, clk);
D_FF D_FFN(q[i], d[i], reset, clk);
endendgenerate
endmodule
Trang 15ngõ d li u có 32 bit D li u ngõ ra Read data có 32 bit b ng m t ững kết luận có tính chuyên môn ệu tham khảo: ững kết luận có tính chuyên môn ệu tham khảo: ằm phát triển hướng đề tài ra quy mô rộng hơntrong s các ngõ vào 5 bit c a Read Register sẽ quy t đ nh ngõ d ố liệu thực tế, giải thích ủa tác ị bất kỳ nào ững kết luận có tính chuyên môn
li u đ u vào nào sẽ đệu tham khảo: ầu của đồ án Dựa trên số liệu thực tế, giải thích ư c truy n đ n đ u raề tài ra quy mô rộng hơn ầu của đồ án Dựa trên số liệu thực tế, giải thích
- Đ thi t k b Multiplexor 32x32 to 32 đ u ti n ra ph i thi t k b ểu biết của mình, thiết ầu của đồ án Dựa trên số liệu thực tế, giải thích ề tài ra quy mô rộng hơn ảng gồm 32 thanh ghi 32-bit khác nhau.Multiplexor 32 to 1
2.3.1 B Multiplexor 2 to1
Code Verilog
module mux_2_1(y, sel, x);
input sel;
Trang 16and #50 and0(b0, nsel, x[0]);
and #50 and1(b1, bsel, x[1]);
mux_2_1 mux20(b[0], sel[0], x[1:0]);
mux_2_1 mux21(b[1], sel[0], x[3:2]);
mux_2_1 mux22(y, sel[1], b[1:0]);
endmodule
K t qu mô ph ng trên Quartusảng gồm 32 thanh ghi 32-bit khác nhau
Trang 172.3.3 B Multiplexor 8 to 1
S d ng 2 b Multiplexor 4 to 1 và 1 b Multiplexor 2 to 1 đ xây ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghi ểu biết của mình, thiết
d ng b Multiplexor 8 to 1ựa vào hiểu biết của mình, thiết
mux_4_1 mux40(b[0], sel[1:0], x[3:0]);
mux_4_1 mux41(b[1], sel[1:0], x[7:4]);
mux_2_1 mux42(y, sel[2], b[1:0]);
endmodule
K t qu mô ph ng trên Quartus ảng gồm 32 thanh ghi 32-bit khác nhau
Trang 182.3.4 B Multiplexor 32 to 1
S d ng 4 b Muxtiplexor 8 to 1 và 1 b Multiplexor 4 to 1 đ xây ử dụng Verilog 32 file thanh ghi ụng Verilog 32 file thanh ghi ẻ xây
d ng b Multiplexor 32 to 1ựa vào hiểu biết của mình, thiết
mux_8_1 mux81(b[1], sel[2:0], x[15:8]);
mux_8_1 mux82(b[2], sel[2:0], x[23:16]);
mux_8_1 mux83(b[3], sel[2:0], x[31:24]);
mux_4_1 mux84(y, sel[4:3], b[3:0]);
endmodule
K t qu mô ph ng trên Quartus ảng gồm 32 thanh ghi 32-bit khác nhau
Trang 19Sử dụng các module đã được xây dựng ở trên để thiết kế tập thanh ghi hoàn chỉnh
Code Verilog
module regfile( ReadData1, ReadData2, WriteData, ReadRegister1,
ReadRegister2, WriteRegister, RegWrite, clk);
/* Block 1: 5 to 32 decoder */
demux1_32 decoder(WriteEn, WriteRegister, RegWrite);
/* Block 2: 32 register 32-bit */
ZeroReg RegisterZ(RegOut[0], WriteData, reset, clock);
generate
for(k = 1; k< 32; k = k+1) begin: netNormalRegNormalReg RegisterN(RegOut[k], WriteData, reset, clock[k]); end
Trang 20for(k = 0; k< 32; k = k+1) begin: net3
assign MuxIn[i][k] = RegOut[k][i];
endend
/* Multiplexer 1 */
for(k = 0; k< 32; k = k+1) begin: netMuxAmux_32_1 MuxA(ReadData1[k], ReadRegister1, MuxIn[k]);end
/* Multiplexer 2 */
for(k = 0; k< 32; k = k+1) begin: netMuxBmux_32_1 MuxB(ReadData2[k], ReadRegister2, MuxIn[k]);end
endmodule
4 Mô phỏng dạng sóng sử dụng ModelSim
Kết quả mô phỏng trong khoảng thời gian từ 0 đến 25000ps
Kết quả mô phỏng trong khoảng thời gian từ 25000ps đến 50000ps