Thông tin tài liệu
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:
hoangquang.dientu@gmail.com
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 FPGA Class 30/05/2013 11 KẾT THÚC BÀI 4 FPGA Class 30/05/2013 12 .
1
NGÔN NGỮ LẬP TRÌNH PHẦN
CỨNG VERILOG HDL (PHẦN 2)
BÀI 4:
hoangquang.dientu@gmail.com
Nhận hướng dẫn thiết kế số sử dụng ngôn ngữ Verilog-HDL trên. (<đ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
Ngày đăng: 10/03/2014, 00:20
Xem thêm: Hướng dẫn thiết kế số sử dụng ngôn ngữ Verilog-HDL trên FPGA: Bài 4 pptx