Tải bản đầy đủ (.pdf) (12 trang)

Hướng dẫn thiết kế số sử dụng ngôn ngữ Verilog-HDL trên FPGA: Bài 4 pptx

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 (528.35 KB, 12 trang )

30/05/2013 FPGA Class
1
NGÔN NGỮ LẬP TRÌNH PHẦN
CỨNG VERILOG HDL (PHẦN 2)
BÀI 4:


Nhận hướng dẫn thiết kế số sử dụng ngôn ngữ Verilog-HDL trên FPGA
Nội dung chính
 Hàm If
 Hàm case
 Máy trạng thái FSM
 Ví dụ thực hiện


30/05/2013 FPGA Class
2
Hàm If
 Hàm If nằm trong cấu trúc
always

 If (<điều kiện 1>) begin
 Kết quả 1;
 end
 else if (<điều kiện 2>) begin
 Kết quả 1;
 end
 else begin
 Kết quả khác;
 end
30/05/2013 FPGA Class


3
Phải có nếu có nhiều dòng lệnh
Phải có nếu là mạch tổ hợp
hoặc là mạch tuần tự nhưng
không muốn giữ lại giá trị cũ.
Ví dụ hàm If
 module example_1 (a, b, c, d, sel, y);
 input a;
 input b;
 input c;
 input d;
 input [1:0] sel;
 output reg [1:0] y;
 always @ (*) begin
 If (sel == 1’b00)
 y = a;
 else if (sel == 1’b01)
 y = b;
 else if (sel == 1’b10)
 y = c;
 else
 y = d;
 end
 endmodule
30/05/2013 FPGA Class
4
 module example_1 (a, b, c, sel, y);
 input a;
 input b;
 input c;

 input [1:0] sel;
 output reg [1:0] y;
 always @ (*) begin
 If (sel == 1’b00)
 y = a;
 else if (sel == 1’b01)
 y = b;
 else if (sel == 1’b10)
 y = c;
 end
 endmodule
Hàm if đầy đủ trường hợp
Hàm if không đầy đủ trường hợp phải
chú ý đến nhánh else để tránh tạo
chốt
Nội dung chính
 Hàm If
 Hàm case
 Máy trạng thái FSM
 Ví dụ thực hiện


30/05/2013 FPGA Class
5
Hàm case và casex
 case (<điều kiện tác động>)

 <Trường hợp 1>: begin
 <Giá trị ngõ ra>;
 end

 <Trường hợp 2>: begin
 <Giá trị ngõ ra>;
 end
 default: begin
 <Giá trị ngõ ra>;
 end
 endcase

30/05/2013 FPGA Class
6
Phải có nếu có nhiều dòng lệnh
Một hoặc nhiều tín hiệu ghép lại
Phải có nếu là mạch tổ hợp
Giá trị điều kiện là hằng số (chỉ
là 1 hoặc 0)
 casex (<điều kiện tác động>)

 endcase

casex sử dụng như hàm case nhưng giá trị điều
kiện có thể là “X” (don’t care – tùy định)
Ví dụ hàm case
30/05/2013 FPGA Class
7
 module example_1 (a, b, c, d, sel, y);
 input a;
 input b;
 input c;
 input d;
 input [1:0] sel;

 output reg [1:0] y;
 always @ (*) begin
 case (sel)
 2’b00: y = a;
 2’b01: y = b;
 2’b10: y = c;
 2’b11: y = d;
 endcase
 end
 endmodule
 module example_1 (a, b, c, sel,
y);
 input a;
 input b;
 input c;
 input [1:0] sel;
 output reg [1:0] y;
 always @ (*) begin
 case (sel)
 2’b00: y = a;
 2’b01: y = b;
 2’b10: y = c;
 endcase
 end
 endmodule
Hàm case đầy đủ trường hợp
Hàm case không đầy đủ trường hợp
phải có default để tránh tạo chốt
So sánh If và case
 If sẽ tạo ra mạch

xử lý nối tiếp
 Tốc độ xử lý chậm.
 Diện tích có thể
nhỏ hơn case.
30/05/2013 FPGA Class
8
 Case sẽ tạo ra
mạch xử lý song
song
 Tốc độ xử lý
nhanh.
 Diện tích thường
lớn hơn If.
 Mạch tạo bởi casex đôi
khi tương đồng với
hàm If.
 Điều này còn tùy
vào trình tổng hợp
sử dụng
Bài tập ví dụ tổng hợp
30/05/2013 FPGA Class
9
1. Diễn giải chức năng của
mạch?
2. Xác định ngõ vào (tín hiệu
vào) và ngõ ra (tín hiệu ra của
mạch)? Từ đó vẽ sơ đồ chân
tín hiệu.
3. Viết RTL code bằng ngôn ngữ
Verilog mô tả mạch bên theo

các cách sau:
1. Chỉ dùng hàm assign
2. Chỉ dùng hàm always@
1. Với If
2. Với Case
3. Dùng kết hợp assign và
always
4. Đưa ra phương án kiểm tra
trên KIT DE1.

Máy trạng thái (FSM – Finite State
Machine)
 <Khai báo hằng số trạng thái>

 <Khai báo biến trạng thái>

 <Khối always chuyển trạng thái>

 <Khối always xác định giá trị ngõ
ra và điều kiện chuyển trạng
thái>
30/05/2013 FPGA Class
10
parameter <tên trạng thái> = <hăng số gán>;
hai biến kiểu reg với state/current_state
và next_state
Hoạt động theo xung clock
Mạch tổ hợp
Toàn bộ máy trạng thái là mạch tuần tự
Ví dụ máy trạng thái

30/05/2013 FPGA Class
11

30/05/2013 FPGA Class
12
KẾT THÚC BÀI 4

×