Nghiên cứu Khoa học

Xây dựng bộ ALU 4-bit trên Board DE2-115

  • 13/10/2023
  • Nghiên cứu Khoa học

1. MỤC TIÊU

Tìm hiểu mô hình thiết kế Top-Down, có thể hoạt động, linh động chỉnh sửa lỗi và phát triển ở các ứng dụng tính toán nhiều hơn trong môi trường thực tế.

Thiết kế và thực hiện chức năng tính toán Cộng, Trừ, Nhân và Chia số nguyên (N) trên công nghệ FPGA (Board mạch DE2-115).

2. THIẾT KẾ CORE ALU 4-BIT

Sơ đồ khối:

Quá trình thiết kế được xem xét ở mức độ tổng thể như xem xét sơ đồ khối chức năng, độ dài dữ liệu vào ra. Sau đó sẽ Module hóa các khối chức năng dựa vào kỹ thuật chuyển đổi trạng thái, dữ liệu của các khối chức năng đó. Quy trình thiết kế cho bộ ALU như sau:

undefinedundefined

Hình 1: Sơ đồ khối Core ALU 4-bit

Từ sơ đồ khối tổng quát hình 2.4, bảng 2.1 mô tả cụ thể chức năng từng tín hiệu đầu vào, đầu ra của ALU 4-bits core. Độ rộng của từng tín hiệu tính theo đơn vị bit.

Bảng 2.1 Mô tả các đường tín hiệu đầu vào/ra

Tín hiệu                  

Độ rộng (bit)

  Mô tả

Tín hiệu hệ thống

Clk

1

 Xung clock đồng bộ hệ thống

Rst

1

  Khởi động lại hệ thống

Các dữ liệu đầu vào

 Load

 

 Điều khiển Core thực hiện phép toán ALU  

 ALU

 3

 Phép toán ALU:

   + Phép cộng: ALU = 1

   + Phép trừ: ALU = 2

   + Phép nhân: ALU = 3

   + Phép chia: ALU = 4

 A

 4

 Giá trị đầu vào A

 B

 4

 Giá trị đầu vào B

 SigA

 1

 Bit dấu “-“ của đầu vào A

 SigB

 1

 Bit dấu “-“ của đầu vào B

Các dữ liệu đầu ra

Led1

7

 Kết quả phép tính ALU – hàng đơn vị

Led2

7

 Kết quả phép tính ALU – hàng chục

Led3

7

 Kết quả phép tính ALU – hàng trăm

Led4

7

 Kết quả phép tính ALU – bít dấu “-“

Thiết kế FSM ALU-4bit:

Chương trình bắt đầu khi có tín hiệu Rst bằng 0. Các bước thực thi như sau:

Bước 1:  Chờ nhận các giá trị cho A, B bằng cách gạt các switchs (mã nhị phân).

Bước 2:  Lựa chọn phép toán thực thi (cộng, trừ, nhân, chia) qua tín hiệu ALU để tính toán.

Bước 3:  Xác nhậnvàđiều khiển switch Load để đưa dữ liệu vào.

Bước 4:  Reset để xóa các Led về 0 (nếu cần).

Chương trình gồm 2 module chính:

     - Tính toán.

     - Xuất kết quả ra led 7 đoạn.

Chương trình gồm có cộng, trừ, nhân, chia số nguyên:   

if(ALU == 1)begin  --------------- PHÉP CỘNG

kq <= a + b;

dau <= kq[9];

tram    <= kq /100;

chuc    <= (kq %100) / 10;

donvi <= (kq %100) % 10;

end

else if(ALU == 2) begin --------------- PHÉP TRỪ

   if(a < b) begin

kq <= b - a;

dau <= kq[9];

tram    <= 4'b1010;

chuc    <= (kq %100) / 10;

donvi <= (kq %100) % 10;

  end

  else begin

kq <= a - b;

dau <= kq[9];

tram    <= kq /100;

chuc    <= (kq %100) / 10;

donvi <= (kq %100) % 10;

  end

end

else if(ALU == 3)begin --------------- PHÉP NHÂN

kq <= a * b;

dau <= kq[9];

tram    <= kq /100;

chuc    <= (kq %100) / 10;

donvi <= (kq %100) % 10;

end

else if(ALU == 4)begin --------------- PHÉP CHIA

kq <= a / b;

dau <= kq[9];

tram    <= kq /100;

chuc    <= (kq %100) / 10;

donvi <= (kq %100) % 10;

end

Các tin khác