1. Trang chủ
  2. » Cao đẳng - Đại học

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

21 568 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 921,1 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ự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 1

LỜ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 2

MỤ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 3

PHẦ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 4

1 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 5

Sơ đồ 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 7

K 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 8

K 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 9

K 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 10

Code 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 11

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],

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 13

D_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 14

2.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 15

ngõ 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 16

and #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 17

2.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 18

2.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 19

Sử 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 20

for(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

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w