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

Thiết kế khối ALU với ngôn ngữ verilog

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 (102.52 KB, 5 trang )

Bảng phân công

Yêu cầu đề bài

-

Thiết kế một ALU đơn giản để thực hiện một tập lệnh tùy chọn trong đó có các lệnh cơ bản
(CỘNG , TRỪ , AND , NOR , OR, NAND, XOR, NOT.).
Thiết kế chứa 2 khối RAM dùng để lưu giá trị cho 2 số đầu vào mà ALU cần tính tốn.
Viết một file kiểm thử tính đúng đắn của thiết kế.

Hoạt động được mơ tả như sau:
-

Hoạt động của khối ALU thiết kế được miêu tả như bên dưới. ALU này thực hiện các lệnh
CỘNG , TRỪ , AND , NOR , OR, NAND, XOR, NOT.
Hai số din0 và din1 có độ rộng 8 bit là 2 số được đưa vào để ALU thực hiện lệnh. Kết quả trả
ra OUT cũng là một số 8 bit.
Opcode
Hành động ALU
Giải thích
(ALU Operation)
0
Add Signed
OUT = din0 + din1
1
Subtract Signed
OUT = din0 – din1
2
Bitwise AND
OUT (i) = din0(i) AND


din1(i).
3
Bitwise NOR
OUT (i) = din0(i) NOR
din1(i).
4
Bitwise OR
OUT (i) = din0(i) OR din1(i).
5
Bitwise NAND
OUT (i) = din0(i) AND
din1(i).
6
Bitwise XOR
OUT (i) = din0(i) AND
din1(i).
7
Biwise NOT
OUT (i) = din0(i)
Bảng 1 : Bảng mô tả hành động của ALU.


Sơ đồ khối và giải thích chức năng từng module

Hình 1: Sơ đồ khối tổng quát
-

Alu_ram: module cần thiết kế chứa các phần tử RAM và ALU.
Iram : 2 module iram làm nhiệm vụ lưu trữ dữ liệu cho 2 số đầu vào mà ALU cần tính tốn.
+ hành động ghi: Khi we = 1 , lúc đó bus dữ liệu din0, din1 được đưa vào theo địa chỉ wa.

+ hành động đọc: Khi re = 1 , lúc đó bus dữ liệu dout0, dout1 được đọc ra theo địa chỉ ra.
Alu : Thực thi các hành động dựa trên giá trị opcode đưa vào tương ứng như bảng 1 ở trên.
Ví dụ : khi opcode = 1 , din0 = 1 , din1 = 5  kết quả alu trả ra out = 6.


Tên tín hiệu
clk

Độ rộng bus
1

Loại
Input

opcode

1

Input

din0

8

Input

din1

8


Input

we

1

Input

wa
re

3
1

Input
Input

ra
vld

3
1

Input
Output

out

8


Output

Giải thích
Xung clock đồng bộ cho
tồn bộ thiết kế.
Mã lệnh để ALU thực
thi. Cụ thể được miêu tả
ở Bảng 1.
Giá trị biến số đầu vào
0.
Giá trị biến số đầu vào
1.
Tích cực mức cao khi
cần ghi vào ram.
Bus đia chỉ ghi vào ram.
Tích cực mức cao khi
cần đọc ram.
Bus đia chỉ ghi đọc ram.
Tích cự mức cao khi giá
trị ALU đựoc trả ra.
giá trị ALU đựoc trả ra.


Ngồi những phần đã nói ở trên ta giả lập một môi trường mô phỏng để mô phỏng thiết kế ở file
testtop.v.

Hình 2 : mơi trưởng kiểm thử testtop


Kết quả mơ phỏng


Hình 3: Dạng sóng khi chạy mơ phỏng.

Phân tích kết quả
Với kết quả mơ phỏng chọn din0 = 106 , din1 = 59 và quan sát kết quả đầu ra thiết kế
-

Tín hiệu đầu ra out trả ra đúng giá trị mong muốn theo opcode đưa vào
Ví dụ : tại vị trí 100ns , opcode = 0 (đây là phép cộng 2 số)  out = 165 (106+29 = 165).
Tương tự cho các kết quả trả ra tiếp khi opcode thay đổi.
Cá xung re,we tích cực mức cao trong quá trình đọc và ghi như mong muốn.

Kết luận :
-

-

Kết quả mô phỏng phù hợp với yêu cầu thiết đề ra như đã phân tích ở trên.
Với thiết kế này giới hạn trong việc chọn lưa ram tối đa chứ được cùng lúc 8 giá trị cho ALU thực
thi (độ rộng bus địa chỉ RAM là 3 bit). Bên cạnh đó 2 giá trị đầu vào để tính toán giới hạn từ 0
255 (8 bit đia chỉ) nên khi sử lý các giá trị lớn hơn các thông số này thì bộ ALU này khơng đạp
ứng được.
Thiết kế cũng chưa xử lí cơ chế báo lỗi của ALU. Chẳng hạn như kết quả tràn số khi cộng , kết
quả âm trong phép trừ…



×