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
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
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
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