1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

12 1,2K 31

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 528,35 KB

Nội dung

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...  Case sẽ tạo ra mạch xử lý song

Trang 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

Trang 2

Nội dung chính

 Hàm case

 Máy trạng thái FSM

 Ví dụ thực hiện

Trang 3

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 ;

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ũ

Trang 4

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

 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

Trang 5

Nội dung chính

 Hàm If

 Máy trạng thái FSM

 Ví dụ thực hiện

Trang 6

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

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)

Trang 7

Ví dụ hàm case

 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);

 case (sel)

 2’b00: y = a;

 2’b01: y = b;

 2’b10: y = c;

 endcase

 endmodule

Hàm case đầy đủ trường hợp Hàm case không đầy đủ trường hợp phải có tránh tạo chốt

Trang 8

So sánh If và case

 If sẽ tạo ra mạch

xử lý nối tiếp

 Diện tích có thể

nhỏ hơn case

 Case sẽ tạo ra mạch xử lý song song

nhanh

lớn hơn If

 Mạch tạo bởi casex đôi khi tương đồng với

hàm If

vào trình tổng hợp

sử dụng

Trang 9

Bài tập ví dụ tổng hợp

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

Trang 10

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>

ra và điều kiện chuyển trạng

thái>

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ự

Trang 11

Ví dụ máy trạng thái

Trang 12

KẾT THÚC BÀI 4

Ngày đăng: 10/03/2014, 00:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w