1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ngôn ngữ lập trình verilog

16 314 0

Đ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 16
Dung lượng 1,51 MB
File đính kèm bao cao verilog.rar (10 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đặc điểm: - Verilog là ngôn ngữ mô tả phần cứng chính được người thiết kế phần cứng sử dụng để mô tả, thiết kế các hệ thống số.. Verilog thường được dùng để mô tả thiết kế ở bốn dạng: •

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM

KHOA CÔNG NGHỆ ĐIỆN TỬ

oOo -TIỂU LUẬN CÔNG NGHỆ VI ĐIỆN TỬ

ĐỀ TÀI:

NGÔN NGỮ LẬP TRÌNH VERILOG

Trang 2

MỤC LỤC

I Giới thiệu ngôn ngữ Verilog

II Các thuật ngữ trong Verilog III Các dạng dữ liệu

IV.Toán tử

V Modules và các ví dụ

Trang 3

Giới Thiệu Verilog

1 Đặc điểm:

- Verilog là ngôn ngữ mô tả phần cứng chính được người thiết kế phần cứng sử dụng để mô tả, thiết kế các hệ thống số

VD: bộ vi xử lý hay các linh kiện điện tử

- Verilog dễ học và dễ sử dụng hơn VHDL

- Verilog được chuẩn hoá theo chuẩn IEEE vào năm 1995 và 2001

- Verilog rất giống ngôn ngữ C và được giới chuyên môn nghiên cứu, sử dụng nhiều Verilog có thể được sử dụng để thiết kế hệ thống số ở nhiều mức khác nhau

Verilog thường được dùng để mô tả thiết kế ở bốn dạng:

• Thuật toán (một số lệnh giống ngôn ngữ C như: if, case, for, while…)

• Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean)

• Các cổng kết nối (cổng: OR, AND, NOT…)

• Chuyển mạch (BJT, MOSFET)

Trang 4

2 Cấu trúc chương trình dùng ngôn ngữ Verilog

// Khai báo module

Module tên chương trình (tên biến I/O); // tên chương trình

trùng tên file.v

Input [msb:lsb] biến;

Output [msb:lsb] biến;

Reg [msb:lsb] biến reg;

Wire [msb: lsb] biến wire;

// Khai báo khối always, hoặc khối initial

… các lệnh …

Endmodule

Trang 5

1 Khoảng trắng

2 Chú giải

 Được viết sau hai dấu gạch xiên (//), được viết trên cùng một dòng Được viết giữa /* */, khi viết nhiều dòng chú giải

3 Chữ số

 Định nghĩa như là một con số của các bit, giá trị có thể là: số nhị phân, bát phân, thập phân, hoặc thập lục phân

VD : 3’b001, 5’d30 = 5’b11110,

16’h5ED4 = 16’d24276 = 16’b0101111011010100

4 Từ định danh

 Từ định danh người dùng quy định cho biến, tên hàm, tên môđun, tên khối

và tên trường hợp

 Từ định danh bắt đầu bằng một mẫu tự hoặc đường gạch dưới ’_’ (không bắt đầu bằng một con số hoặc $ ) và kể cả mọi chữ số của mẫu tự, những con

số và đường gạch dưới Từ định danh trong Verilog phân biệt dạng chữ

CÁC THUẬT NGỮ TRONG

VERILOG

Trang 6

5 Cú pháp :

 Ký hiệu cho phép: ABDCE…abcdef…1234567890_$

Không cho phép: các ký tự đặc biệt khác -, &, #, @

6 Toán tử

 Toán tử là một, hai, hoặc ba kí tự dùng để thực hiện các toán hạng trên biến Các toán tử bao gồm >, +, &, !=

7 Từ khóa Verilog

 Có nhiều từ mã có ý nghĩa đặc biệt ở Verilog

Ví dụ: assign, case, while, wire, reg, and, or, nand, và module

 Chúng không được dùng như từ định danh Từ khóa Verilog cũng bao gồm

cả chỉ dẫn chương trình biên dịch và System Task (hệ thống soạn thảo) và các hàm

Trang 7

1 Đặt giá trị

Verilog bao gồm 4 giá trị cơ bản sau:

0: mức logic 0, hoặc điều kiện sai

1: mức logic 1, hoặc điều kiện đúng

X: mức logic tuỳ định

Z: trạng thái tổng trở cao

X và Z dùng có giới hạn trong tổng hợp (synthesis)

2 Wire

- Mô tả vật liệu đường dây dẫn để kết nối các cổng hay các module

- Giá trị của Wire có thể đọc, nhưng không được gán trong function hoặc block

- Wire không lưu trữ giá trị của nó nhưng phải được thực thi bởi 1 lệnh gán kế tiếp hay sự kết nối Wire với đầu ra của 1 cổng hoặc 1 module

• Những dạng đặc biệt khác của Wire:

- Wand (wired_and): giá trị phụ thuộc vào mức logic And toàn bộ bộ điều khiển kết nối đến Wire

- Wor (wired_or): giá trị p.thuộc mức logic Or toàn bộ bộ điều khiển kết nối đến Wire

- Tri (three_state): tất cả bộ điều khiển kết nối đến 1 tri phải ở trạng thái Z cao

CÁC DẠNG DỮ LIỆU

Trang 8

2.1 Cú pháp

Wire [msb:lsb] tên biến wire

Wand [msb:lsb] tên biến wand

Wor [msb:lsb] tên biến wor

Tri [msb:lsb] tên biến tri

2.2 Ví dụ

Wire c;

Wand d;

Assign d= a;

Assign d= b; // giá trị d là mức logic của phép And a và b

Wire [9:0] A; // vectơ A có 10 wire

3 Reg

- Reg (register) : dữ liệu nó chứa có giá trị từ một thủ tục gán

kế tiếp Reg chỉ được dùng trong thủ tục hàm và khối

- Reg là loại biến Verilog; không nhất thiết là thanh ghi tự nhiên Trong thanh ghi nhiều bit, data được lưu trữ bằng các

chữ số không dấu và không có kí hiệu đuôi mở rộng, chủ yếu là số bù hai

Trang 9

3.1 Cú pháp:

Reg [msb:lsb] tên biến reg

3.2.Ví dụ:

Reg a; // biến thanh ghi đơn giản 1 bit

Reg [7:0] A; // một vectơ 8 bit; một bank của 8 bít thanh ghi

Reg [5:0]b, c;// hai biến thanh ghi 6 bit

4 Input, Output, Inout

- Những từ khoá này biểu thị đầu vào, đầu ra, và port hai chiều của một module hoặc task Một port đầu ra có thể được cấu hình từ các dạng: wire, reg, wand, wor, hoặc tri Mặc định là wire

4.1 Cú pháp:

Input [msb:lsb] port đầu vào

Output [msb:lsb] port đầu ra

Inout [msb:lsb] port đầu vào,ra hai chiều

4.2 Ví dụ:

Module sample (b, e, c, a);

Input a; // một đầu vào mặc định là kiểu wire

Output b, e; // hai đầu ra mặc định là kiểu wire

Output [1:0] c; /* đầu ra hai bit, phải khai báo trong một lệnh riêng*/

Trang 10

Reg [1:0] c; // đầu c được khai báo như một reg.

5 Integer (Số nguyên)

- Integer là một biến đa năng Trong tổng hợp, dùng chủ yếu cho vòng lặp, tham

số, và hằng số Chúng hoàn toàn là reg

- Tuy nhiêu chúng chứa dữ liệu bằng những số có dấu, trong khi đó khai báo dạng reg chung bằng số không dấu

- Nếu chúng chứa các số mà không định nghĩa thời gian biên dịch thì kích thước mặc định là 32 bit Nếu chứa hằng, sự tổng hợp điều chỉnh các số có kích thước nhỏ nhất cần thiết cho sự biên dịch

5.1 Cú pháp:

Integer tên biến nguyên;

…tên hằng nguyên…;

5.2 Ví dụ:

Integer a; // số nguyên đơn giản 32bit

Assign b= 63; // mặc định là một biến 7 bit

Trang 11

6 Supply0, Supply1

- Xác định chổ đường dẫn lên mức logic 0 ( đất), logic 1 (nguồn) theo thứ tự định sẵn

7 Time

-Time là một lượng 64 bit mà được sử dụng cùng với

$time, hệ thống thao tác chứa lượng thời gian mô phỏng

Time không được hỗ trợ tổng hợp và và thế chỉ được

dùng trong mục đích mô phỏng

7.1 Cú pháp:

Time biến time;

7.2 Ví dụ:

Time c;

c = $time; // c = thời gian mô phỏng dòng điện

8 Parameter (Tham số)

Một Parameter xác định 1 hằng số mà được đặt khi bạn cho ví dụ cụ thể là một module Các này cho phép ta có thể sửa chữa

Trang 12

8.1 Cú pháp:

Parameter par_1= giá trị, par_2= giá trị, …;

Parameter [giới hạn] par_3 = giá tr?;

8.2 Ví dụ:

Parameter add = 2b’00, sub = 3b’111;

Parameter n = 4;

Parameter [3:0] par_2 = 4b’1010;

reg [n-1:0] harry; /* một thanh ghi 4 bít mà độ rộng được đặt bởi

tham số n ở trên */

always @(x)

y = {{(add - sub) {x}}}

if (x) begin

state = par_2[1];

else

state =par_2[2];

Trang 13

TOÁN TỬ

Trang 14

Trong đó, chú ý rằng so sánh kiểu case hay identity là kiểu so sánh giá trị đồng nhất Các giá trị dùng trong xử lý so sánh này bao gồm 0, 1, X và Z Kết quả trả về

là 1 bit mang ý nghĩa True/False

Với kiểu so sánh logic thì chỉ xử lý giá tị 0 và 1, nếu đối tượng so sánh chứa giá trị

X hoặc Z thì kết quả trả về là X

Trang 15

Phép Logic

Trang 16

Toán tử điều kiện được dùng để chọn lựa giá trị gán cho một tín hiệu theo điều kiện cho trước

Bitwise

Biểu thức: Y = A & B (đây là một biểu thức) trong đó A và B gọi là toán hạng Toán tử bitwise thực hiện xử lý từng bit tương ứng theo vị trí trên hai toán hạng Nếu một toán hạng có độ dài ngắn hơn toán hạng còn lại thì toán hạng ngắn hơn sẽ được mở rộng thêm các bit “0” ở vị trí các bit trọng số cao MSB (bên trái toán hạng đó) để thực hiện

Ví dụ:

Nếu A[2:0] và B[3:0] thì A[2:0] được mở rộng thành {0, A[2:0]}, lúc đó B[3]

Modules

Ngày đăng: 27/08/2017, 10:37

TỪ KHÓA LIÊN QUAN

w