Tải bản đầy đủ (.docx) (24 trang)

Thiết kế và thực thi bộ cộng 32 bits có nhớ (có code bên dưới)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.27 MB, 24 trang )

ĐỒ ÁN 3

Thiết kế và thực thi bộ cộng 32 bits
(có nhớ).

1


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ..........................................................................................VII
DANH MỤC CÁC TỪ VIẾT TẮT................................................................................VIII
CHƯƠNG 1. CƠ SỞ LÝ LUẬN..........................................................................................1
1.1

GIỚI THIỆU..................................................................................................................1

1.1.1

Lịch sử.................................................................................................................1

1.1.2

Lý thuyết về Verilog.............................................................................................2

CHƯƠNG 2. THIẾT KẾ MẠCH........................................................................................3
2.1

SƠ ĐỒ MẠCH...............................................................................................................3

2.2


NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH VÀ CHỨC NĂNG................................................4

CHƯƠNG 3. KẾT QUẢ MÔ PHỎNG...............................................................................7
3.1

MÔ HÌNH MÔ PHỎNG..................................................................................................7

CHƯƠNG 4. NHẬN XÉT..................................................................................................13
4.1

NHẬN XÉT................................................................................................................13

CHƯƠNG 5. KẾT LUẬN..................................................................................................14
5.1

KẾT LUẬN.................................................................................................................14

5.2

HƯỚNG PHÁT TRIỂN.................................................................................................14

TÀI LIỆU THAM KHẢO..................................................................................................15
PHỤ LỤC

16

2


DANH MỤC CÁC HÌNH V


3


HÌNH 2 - 1: MÔ TẢ RTL VIEWER CỦA MẠCH CỘNG 1 BIT........................6
HÌNH 2 - 2: MÔ TẢ RTL VIEWER CỦA MẠCH CỘNG 32 BITS....................7
HÌNH 2 - 3: BẢNG CHÂN TRỊ [2]........................................................................8
HÌNH 2 - 4: KẾT QUẢ NGÕ RA CỦA MẠCH CỘNG 1 BIT [1].......................8
HÌNH 2 - 5: MẠCH CỘNG 32 BIT GHÉP TẦNG TỪ BỘ CỘNG 1 BIT[2]......9
HÌNH 3 - 1: MÔ TẢ SÓNG CỦA BỘ CỘNG 1 BIT...........................................10
HÌNH 3 - 2: TIMING SIMULATION CỦA BỘ CỘNG 1 BIT...........................11
HÌNH 3 - 3: SÓNG MÔ PHỎNG BỘ CỘNG 32 BIT.........................................11
HÌNH 3 - 5: ĐÁNH GIÁ TÀI NGUYÊN..............................................................12
HÌNH 3 - 6: THỰC THI TRÊN KIT DE2 - 115..................................................13
HÌNH 3 - 7: THỰC THI TRÊN KIT DE2 – 115..................................................14

4


DANH MỤC CÁC TỪ VIẾT TẮT

5


ĐỒ ÁN 3
Trang 1/19

1

CƠ SỞ LÝ LUẬN

1.1 Giới thiệu
Verilog là ngôn ngữ mô tả phần cứng (Hardware Description Language) được sử
dụng trong thiết kế các hệ thống số, các mạch tích hợp… Cùng với các ngôn ngữ
VHDL. Verilog là một trong hai ngôn ngữ mô tả phần cứng khá phổ biến nhất hiện
nay.
Verilog cũng có các đặc điểm như tính độc lập về công nghệ, dễ dàng trong việc
thiết kế và debug, cũng như tính đơn giản so với các thiết kế bằng sơ đồ khối
(schematics), đặc biệt là trong việc thiết kế các hệ thống số phức tạp.
Ngôn ngữ mô tả phần cứng (HDLs) là một loại ngôn ngữ dùng để thiết kế phần
cứng thông qua phát biểu mô tả bằng lời (chữ viết).
Có 2 ngôn ngữ thường dùng để thiết kế là: VHDL và Verilog HDL.
Với mong muốn học tập và tìm hiểu về ngôn ngữ Verilog HDL em chọn đề tài để
thực hiện là “Thiết kế và thực thi bộ cộng 32 bits (có nhớ) bằng ngôn ngữ Verilog,
thực hiện trên chip FPGA cyclone IV, kit DE2 của Altera thông qua JTAG USB.
1.1.1 Lịch sử
Verilog lần đầu được giới thiệu vào năm 1984 bởi công ty Gateway Design
Automatic. Verilog không được chuẩn hóa và điều được chỉnh sửa ở hầu hết các

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 2/19

phiên bản sau từ năm 1984 đến 1990. Năm 1995 Verilog chính thức được chuẩn hóa
bởi tôt chức IEEE.
Nhiều người cho rằng Verilog dễ học và sử dụng hơn VHDL nhờ các cú pháp khá
giống với ngôn ngữ C (ngôn ngôn ngữ thường được học nhiều nhất). Tuy cả hai
ngôn ngữ Verilog và VHDL đều được ra đời tại Mỹ nhưng Verilog được dùng phổ
biến hơn tại đây.

Verilog dùng để xây dựng các ứng dụng trên nền tảng công nghệ như FPGA,
CPLDs,… Code Verilog dùng để mô tả các hệ thống số được xây dựng trong các
thiết bị lập trình được của các hãng như: Xilinx, Altera, Amtel,…
1.1.2 Lý thuyết về Verilog
 Quy định sử dụng
Có thể dùng {[A-Z], [0-9], _, $, …}
Không được bắt đầu $ hay [0-9].
Ví dụ:
-

Trường hợp đúng: myidentifier, m_y_identifier, _myidentifier.

-

Trường hợp sai: 4my_identifier, $my_identifier.
Phân biệt chữ hoa và chữ thường.
“myiden khác với Myiden”

 Trích dẫn.
-

// dòng chú thích.

-

/* , */ chú thích nhiều dòng.

 Các giá trị Verilog
 0 => mức logic thấp hay điều kiện sai (false).
 1 => mức logic cao hay điều kiện đúng (true).

 X => mức logic không biết (unknown level).
 Z => mức logic tổng trở cao (hi-Z).

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 3/19

 Số trong Verilog.
< kích cỡ > ’ < hệ số > < giá trị >

No of
bits

Binary

=> b or B

Consecutive chars

Octal

=> o or O

0-f, x, z

Decimal

=> d or D


Hexadecimal => h or H
 8’h ax = 1010xxxx
 12’o 3zx7 = 011zzzxxx111
 Có thể chèn “_” để dễ đọc.
12’b 000_111_010_100
12’b 000111010100
12’o 07_24
 Mở rộng BIT
MS bit = 0, x or z => mở rộng chính nó.
4’b x1 = 4’b xx_x1
MS bit = 1 => mở rộng 0.
4’b 1x = 4’b 00_1x
 Nếu hệ số không có xem như hệ số 10.
15 = <size>’d 15
 Đường nối (nets).
- Xem như các dây phần cứng lấy bởi logic.
- Bằng Z khi không nối.
- Các loại khác nhau của nets.
 Wire
 Wand (wired – AND)
 Wor (wired – OR)

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 4/19

 Tri (tri – state)

Kiểu nối dây “wire” thông dụng thường gặp.
A

Y

B

wire Y;

// khai báo kiểu nối dây Y.

assign Y = A & B; // biểu thức tính.

 Các thanh ghi (Registers).
 Là các biến lưu giá trị.
 Chỉ có 1 loại: reg
reg A, C; // khai báo
// phép gán luôn thực hiện khi bên trong một procedure.
A = 1;
C = A; // C sẽ có giá trị logic 1.
A = 0; // C vẫn là 1.
C = 0; // bây giờ C là 0.
 Giá trị thanh ghi được ghi mới hiện hữu.
 Toán tử logic
 && => AND logic.
 | | => OR logic.
 ! => NOT logic.
 Toán tử trả về 1 trong các giá trị: 0, 1 or X.
 Kết quả là một giá trị: 0, 1 or X.
A = 6;

A && B => 1 && 0 => 0
B = 0;
A | | !B => 1 | | 1 => 1
C = x;
C | | B => x | | 0 => x.
 Toán tử trên bit (bitwise).
 &
=> bitwise AND
 |
=> bitwise OR
 ~
=> bitwise NOT
 ^
=> bitwise XOR
 ~^ hoặc ^~ => bitwise XNOR.
 Các toán tử rút gọn.
 &
=> AND
 |
=> OR
 ^
=> XOR
 ~&
=> NAND
 ~|
=> NOR
 ~^ hoặc ^~ => XNOR.
 Một phép toán nhiều bit suy ra kết quả là một bits.

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)



ĐỒ ÁN 3
Trang 5/19

a = 4’b1001;
…..
c = |a; // c = 1 | 0 | 0 | 1 = 1
 Ví dụ cơ bản: thiết kế cổng NOT bằng ngôn ngữ Verilog.
 Bảng sự thật:
Input Output
B = Not A
A
0
1
1
0
 Code:
Module congnot (A, B); // khai báo, đặt tên phải giống với tên file.
Input wire A;
// khai báo cổng vào kiểu dữ liệu dây ( liệt kê tấc
cả các trường hợp ngõ vào)
Output wire B;

// tương tự như ngõ vào, ngõ ra cũng được khai
báo kiểu dữ liệu wire.
// gán B bằng đảo của A.

Assign B = !A;
Endmodule.


2

THIẾT KẾ MẠCH

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 6/19

2.1 Sơ đồ mạch cộng 1 bit

Hình 2 - 1: Mô tả RTL Viewer của mạch cộng 1 bit

Hình 2 - 2: Mô tả RTL Viewer của mạch cộng 32 bits
Ta nối tiếp từng bộ cộng 1 bit lại với nhau, ngõ ra của bit trước là ngõ vào và cũng
là cờ nhớ của bit tiếp theo (cin) cùng với các ngõ vào a, b ta được kết quả cho ngõ
ra bit tiếp theo đó. Xong cứ thực hiện cộng như vậy cho đến bộ cộng 32 bits.
2.2 Nguyên lý hoạt động và chức năng của mạch

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 7/19

Mạch cộng toàn phần là mạch thực hiện cộng 3 bit nhị phân A, B và (là số dư
của phép toán trước) và cho ra 2 số là tổng S, số dư .


Hình 2 - 3: Bảng chân trị [2]
Vẽ bìa karnaugh, tính toán ra được kết quả từ bảng chân trị trên.

Hình 2 - 4: Kết quả ngõ ra của mạch cộng 1 bit [1]

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 8/19

Kết luận: vậy khi nối 32 bộ cộng 1 bit lại với nhau ta được bộ cộng 32 bit..

Hình 2 - 5: Mạch cộng 32 bit ghép tầng từ bộ cộng 1 bit[2]
Vậy khi với bộ cộng n-bit có cả cờ nhớ, ngõ vào cin và cờ nhớ ngõ ra cout thì có thể
được ghép tầng để tạo ra bộ công cho chuỗi bit dài hơn

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 9/19

3

KẾT QUẢ MÔ PHỎNG

Kết quả mô phỏng bộ cộng 32 bits.
3.1 Hình mô phỏng


Hình 3 - 1: Mô tả sóng của bộ cộng 1 bit
Như hình trên có 3 ngõ vào là: a, b và cin, ngõ ra sum và cout.
Sử dụng số nhị phân.
Khi cho ngõ vào: a=0, b=1, cin=0.
Kết quả ngõ ra là s=1, cout=0
Số 0 mô tả mức thấp, số 1 mức cao.

Đánh giá delay Timing Simulation của bộ cộng 1 bit

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 10/19

Hình 3 - 2: Timing Simulation của bộ cộng 1 bit
Hình 3-2: cho biết delay của s và ngõ ra cout của bộ cộng 1 bit. Delay ngõ ra
cout so với ngõ vào là 3.929 ns, s bị delay nhiều hơn là 6.276. Còn ở hình 3-1 thì
không bị delay.

Hình 3 - 3: Sóng mô phỏng bộ cộng 32 bit

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 11/19

Đánh giá tài nguyên


Hình 3 - 5: Đánh giá tài nguyên

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 12/19

Thực hiện trên Kit DE2 - 115

Hình 3 - 6: Thực thi trên kit DE2-115

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 13/19

Hình 3 - 7: Thực thi trên Kit DE2 – 115

.

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 14/19

4


NHẬN XÉT

4.1 Nhận xét
Ưu điểm: đơn giản dễ hiểu, số nhớ truyền đi tuần tự qua mỗi bit kế tiếp nhau,
mỗi bit của tổng (Sum) phụ thuộc vào số nhớ (cout). Do đó giá trị của mỗi bit được
xác định khi có tín hiệu ngõ vào và cin đã được xác định.
Nhược điểm: số bit càng lớn thì sai số gây ra tỷ lệ cao, do thời gian trễ lớn.
Biện pháp khắc phục: ta có thể sử dụng phương pháp nhớ nhanh (fast carry)
hoặc nhớ nhìn trước (look-ahead carry).

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 15/19

5

KẾT LUẬN

5.1 Kết luận
Đây là đề tài nghiên cứu, thiết kế và thực hiện bộ cộng 32 bit (có nhớ). Người viết
dùng phần mềm quartus II và thực hiện viết bằng ngôn ngữ Verilog, đã viết code
cho bộ cộng 32 bits bằng cách nối tiếp 32 bộ cộng 1 bit lại với nhau ta được kết quả
như mong đợi.
5.2 Hướng phát triển
Đề tài này có thể phát triển thêm lên cộng, trừ hoặc bộ ALU ứng dụng cho các phần
mềm tính toán số.

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)



ĐỒ ÁN 3
Trang 16/19

TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1]
[2]

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 17/19

PHỤ LỤC

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 18/19

Thiết kế và thực thi bộ cộng 32 bits (có nhớ)


ĐỒ ÁN 3
Trang 19/19


Thiết kế và thực thi bộ cộng 32 bits (có nhớ)



×