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

22 1,5K 30

Đ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 22
Dung lượng 666,94 KB

Nội dung

Quy tắc đặt tên 1  Quy tắc đặt tên áp dụng cho tên file module, tên tín hiệu, tên các thông số do người thiết kế tạo ra..  Tên project trùng tên file với module chính top module..  T

Trang 1

NGÔN NGỮ LẬP TRÌNH PHẦN CỨNG VERILOG HDL (PHẦN 1)

BÀI 3:

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 3

Quy tắc đặt tên (1)

 Quy tắc đặt tên áp dụng cho tên file module, tên tín hiệu, tên

các thông số do người thiết kế tạo ra

 Tên project trùng tên file với module chính (top module)

 Top module là module kết nối tất cả các module con (sub-module)

 Tên file trùng tên module: <tên module>.v

 Tên chỉ gồm ký tự chữ cái (phân biệt chữ hoa và chữ thường),

số và dấu gạch dưới và phải bắt đầu với một ký tự chữ

 Không dùng các tên như VDD, VCC, VSS, GND, VREF kể cả chữ hoa và chữ thường

 Không trùng các từ khóa của ngôn ngữ lập trình

Trang 4

Quy tắc đặt tên (2)

 Không đặt tên trùng nhau

 Với tín hiệu clock nên là: clock, clk hoặc ck

 Với tín hiệu reset nên là: reset, rst hoặc

Trang 6

Cấu trúc một thiết kế

30/05/2013 FPGA Class 6

Mỗi module là một file

Các module sẽ được kết nối với nhau (ngõ vào module này nối với ngõ

ra module khác ở top module)

Tên project trùng tên với top module

Trang 8

Khai báo một module

 module example (// input

danh sách port

khai báo tín hiệu ngõ vào

khai báo tín hiệu ngõ ra khai báo kiểu tín hiệu ngõ ra các hàm và lệnh

kết thúc module

Trang 9

Ví dụ về khai báo module

Đoạn code mô tả bộ mux 2 sang 1 Mux 2 sang 1

Mạch sau khi tổng hợp bằng Quartus

Trang 11

Các loại toán tử và mức ưu tiên

Cao

Thấp

Trang 13

Hàm ASSIGN và toán tử điều kiện

 assign mux_out = sel? din_1: din_0;

 assign <tên tín hiệu được gán> = <điều kiện>? <giá trị khi điều kiện

đúng>: <giá trị khi điều kiện sai>;

Kết thúc một dòng lệnh bằng dấu “chấm phẩy”

Phải là kiểu dữ liệu “wire”

Phải là phép gán blocking toán tử điều kiện

Ví dụ:

Trang 15

Cấu trúc ALWAYS@

 always @ ( <danh sách độ nhạy> ) begin

 case, if, (không có assign)

Kiểu dữ liệu của tín hiệu được gán trong cấu trúc always phải là reg

Danh sách độ nhạy không được khai báo đầy đủ (Thiếu tín hiệu C)

Liệt kê tất các tín hiệu bên phải biểu thức gán

Được khai báo đầy đủ (Đây là mạch tổ hợp)

assign y = A & B & C;

Chú ý rằng y được khai báo kiểu wire

Trang 17

Gán blocking (=) và non-blocking (<=)

Dùng cho mạch tổ hợp Dùng cho mạch tuần tự

Không bao giờ dùng chung hai phép gán blocking và non- blocking trong cùng 1 hàm case, if, always

Trang 19

posedge và negedge

 Hai từ khóa này dùng trong danh sách độ nhạy của cấu trúc always

 posedge nghĩa là xét tại cạnh lên của tín hiệu

 negedge nghĩa là xét tại cạnh xuống của tín hiệu

trong cùng 1 cấu trúc always

 Chỉ nên sử dụng 1 khai báo posedge hoặc

negedge (đơn clock) nếu có thể

Trang 21

Bài tập ví dụ

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:

Trang 22

30/05/2013 FPGA Class 22

KẾT THÚC BÀI 3

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