đồ án thiết kế bộ MIPS 32 từ 32 file thanh ghi sử dụng verilog

21 565 2
đồ án thiết kế bộ MIPS 32 từ 32 file thanh ghi sử dụng verilog

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 LỜI CAM ĐOAN Chúng em xin cam đoan nội dung đồ án chép đồ án cơng trình có từ trước Chữ kí nhóm: Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 MỤC LỤC Tóm tắt yêu cầu Lab1 Phần thiết kế thực Verilog Hình ảnh mơ Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 PHẦN MỞ ĐẦU Lab1: Design a MIPS 32 by 32 Register File Nội dung Đồ án: Thiết kế MIPS 32 từ 32 file ghi sử dụng Verilog 32 file ghi mảng gồm 32 ghi 32-bit khác Tài liệu tham khảo: Computer Organization and Design 4th edition tác giả: Patterson and Hennessy Phương án thực hiện: Nghiên cứu Verilog từ tài liệu sau dựa vào hiểu biết mình, thiết kế, mơ theo u cầu đồ án Dựa số liệu th ực tế, gi ải thích hình ảnh mơ Từ rút kết luận có tính chun mơn sâu, nhằm phát triển hướng đề tài quy mô rộng Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Tóm tắt yêu cầu Lab1 1.1 Yêu cầu chung * Register File gồm 32 ghi, ghi ch ứa 32 bits * Các ghi phải xậy dựng từ DFF * Đặc biệt, ghi Zero ln có ngõ mặc cho giá trị ghi vào * Thiết kế dùng cấu trúc lệnh Structural * Các cổng logic không vượt ngõ vào *Delay 50ps 1.2 Sơ đồ khối - Cấu tạo file ghi bao gồm: + 32 ghi 32 bit, riêng ghi zero ln mang giá tr ị + Có ngõ vào chọn ghi đọc (Read Register1 Read Register2) ngõ liệu tương ứng (Read Data1 Read Data2) đọc file ghi + Có ngõ vào chọn ghi để ghi liệu (Write Register ), ngõ vào cho phép ghi (RegWrite) ngõ vào liệu (Write Data) ghi vào file ghi Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Sơ đồ chi tiết file ghi: 1.3 Cách thực Xây dựng file ghi: Mỗi ghi mảng 32 DFF Ngõ vào D DFF t ương ứng v ới bit đường liệu 32 bit Ngõ Q tương ứng v ới bit Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 đường liệu 32 bit Giá trị ngõ Q giống ngõ vào n ếu giá tr ị cho phép ghi Enable D_FF Tín hiệu cho phép ghi c D_FF đ ược kết nối với tín hiệu cho phép ghi WriteEnable tín hiệu ngõ vào DFF có tín hiệu clock để đồng ghi Tín hi ệu clock tín hi ệu WriteEnable tín hiệu riêng biệt Clock m ột tín hi ệu tu ần hồn ổn định, dùng để điều chỉnh tín hiệu cho phép ghi, đ ảm b ảo trình ghi ghi xác Nội dung thiết kế Từ sơ đồ chi tiết cho thấy, thiết kế file ghi yêu cầu: + 32 ghi cấu tạo từ DFF + giải mã 5:12 điều khiển ghi liệu + Multiplexer 32x32 to 32 2.1 Thiết kế giải mã 5:32 - Yêu cầu khối mạch cần thiết kế xuất tín hiệu điều khiển ghi liệu vào ghi, với đầu vào bits để chọn ghi, với tín hiệu điều khiển ghi RegWrite - Để thiết kế giải mã 5:32, ta xây dựng từ giãi mã 2:4 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 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Kết mô Quartus : 2.1.2 Mạch giải mã 2:4 Sử dụng giải mã 1:2 để xây dựng giải mã 2:4 Code Verilog: module demux1_4(out, sel, in); input in; input [1:0]sel; output [3:0]out; wire [1:0]tmp; 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 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Kết mơ Quartus: 2.1.3 Mạch giải mã 3:8 Sử dụng giải mã 1:2 giải mã 2:4 để xây dựng gi ải mã 3:8 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 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Kết mô Quartus: 2.1.4 Mạch giải mã 5:12 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Code Verilog: Sử dụng giải mã 2:4 giải mã 3:8 để xây dựng gi ải mã 5:32 10 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 module 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], tmp[1]); demux1_8 demux04(out[23:16], sel[2:0], tmp[2]); demux1_8 demux05(out[31:24], sel[2:0], tmp[3]); endmodule Kết mô trênQuartus 2.2 Thiết kế ghi 32 bit: - Theo cấu trúc file ghi ta thiết kế bao gồm 32 ghi, mà ghi gồm 32 bit, bit lại tạo DFF Do ta phải trải qua bước sau: 11 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 + Xây dựng bit từ DFF + Xây dựng ghi 32 bit từ 32 DFF 2.2.1 Xây dựng bit từ DFF: - - Bảng trạng thái: Dn Qn+1 1 Phương trình logic DFF : Qn+1 = Dn Code Verilog thực DFF module D_FF(q,d,reset,en,clk); output q; input d,reset,clk,en; reg q; always @(posedge clk or posedge reset) if (reset) q=0; else q=d; endmodule 2.2.2 Xây dựng ghi 32 bit: - Ở ta thực tạo bit ghi, cần dùng module tạo 32 đối tượng ghép lại ta ghi 32 bits: 2.2.3 Xây dựng ghi zero: - Thanh ghi zero ghi luôn đọc giá trị không cho ghi giá trị lên ghi Code Verilog : module ZeroReg(q, d, reset, clk); input clk, reset; 12 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 input [31:0]d; output [31:0]q; wire rst; wire [31:0]data; assign rst = 1'b1; assign data = 32'h00; genvar i; generate for(i = 0; i < 32; i = i + 1) begin: reg_net2 D_FF DFFZ(q[i], data[i], rst, clk); end endgenerate endmodule Kết mô Quartus: 13 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 2.2.4 Xây dựng 31 ghi lại Code Verilog: module NormalReg(q, d, reset, clk); input [31:0]d; input clk, reset; output [31:0]q; genvar i; generate for(i = 0; i < 32; i = i + 1) begin: reg_net D_FF D_FFN(q[i], d[i], reset, clk); end endgenerate endmodule Kết mô Quartus 2.3 Thiết kế Multiplexor 32x32 to 32 - Bộ Multiplexor 32x32 to 3232 ngõ liệu đầu vào, ngõ liệu có 14 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 32 bit Dữ liệu ngõ Read data có 32 bit m ột số ngõ vào bit Read Register định ngõ liệu đầu vào truyền đến đầu - Để thiết kế Multiplexor 32x32 to 32 đầu tiền phải thiết kế Multiplexor 32 to 2.3.1 Bộ Multiplexor to1 Code Verilog module mux_2_1(y, sel, x); input sel; input [1:0]x; output y; 15 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 // For timming problem buf #50 buf0(bsel, sel); // Implementation not #50 not0(nsel, sel); and #50 and0(b0, nsel, x[0]); and #50 and1(b1, bsel, x[1]); or #50 or0 (y, b0, b1); endmodule Kết mô Quartus : 2.3.2 Bộ Multiplexor to Sử dụng Multiplexor to để xây dựng Multiplexor to Code Verilog module mux_4_1(y, sel, x); input [3:0]x; input [1:0]sel; output y; wire [1:0]b; 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 mô Quartus 16 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 2.3.3 Bộ Multiplexor to Sử dụng Multiplexor to Multiplexor to để xây dựng Multiplexor to Code Verilog module mux_8_1(y, sel, x); input [7:0]x; input [2:0]sel; output y; wire [1:0]b; 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 mô Quartus 2.3.4 Bộ Multiplexor 32 to 17 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Sử dụng Muxtiplexor to Multiplexor to đẻ xây dựng Multiplexor 32 to Code Verilog module mux_32_1(y, sel, x); input [31:0]x; input [4:0]sel; output y; wire [3:0]b; mux_8_1 mux80(b[0], sel[2:0], x[7:0]); 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 mô Quartus Xây dựng module Register file hồn chỉnh: 18 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 Sử dụng module xây dựng để thiết kế tập ghi hoàn chỉnh Code Verilog module regfile( ReadData1, ReadData2, WriteData, ReadRegister1, ReadRegister2, WriteRegister, RegWrite, clk); input [31:0]WriteData; input [4:0] ReadRegister1, ReadRegister2, WriteRegister; input RegWrite, clk; output [31:0] ReadData1, ReadData2; wire reset; wire [31:0]WriteEn, clock; wire [31:0]RegOut[31:0]; wire [31:0]MuxIn[31:0]; // Default assign reset = 1'b0; genvar i, k; generate for(k = 1; k< 32; k = k+1) begin: netClock and #50 GateEnable(clock[k], clk, WriteEn[k]); end endgenerate /* Block 1: 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: netNormalReg NormalReg RegisterN(RegOut[k], WriteData, reset, clock[k]); end endgenerate /* Block 3: Multiplexer 32x32 */ generate for(i = 0; i< 32; i = i+1) begin: netMux32 19 Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 for(k = 0; k< 32; k = k+1) begin: net3 assign MuxIn[i][k] = RegOut[k][i]; end end /* Multiplexer */ for(k = 0; k< 32; k = k+1) begin: netMuxA mux_32_1 MuxA(ReadData1[k], ReadRegister1, MuxIn[k]); end /* Multiplexer */ for(k = 0; k< 32; k = k+1) begin: netMuxB mux_32_1 MuxB(ReadData2[k], ReadRegister2, MuxIn[k]); end endgenerate endmodule Mơ dạng sóng sử dụng ModelSim Kết mô khoảng thời gian từ đến 25000ps Kết mô khoảng thời gian từ 25000ps đến 50000ps 20 Báo cáo Đồ án mơn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 21 ... Từ sơ đồ chi tiết cho thấy, thiết kế file ghi yêu cầu: + 32 ghi cấu tạo từ DFF + giải mã 5:12 điều khiển ghi liệu + Multiplexer 32x32 to 32 2.1 Thiết kế giải mã 5 :32 - Yêu cầu khối mạch cần thiết. .. thiết kế thực Verilog Hình ảnh mơ Báo cáo Đồ án môn học: Cấu trúc máy tính Nhóm – Nhóm học phần 40 PHẦN MỞ ĐẦU Lab1: Design a MIPS 32 by 32 Register File Nội dung Đồ án: Thiết kế MIPS 32 từ 32. .. demux05(out[31:24], sel[2:0], tmp[3]); endmodule Kết mô trênQuartus 2.2 Thiết kế ghi 32 bit: - Theo cấu trúc file ghi ta thiết kế bao gồm 32 ghi, mà ghi gồm 32 bit, bit lại tạo DFF Do ta phải trải qua

Ngày đăng: 22/12/2017, 08:33

Tài liệu cùng người dùng

Tài liệu liên quan