1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code)

31 1K 5

Đ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 31
Dung lượng 338,35 KB

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

Nội dung

THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code) THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code) THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code) THIẾT kế ALU 32BIT THỰC HIỆN các LỆNH AND, OR, XOR, NOR, ADD, SUB (có code)

Trang 2

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

CHƯƠNG 1 CƠ SỞ LÝ LUẬN 1

1.1 GIỚI THIỆU VỀ VERILOG 1

1.1.1 Quá trình phát triển 1

1.1.2 Những đặc tính của Verilog 2

1.1.3 Ngôn ngữ Verilog 2

1.2 CÁC CỔNG LOGIC CƠ BẢN 3

1.2.1 Cổng AND (toán tử “và”) 5

1.2.2 Cổng OR (toán tử + “hoặc”) 6

1.2.3 Cổng NOR 7

1.2.4 Cổng X-OR 7

1.3 ARITHMETIC LOGIC UNIT (ALU) 8

1.4 CENTRAL PROCESSING UNIT (CPU) 9

1.4.1 Bộ điều khiển (CU-Control Unit) 9

1.4.2 Bộ số học – Logic 10

1.4.3 Tốc độ 10

1.5 PHẦN MỀM QUARTUS II 10

CHƯƠNG 2 THIẾT KẾ 12

2.1 DẪN NHẬP THIẾT KẾ 12

2.2 TESTBENCH TRONG VERILOG 12

2.3 MÔ PHỎNG 12

2.4 QUÁ TRÌNH THIẾT KẾ 13

2.4.1 Sơ đồ khối 13

2.4.2 Lưu đồ giải thuật 14

2.5 NGUYÊN LÝ HOẠT ĐỘNG 15

Trang 3

3.4 ALU 4 BIT 20

3.5 ALU 8 BIT 20

CHƯƠNG 4 KẾT LUẬN 21

CHƯƠNG 5 TÀI LIỆU THAM KHẢO 22

PHỤ LỤC 23

Trang 4

HÌNH 1-2: GIAO DIỆN PHẦN MỀN QUARTUS II 9.0 20

HÌNH 2-1: BỘ CỘNG ĐẦY ĐỦ 24

HÌNH 2-2: BỘ ALU 1BIT 24

HÌNH 3-1: SƠ ĐỒ NGUYÊN LÝ CỦA BỘ CỘNG 1 BIT 27

HÌNH 3-2: SƠ ĐỒ NGUYÊN LÝ BỘ MUX 5-1 28

HÌNH 3-3: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 1 BIT 28

HÌNH 3-4: SƠ ĐỒ NGUYÊN LÝ ALU 4 BIT 29

HÌNH 3-5: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 8 BIT 29

HÌNH 3-6: SƠ ĐỒ NGUYÊN LÝ CỦA ALU 32 BIT 29

Trang 5

BẢNG 1-2: BẢNG SỰ THẬT CỔNG AND 14

BẢNG 1-3: BẢNG SỰ THẬT CỔNG OR 15

BẢNG 1-4: BẢNG SỰ THẬT CỔNG NOR 16

BẢNG 1-5: BẢNG SỰ THẬT CỔNG X-OR 17

BẢNG 3-1: BẢNG SỰ THẬT CỦA BỘ CỘNG 1 BIT 26

BẢNG 3-2: BẢNG SỰ THẬT CỦA MUX 5-1 27

Trang 7

CHƯƠNG 1 CƠ SỞ LÝ LUẬN 1.1 Giới thiệu về Verilog

Khi kích thước và độ phức tạp của hệ thống thiết kế ngày một tăng cao, nhiềucông cụ hỗ trợ thiết kế trên máy tính được sử dụng rộng rãi vào quá trình thiết kế phầncứng Vào thời kì đầu, những công cụ mô phỏng và tạo ra phần cứng đã giúp đưa raphương pháp thiết kế, phân tích, kiểm tra, tổng hợp và tự động tọa ra phần cứng mộtcách phức tạp Sự phát triển không ngừng của những công cụ thiết kế một cách tự động

là do sự phát triển của những ngôn ngữ mô tả phần cứng HDLs và các phương phápthiết kế hệ thống số dựa trên ngôn ngữ này Hiện nay người ta vẫn đang tiếp tục nghiêncứu những ngôn ngữ mô tả phần cứng tốt hơn và một trong những ngôn ngữ được sửdụng rộng rãi để mô tả phần cứng đó là ngôn ngữ Verilog HDL Do sự phổ biến trongngành công nghiệp thiết kế số, Verilog đã trở thành một kiến thức đòi hỏi phải biết vớinhững sinh viên cũng như kĩ sư học tập và làm việc trong lĩnh vực phần cứng máy tính

1.1.1 Quá trình phát triển

Được ra đời vào đầu năm 1984 bởi Gateway Design Automation Ban đầu, ngônngữ được dùng như một công cụ để mô phỏng và kiểm tra Sau thời gian ngôn ngữ nàyđược chấp nhận bởi ngành công nghiệp điện tử, vào năm 1987 một công cụ tổng hợp

đã được xây dựng và phát triển dựa trên ngôn ngữ này

Cũng trong năm 1987, VHDL đã trở thành một chuẩn ngôn ngữ môt tả phầncứng của IEEE Năm 1993, những nổ lực nhằm chuẩn hóa ngôn ngữ Verilog được bắtđầu như trở thành chuẩn: IEEE, IEEE Std 1364-1995 Với những công cụ tổng hợp,công cụ mô phỏng, công cụ thiết kế, công cụ phân tích thời gian dựa trên Verilog đã cósẳn, chuẩn Verilog IEEE này nhanh chóng được sự chấp nhần sâu rộng trong cộngđồng thiết kế điện tử

Trang 8

Một phiên bản mới vào năm 2001 được chấp nhận bởi IEEE được dùng bởi hầuhết người sử dụng và người phát triển công cụ Những điểm mới đó là nó cho phép bênngoài có khả năng đọc và ghi dữ liệu, quản lý thư viện, xây dựng cấu hình thiết kế, hỗtrợ những cấu trúc có mức độ trừu tượng cao hơn, cấu trúc mô tả sự lặp lại Các quátrình cải tiến chuẩn này vẫn đang được tiếp tục phát triển với sự tài trợ của IEEE.

Trong Verilog, một linh kiện phần cứng được mô tả bằng một cấu trúc ngôn ngữ

“khai báo module” Mô tả một module sẽ mô tả danh sách những ngõ vào và ngõ racủa linh kiện cũng như thanh ghi và hệ thống bus trong linh kiện Bên trong mộtmodule, những phép gán đồng thời và những khối quy trình có thể được dùng đễ mô tảphần cứng

Nhiều mô dule có thể được gọi một cách phân cấp để hình thành những cấu trúc

mô tả phần cứng khác nhau Những phần tử con của việc mô tả thiết kế phân cấp có thể

là những module, linh kiện cơ bản hoặc các linh kiện do người dùng tự định nghĩa Để

mô phỏng cho thiết kế, những phần tử con trong cấu trúc phân cấp này nên được tổnghợp một cách riêng lẻ

Verilog thường được dùng để mô tả thiết kế ở bốn dạng:

Trang 9

- Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for, while, ).

- Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean)

- Các cổng kết nối (cổng: or, and, not,…)

- Chuyển mạch (BJT, MOSTFET)

Cấu trúc chương trình dùng ngôn ngữ Verilog:

//khai báo module

Module tên chương trình (tên biến I/O); //tên chương trình trùng tên file.v

Input [msb:lsb] biến;

Output [msb:lsb] biến;

Reg [msb:lsb] biến reg;

Wire [msb:lsb] biến wire;

Delay: nếu delay không được chỉ rõ thì khi đó cổng không có trì hoãn truyền tải,nếu có hai delay được chỉ định, thì trước tiên là mô tả trì hoãn lên, sau đó là trì hoãnxuống nếu chỉ có một delay được chỉ định, thì khi đó trì hoãn lên xuống là như nhau.Delay được bỏ qua khi tổng hợp Các tham số cho các cổng cơ bản phải được địnhnghĩa trước như delay

Biểu diễn trạng thái Logic 1 và 0 người ta thường gán:

Trang 10

- Logic dương: điện thế cao -> Logic 1; điện thế thấp -> Logic 0 Thực tế, mứcLogic 1 và mức Logic 0 tương ứng với một khoảng điện thế được xác định, cómột khoảng chuyển tiếp giữa mức cao và mức thấp được gọi là khoảng khôngxác định (ngưỡng logic) Khoảng này tùy thuộc vào họ IC sử dụng và được cungcấp trong bảng thông số kỹ thuật.

- Logic âm ngược lại

Bảng 1-1: Giản đồ điện thế các mức Logic học TTL.

5V 2.4V

0.7V 0V

Mức 1

Không xác định

Mức 0

Trang 11

0001Note: Ngõ ra cổng AND ở mức cao khi tất cả ngõ vào ở mức cao

Trang 12

0111

Note: Ngõ ra cổng OR ở mức thấp khi tất cả ngõ vào ở mức thấp

Trang 13

1000Note: Ngõ ra ở mức cao khi tất cả ngõ vào ở mức thấp

Trang 14

Bảng 1-5: Bảng sự thật cổng X-OR.

0011

0101

0110Note: Khi có một ngõ vào nối lên mức cao thì cổng X-OR = Cổng NOT Khi có mộtngõ vào nối xuống mức thấp thì cổng X-OR = Cổng ĐỆM

1.3 Arithmetic Logic Unit (ALU)

Chức năng: Thực hiện các phép toán số học và Logic sau đó trả lại kết quả chocác thanh ghi hoặc bộ nhớ

Trong CPU, một bộ số học và Logic là một mạch điện tử thực hiện các phéptính số học và Logic cơ bản ALU là một phần cơ bản của CPU của một máy tính, bộ vi

xử lý chứa rất nhiều và phức tạp các ALU

Lý thuyết về ALU được nhà toán học John Von Neumann phát minh vào năm

1945, khi viết một báo cáo cho EDVAC

Hình 1-1:Ký hiệu giản đồ của ALU.

Năm 1946, John Von Neumann nghiên cứu cùng các sinh viên để thiết kế mộtchiếc máy tính IAS, và nó đã trở thành tiền than cho nhiều máy tính thế hệ sau.Neumann tin rằng một ALU cần thiết cho một máy tính bởi vì máy tính chỉ tính cácphép tính bao gồm: cộng, trừ, nhân và chia

Trang 15

Thông thường, một phép toán được thực hiện bởi một hay nhiều ALU MộtALU load dữ liệu từ thanh ghi, một điều khiển ALU sẽ tính toán rồi lưu kết quả vàomột thanh ghi kết quả Một hệ thống khác sẽ di chuyển dữ liệu giữa các thanh ghi vào

bộ nhớ

Phần lớn các ALU có thể thực hiện các phép toán sau:

- Số nguyên (cộng, trừ, nhân, chia)

- Bit Logic (AND, OR, NOT, XOR, )

- Dịch bit

Một kỹ sư hoặc một sinh viên có thể thiết kế một ALU để tính toán, tuy nhiênvấn đề ở chỗ phép toán các phức tạp, ALU càng đắt, bộ xử lí càng lớn và càng tốnnhiều năng lượng, vân vân Bởi vậy, các kỹ sư thường xuyên phải tính toán sao cho cânbằng, cung cấp cho bộ xử lí một ALU đủ mạnh để nó chạy nhanh, nhưng không quáphức tạp Đó được gọi là software emulation

1.4 Central Processing Unit (CPU)

Được định nghĩa là bộ xữ lý trung tâm CPU có thể được xem như não bộ mộttrong những phần tử cốt lõi quan trọng nhất của máy tính Nhiệm vụ chính là xữ lý cácchương trình vi tính và dữ liệu CPU có nhiều kiểu dáng khác nhau, ở hình thức đơngiản nhất, CPU là một con chip với vài chục chân Phức tạp hơn, CPU được ráp sẳntron các bộ vi mạch với hàng tram con chip khác CPU là một mạch xữ lý dữ liệutransistor trên một bảng mạch nhỏ Bộ xữ lý trung tâm bao gồm: bộ tính toán và bộđiều khiển

1.4.1 Bộ điều khiển (CU-Control Unit)

Là các vi xữ lý có nhiệm vụ biên dịch các lệnh của chương trình và điều khiểnhoạt động xử lý, được điều tiết chính xác bởi xung nhịp đồng hồ hệ thống Mạch xungnhip dùng để đồng bộ các thao tác xử lý trong và ngoài CPU theo các khoảng thời giankhông đổi Khoảng thời gian chờ giữa 2 xung được gọi là chu kỳ xung nhịp Tốc độ

Trang 16

xung nhịp hệ thống tạo ra các xung tính hiệu chuẩn thời gian gọi là tốc độ xung nhịp,tốc độ đồng hồ tính bằng triệu đơn vị mỗi giây-Mhz Thanh ghi là phần tử nhớ tạmtrong bộ vi xử lý dùng lưu dữ liệu và địa chỉ nhớ có trong máy tính khi đang thực hiệncác tác vụ.

1.4.2 Bộ số học – Logic

Arthmetic Logic Unit (ALU) có chức năng thực hiện các lệnh của bộ điều khiển

và xử lý tín hiệu Theo tên gọi ALU dùng để thực hiện các phép tính số học (cộng, trừ,nhân, chia) hay các phép tính Logic (AND, OR, …)

1.5 Phần mềm Quartus II

Quartus II là công cụ phần mềm được phát triển bởi hang Altera, cung cấp môitrường thiết kết toàn diện cho các thiết kế SOPC (system on a programmable chip).Đây là phần mềm tích hợp đầy đủ các công cụ để phục vụ thiết kết Logic với các linhkiện Logic PLD, FPGA của Altera, gồm các dòng Apex, Cyclone, Flex, Max,….Quartus II cung cấp các khả năng thiết kế sau:

Trang 17

- Môi trường thiết kế gồm các: sơ đồ khối, bản vẻ, công cụ soạn thảo các ngônngữ như: AHDL, VHDL và Verilog HDL.

- Thiết kế Logic, tổng hợp Logic

- Mô phỏng chức năng và thời gian

- Phân tích thời gian, phân tích Logic nhúng

- Cho phép xuất, tạo và kết nối các file nguồn để tạo ra các file chương trình lớn

- Tự động định vị lỗi, khả năng lập trình và nhận diện linh kiện

Hình 1-2: Giao diện phần mền Quartus II 9.0.

Quartus II còn cho phép làm việc với nhiều file ở cùng một thời điểm, soạn thảofile thiết kế trong khi vẫn có thể chạy mô phỏng hay biên dịch các dự án khác Công cụbiên dịch cung cấp quy trình thiết kế mạnh, cho phép tùy biến để đạt được thiết kế tối

ưu trong dự án Công cụ định vị lỗi tự đông và các cảnh báo giúp việc phát hiện và sửalỗi trở nên đơn giản hơn

Trang 18

CHƯƠNG 2 THIẾT KẾ 2.1 Dẫn nhập thiết kế

Bước đầu tiên trong thiết kế hệ thống số là bước dẫn nhập thiết kế Trong bướcnày, thiết kế được mô tả bằng Verilog theo phong cách phân cấp từ cao xuống thấp.một thiết kế hoàn chỉnh có thể bao gồm nhiều linh kiện ở mức cổng hoặc transistor.Những module phần cứng có chức năng phức tạp hơn được mô tả ở mức độ hành vihoặc những linh kiện được liệt kê bởi cấu trúc bus

Những phát biểu gọi sử dụng khối Verilog đã được thiết kế sẳn được dùng chonhững linh kiện với mức thấp trong một thiết kế ở mức độ cấp cao hơn Thay vì mô tả

ở mức độ hành vi, bus hoặc chức năng của môt hệ thống, chúng ta có thể mô tả một hệthống bằng Verilog bằng cách kết nối những linh kiện ở mức độ thấp hơn Những linhkiện này có thể nhỏ nhu là transistor hay cổng Logic, hoặc có thể lớn hơn như một bộ

vi xử lý hoàn chỉnh

2.2 Testbench trong Verilog

Một hệ thống được thiết kế dùng Verilog phải được mô phỏng và kiểm tra xemthiết kế đã đúng chức năng hay chưa trước khi tạo ra phần cứng trong quá trình chạy

mô phỏng này, những lỗi thiết kế và sự không tương thích giữa các linh kiện dungtrong thiết kế có thể được phát hiện Chạy mô phỏng một thiết kế đòi hỏi việc tạo ramột dữ liệu ngõ vào để kiểm tra và quá trình quan sát kết quả sau khi chạy mô phỏng,

dữ liệu dùng để kiểm tra này được gọi là testbench

2.3 Mô phỏng

Chạy mô phỏng nằm trong việc đánh giá thiết kế được thực hiên trước khi thiết

kế được tổng hợp Bước chạy mô phỏng được hiểu như mô phỏng ở mức độ hành vi,RTL hay tiền tổng hợp Ở mức độ RTL, một thiết kế bao gồm xung thời gian nhưng

Trang 19

không bao gồm trì hoãn thời gian trên cổng và dây kết nối Thời gian chạy mô phỏng ởmức độ RTL sẽ chính xác theo tín hiệu xung clock, không quan tâm đến vấn đề khácnhư: nguy hiểm tìm ẩn khiến thiết bị lỗi, vi phạm về thời gian, hold giữa những tín hiệungõ vào và những vấn đề liên quan đến định thời khác Ưu điểm của việc mô phỏngnày là tốc độ chạy mô phỏng nhanh so với chạy mô phỏng ở mức cổng hoặc mứctransistor.

Trang 20

2.4.2 Lưu đồ giải thuật

Mô phỏng chức năng

sai sai

đúng

đúng

Lập trình Tạo layout để chế tạo chip

Đúng/Sai

Đúng/Sai

Mô phỏng Kiểm tra chức năng Nạp lên kit Tổng hợp Thiết kế đầu vào

Trang 21

2.5 Nguyên lý hoạt động

Mục tiêu đầu tiên là thiết kế ALU 32-bit có thực hiện phép toán AND, OR, XOR, NOR, ADD, SUB Ta sẽ bắt đầu với bộ cộng đầy đủ (full adder) như hình bên dưới

Hình 2-1: Bộ cộng đầy đủ.

Để có thể lựa chọn kết quả cho đúng cho các phép toán, ta đưa ngõ ra các mạch đến MUX và tín hiệu được chọn lựa được trích từ mã lệnh của lệnh hiện tại (ADD, AND, OR, XOR, NOR) Ta được khối ALU dùng tính cho 1 bit

Hình 2-2: Bộ ALU 1BIT.

Trang 22

Về phần ý nghĩa của các tên tín hiệu thì như sau:

A: toán hạng 1

B: toán hạng 2

Cin: giá trị của cờ nhớ vào (Carry In)

Cout: giá trị của cờ nhớ ra (Carry Out)

Result: kết quả sau khi tính toán

ALU có thể hỗ trợ phép trừ ý tưởng để giải quyết là thực hiện cộng với bù 2

• Để trừ gán B-invert và Cin giá trị 1

• Để thực hiện cộng thì cho ADD/SUB giá trị 0

• Để AND, OR, XOR, NOR thì gán ADD/SUB giá trị 0 còn Cin thì không cần quan tâm

Như vậy ta đã hoàn tất ALU 32-bit có hỗ trợ ADD, SUB, AND, OR, XOR và NOR

Trang 23

CHƯƠNG 3 KẾT QUẢ MÔ PHỎNG 3.1 Bộ cộng

Trang 24

Hình 3-1: Sơ đồ nguyên lý của bộ cộng 1 BIT.

Trang 25

Hình 3-2: Sơ đồ nguyên lý bộ MUX 5-1.

3.3 ALU 1 BIT

Hình 3-3: Sơ đồ nguyên lý của ALU 1 BIT.

Trang 26

3.4 ALU 4 BIT

a b cin as op[2 0]

s co

a b cin as op[2 0]

s co

a b cin as op[2 0]

s co

a b cin as op[2 0]

s co

Trang 27

3.6 ALU 32 BIT

ci as a[7 0]

b[7 0]

op[2 0]

co (GND) s[7 0]

ci as a[7 0]

op[2 0]

co (GND) s[7 0]

ci as a[7 0]

op[2 0]

co (GND) s[7 0]

ci as a[7 0]

op[2 0]

co (GND) s[7 0]

Hình 3-6: Sơ đồ nguyên lý của ALU 32 BIT.

CHƯƠNG 4 KẾT LUẬN

Đề tài “Thiết kế ALU 32-bit thực hiên các lệnh AND, OR, XOR, NOR, ADD,SUB” đã thực hiện đúng theo yêu cầu đề ra, điều hạn chế là chưa cải thiện được sự tối

ưu của code

Thông qua việc thực hiện đề tài để bồi dưỡng kiến thức khoa học và kỹ thuậtgiúp khả năng thiết kế, cải tiến trang bị thông tin đáp ứng được yêu cầu ngày càng hiệnđại của trang bị kỹ thuật, từng bước tiếp cận công nghệ tiên tiến, khoa học hiện đại củathế giới Nâng cao trình độ chuyên môn nghiệp vụ, khả năng nghiên cứu khoa học

Tuy nhiên do điều kiện thời gian và khả năng còn nhiều hạn chế nên đề tài chưathể hoàn thiện Còn nhiều khiếm khuyết, rất mong được sự quan tâm, góp ý của cácthầy và các bạn

Hướng phát triển đề tài: có thể thêm chức năng cờ báo bằng 0 (Zero flag), hỗ trợthêm các lệnh dịch trái và dịch phải, thiết kế CPU

Trang 28

CHƯƠNG 5 TÀI LIỆU THAM KHẢO

[1] IEEE Standard for Verilog Hardware Description Language, 2006

[2] Verilog Digital System Design, Second Edition, McGraw-Hill

[3] The Complete Verilog Book, Vivek Sagdeo, Sun Micro System, Inc.

[4] TS Vũ Đức Lung, ThS Lâm Đức Khải, Ks Phan Đình Duy (2012), Giáo trình ngôn ngữ mô tả phần cứng Verilog, Trường đại học Công Nghệ Thông Tin, Đại học quốc gia TP.HCM.

Trang 30

Code mô phỏng khối ALU 8BIT:

module ALU8 (a,b,ci,as,op,s,co);

Trang 31

p2 (a[7:4],b[7:4],c8,as,op,s[7:4],co);

endmodule

Code mô phỏng khối ALU 32BIT:

module ALU32 (a,b,ci,as,op,s,co);

Ngày đăng: 21/01/2018, 20:25

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