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

Tự học verilog trong 5 ngày

427 1,3K 9
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Tự học verilog trong 5 ngày
Trường học Unknown University
Chuyên ngành Electrical Engineering
Thể loại Guide
Năm xuất bản 2023
Thành phố Hanoi
Định dạng
Số trang 427
Dung lượng 15,83 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ơ sở ngôn ngữ RLT Ngôn ngữ RLT nâng cao. Ứng dụng Verilog HDL cho tổng hợp đầy đủ Thiết kế Testbench Quản lý thiết kế

Trang 1

Hội thao wng dung Verilog

IVA3

Trang 2

Diéu gi sap toi

" Nục tiêu

- Giới thiệu về ngôn ngữ Verilog

— Hiểu được cách dùng, điểm mạnh và điểm yêu của nó

" Hinh thức

- Buổi sáng — Bài giảng lý thuyết

- Buổi chiều — Các bài thí nghiệm

" Thời gian

— Cà phê

— An trưa

Trang 3

Dat ra kỳ vọng

" Bạn sẽ duoc hoc:

- Giới thiệu về ngôn ngữ Verilog

— Các chi tiết nâng cao của ngôn ngữ Verilog

Trang 4

Tinh than của hội thảo

" Sử dụng các ví dụ trong thế giới thực, hướng tới phần cứng

" Nhiều khái niệm mới cần phải học

- Thảo luận nhiều lần

— Các câu hỏi tổng kết cuối mỗi chương

" Cách thảo luận trong lớp

— Đặt câu hỏi

— Có thê ghi lại nêu quá chi tiết

Trang 5

Kế hoạch đào tao

Cơ sở ngơn cao tơng hợp

ngư

Xưởng sản xuất ứng dụng HDL

Phân giới thiệu

" Cả hai khĩa học Verilò và VHDL đều tuân theo kế hoạch này

Phân nâng cao hơn nữa (Tùy chọn)

Trang 6

Quy ước

" Code Chữ thường: từ khóa và

module ha lfadd (a, b, sum, carry); <— tên do người dùng đình

output sum, carry;

(A)— Quan trọng: Quy tắc hay hướng dân cân tuân theo khi sử dụng Verilog (!) — Cha y: Vấn đê riêng lẻ cần xem xét khi thường xuyên gây ra lỗi

(X)— Lỗi: Lôi biên dịch do sử dụng Verilog khong đúng cách gây nên

(&)— Tổng hợp: Vấn đề riêng lẻ cần xem xét khi sử dụng Verilog với công cụ tông hợp

(T) — Meo: Mẹo hay chỉ dân đề sử dụng ngôn ngữ có hiệu quả hơn

Trang 7

Ung dung Verilog

VAP 3

Trang 8

Ung dung Verilog

Trang 9

Verilog la gi?

=" Verilog khong phai la ngon ng? lap trình

" Verilog 1a Ngôn ngữ mô tả phần cứng

(HDL)

Verilog hô trợ các kiêu mô tả:

" Câu trúc

— Vật lý (sơ đô dây & phan cap)

— Phân mêm (các chương trình con)

" Hành vi của phân cứng

—N6i tiếp (Tuân tự)

— Đồng thời (Song song)

" Cấu trúc

=" Cau tric

Trang 10

Lợi ích của việc sử dụng HDL

"_ Thiết kế ở mức độ cao hơn

- Bắt lỗi sớm hơn trong chu trình thiết kế

— Tìm kiếm các phương án thiết kế thay thế

"- Mô tả là quá trình độc lập với phần cứng

— Chức năng và công nghệ thay đồi dê dàng hơn

— Kéo dài thời gian quyết định cách thực hiện mạch

" Sư mêm dẻo

— Có thê sử dụng lại các thiết kế có săn

— Có thề lựa chọn công cụ nhà phát triển

" Dựa trên ngôn ngừ văn bản

— Thiết kế nhanh hơn

— Quan ly dé dang hơn

Trang 11

Cac van dé khi sw dung HDL

" Qua trinh hoc tap vat va

— Một ngôn ngữ lập trình mới cần phải thông thạo

— Các công cụ mô phỏng và tông hợp cân phải học

" Su thay d6i lon trong phương pháp thiết kê

— Không có phương pháp "ngoài giá sách" cứng nhắc

— Cần lên kế hoạch và thực hiện

"_ Chi hướng tới thiết kế số

— Mặc dù vân có phần mở rộng cho thiết kế tương tự (Verilog—A)

" Phong cách viết mã đúng đắn sẽ giúp cho dự án thành công

"- Cân lên kế hoạchvà phân chia thiết kế trước khi viết mã

" Các vân đề cụ thê khác chúng ta sẽ gặp trong suốt khóa học

Trang 12

Cac ung dung

Ngôn ngữ Verilog được sử dụng bởi

Các thiết kế viên ASIC và FPGA khi viết mã RTL đề tông hợp

Các cầu trúc viên hệ thông khi thực hiện các mô phỏng hệ

thông ở mức cao hơn

Các kỹ sư kiểm định khi cần viết các bài test nâng cao cho tất

cả các mức độ của mô phỏng

Các nhà phát triển mô hình khi miêu tả các tê bào ASIC hoặc FPGA, cũng như các thành phân ở mức cao hơn

Trang 13

Tổng hợp số

Mức công — Câu trúc — Sơ đô dây

Sắp xếp, đặt linh kiện và đi dây

Trang 14

Mire do triru tượng

Trang 15

Minh họa cho mức độ trừu tượng: Chia 2

Trang 16

Mô phỏng mức công logic

Áp dụng mô phỏng mức

thấp cho thiết kế

Mô phỏng tách biệt, bất

khả chuyên Xem kết quả dưới dạng

song

Kiém tra đồng thời dưới dạng thời gian thực và chức năng

Quyết định mang tính cả nhân nếu chức năng đúng Hãy cùng so sánh với

việc sử dụng Verilog

10

Trang 18

On tap

1 Verilog la gi?

2 Verilog doc lap với phân cứng như thê nào và tại sao đây lại là

ưu điềm của nó?

3 Verilog duoc su dung 6 muc nào?

a Testbench

b Thiết kế có thể tông hợp

c Sơ đồ nỗi dây

12

Trang 19

Giới thiệu Ngơn ngữ Verilò

VLE7

Trang 20

Mục tiêu và các chủ đê

" Nục tiêu

— Xác định các đối tượng cơ bản của ngôn ngữ

— GIới thiệu các khái niệm chính của ngôn ngữ

" Các chủ đề

— Các đôi tượng trong Verilog

— Mô tả các kết ndi trong Verilog

— Mô hình phân cấp

- Quy tặc và điều chỉnh

Trang 21

module

" Mô tảgiao diện và hành vỉ

" Cac module giao tiép voi nhau

thong qua cac cong

— Tén cac cong duoc liét ké

trong dâu ngoặc kép đăng sau tên

module

Các công có thê được xác

định là đầu vào (input), dau ra

(output) hoac hai chiéu (inout)

^ được dành riêng cho toán tử

& vừa là điều kiện, vừa là

toán tử

(A) Verilog phân biệt chữ hoa và chữ

thường Các tử khóa phải viết bằng chữ

module halfadd (a, b, sum, carry); output sum, carry;

Trang 22

Mô hình phan cap

" Nối các công của module téi các công Ul UZ -

— Các dây nói cục bộ cân phải được định _“*” `

output sum, carry;

wire n_sum, n_carryl, n_carry2;

halfadd Ul (.a(a), b(b), sum(n sum), carry(n _carryl));

halfadd U2 (.a(n_sum), b(cin), sum(sum), carry(n carry2));?

or U3 (carry, n_carry2, n carryl);?

Trang 23

" Phân biệt rõ ràng công nào thực thể module

b carry

module fulladd (a, b, cin, sum, carry); đươc nối VỚI dây

input a, b, cin; n_carryl cua module

output sum, carry; fulladd

wire n sum, n carryl, n carry2;

halfadd Ul (.a(a), b(b), sum(n sum), wal (n_carryl));

7

module halfadd (a, b, sum, carry);

input a, b; nôi các công có tên đê gắn

Trang 24

— Công thứ nhất của thực thê sẽ ứng

với công thứ nhât cua module

— Công thứ hai của thực thê sẽ ứng

với công thứ của module

output sum, carry;

wire n_ sum, n_carryl, n_carry2;

halfadd Ul (a, b, n sum, n _carryl));

module halfadd Na, Sum, carry);

output sum, carry;

input a, b;

halfadd

Đầu vào a của fulladd ứng

với đầu vào a của halfadd

Đầu vào b của fulladd ứng với đầu vào b của halfadd

(!) Chu ¥: Kiêu kết nối này

khó doc va dé mac 161 hon

kiêu kêt nôi công có tên

Trang 25

" Chứa các biêu thức thực thi always @ (a or b or sel)

=" Nhiéu thi tuc hoat déng song song rí (se ¬ 2)?

= thu tuc always ° ` cốc

— Thực thi khi bat ky biễn nào trong op = b; Danh sách sự kiện

danh sách sự kiện thay đôi giá trị

— Chạy suốt trong quá trình mô phỏng a 1

dau mo phong sel

— Được sử dụng cho thủ tục khởi tao, initial

Trang 26

= thu tuc always thuc thi khi mo always @ (a or b or sel)

trong sô các biên của danh sách sự if (sel == 1);

kién thay doi gia tri op = a;

=" Su kién là một sự thay đôi trong else

gia tri cua bién logic op = b; Danh sách sự kiện

Trang 27

Mô hình kết nỗi của Verilog

được sắp xếp tuân tự giống

"phần mêm" thông thường

" thủ tục được bao gồm trong một module

— Hoặc được chia thành

nhiêu module trong mô hình phân cấp

Trang 28

Thư viện biên dịch

Một vài cơng cụ Verilog sử dụng các thư

viện biên dịch

" Một tập hợp các module hay phân tử

lòic được biên dịch săn

"- Tơn tại dưới dạng đường dân

"- Được tham chiếu bởi tên viện

= Bo mo phơng khởi tạo quá trình kết

nơi chân xác định

— Tên thư viện —> tên đường dân

=" Bién dich vao "WORK"

— WORK được kết nối với tên thư viện

xác định

(A) Khơng phải tất cả các bộ mơ phỏng Verilog

đều sử dụng thư viện biên dịch

WORK

primitives module module primitives module module primitives module module primitives module module

Trang 29

Bién dich thiét ké

pnet read pnet write

RTL/cau trac hanh vi

" Thiết kế được biên dịch từ một danh sách các tap tin Verilog

" Thông thường, testbench sẽ được biên dịch trước

— Thông thường chứa các định hướng của bộ biên dịch

— Cung cấp thêm các thông tin

bô sung cho bộ biên dịch/mô phỏng

" Thường thì thứ tự các tập tin không quan trọng

" Các kết nối trong mô hình phân cấp được tạo ra tự động

=" Verilog cho phép cac mirc do trừu tượng khác nhau ở bắt cứ đâu trong mô hình phân cấp

Trang 30

Chú thích và các dẫu cách

// Đây là một chú thích 'dòng' Mỗi dòng phải bắt đầu bằng //

// Các chú thích sẽ kết thúc khi bắt đầu một dòng mới

module halfadd (a, b, sum, carry);

output sum, carry;

assign carry = a & b;

// Hãy căn chỉnh dòng hợp lý, bạn sẽ dễ dọc và dễ sửa lỗi hơn

Trang 31

Quy tac dat tén

" lên có thé bao gồm chữ cái hoặc

so, ké ca dau do la ($) va gach

dưới (_)

"lên phải bắt đầu băng một chữ cái

hoặc dâu gạch dưới

=" Tén trong Verilog phan biét chit

hoa và chữ thường

— Các từ khóa phải viết thường

" Các tên sau không ứng với cùng

một đôi tượng

— ABC, Abc, abc

" Chiêu dài của tên là tùy ý

— Song các công cụ hoặc phương

pháp có thê giới hạn chiêu dài của tên

unit 32

structural

bus 16 bit

aSb 01h

unit@32 un1t-32

16 bit bus

/

Trang 32

On tap

1 Don vi cau thanh co bản của một thiết kế trong Verilog là gì?

2 Dữ liệu được truyền đi giữa các thủ tục trong Verilog như thê nào?

3 Khi biên dịch một loạt các tập tin Verilog, thông thường tập tin nào sé

được biên dịch trước?

4 Viết một đoạn code đề thực thê hóa module sau:

clk reset

Trang 33

Cac gia tri logic va cac kiéu

dữ liệu của Verilog

VDL4

Trang 34

Mục tiêu và các chủ dé

" Nục tiêu

— Giới thiệu hệ thông các giá trị logic của Verilog

— Hiểu về các kiêu dữ liệu khác nhau

— Các quy định khi sử dụng chúng

=" Cac chu de

—Hé thống giá trị logic

— Các lớp dữ kiều liệu

— Các giá tri vector va thông thường

— Dữ liệu kiêu dây và cách sử dụng

— Dữ liệu kiêu thanh ghi và cách sử dụng

— Lựa chọn đúng kiêu dữ liệu

— Các thông số

— Các mảng bộ nhớ

Trang 35

Hé thong logic 4 gia tri trong Verilog

“ nguon, VDD, VCC, gia tri duong

| lg x, chua xac dinh (xung dot bus), chua khoi tao

buf

bufifl HiZ, trở kháng cao, 3 trạng thái, chưa điều

khién, chwa noi, chưa biêt bộ điêu khiên

(A) Giá trị logic "chưa xác định" x không giống với giá trị "don't care"

3

Trang 36

7 ° A ~ eA

Cac kiêu dữ liệu

" Các đôi tượng của Verilog giao tiếp với nhau thông qua các biến

"_ Tất cả các biên đêu có kiêu đữ liệu

" Verilog cung cap một số lượng các kiều dữ liệu dựng sẵn

" Verilosg là một ngôn ngữ có kiêu rất lỏng lẻo

Trang 37

— Bạn có thê định kiêu lại nêu muốn sử dụng

kiêu dây hoặc thanh ghi

" Theo mặc định các biến là các dây vô hướng

Việc sử dụng các lớp dữ liệu được quy định

rât chặt chẽ

— Có nghĩa là chỉ thanh ghi mới được gán

giá tri trong mot thu tục

Trang 38

Vector

" Vector là một biến với độ dài từ hai bít trở lên

" Kích cờ được định nghĩa khi biến được khai báo

module mux (a, b, sel, op); (A) Quan trọng: các công vector

input [3:0] a, b;<———— Dây vedtor 4 bít của module được đặt tên trong

output [3:0] op; kích thước với câu lệnh

Trang 39

Phép gan vector va thu tu bit

" Các yếu tô được gán theo vị trí

" Các bít riêng lẻ có thể được lấy ra từ vector

" Thứ tự bít có thê được định nghĩa theo chiêu khác

(T) Mẹo: Thông thường chúng ta nên sử dụng [msb:lsb] ví dụ [3:0]

Zbus[3] < Cbus [ 3]

zbus[2] < cbus [2]

zbus[l] < Cbus [1]

zbus[0] < cbus [0]

Trang 40

Phép gan vector va do d ai bit

"- Độ dài của vector không cần phải giống nhau trong phép gán

— Nếu nguồn dài hơn đích, nguôn sẽ được cắt bớt đi (từ bít cao nhất)

— Nếu nguồn ngắn hơn đích, nguồn sẽ được thêm các số 0 (từ bít cao nhất)

" Sử dụng ngoặc vuông hoặc ngoặc nhọn đề phối hợp độ dài vector

Trang 41

Cac gia tri thong thuong

— Số không dấu được mặc định là 32 bit

— Cơ số có thê là b (nhị phân), o (bát phân),

d (thập phân) hoặc h (thập lục phân)

4'b1001 = 4'd9 = 4'oll

— Nếu không ghi, cơ số mặc định là 10

— Giá trị là con số hợp lệ trong hệ cơ số được

lựa chon, cũng có thê là x hoặc z

reg reg

// 0101

// 1110

// 1111

(A) Quan trọng: Đề tránh vector bị

cắt hoặc kéo dãn, kích cỡ cân tương

thích với biến được gán

8'b1100 0001 Số nhị phân § bít

32'bz z 32 bit (gia tri x va z được mở rộng một cách tự động

64'hff01 Số thập lục phân 64 bit

9'o17 Số bát phân 9 bit

12 Giá trị không có kích cỡ, cơ số (mặc định là số thập phân 32 bit)

'h83a Số thập lục phân không có kích cỡ (mặc định là 32 bit)

Trang 42

Khả năng tự mở rộng của các sô

" Dựa trên cơ số, các số reg [7:0] a;

thông thường sẽ có các độ reg [11:3] by

dai khac nhau: initial

(?) Cau hoi: Gia tri cua a sau ⁄ a = 8'h10; //

các phép gán này là bao nhiêu? a = 0; //

ZZZZZzZzZzZ0000

Trang 43

Kiéu day

" Một dây hoạt động như một dây nói thực thụ được điều khiên bởi một công logic

" C6 rat nhiéu kiêu dây nối

—wire la kiéu hay được dùng nhất

—cac day khéng duoc khai báo rõ ràng có kiều mặc định là wire

" Cac gia trị dây thay đôi với câu lệnh assign trong phép gán liên tục cũng như nhờ vào các module hoặc phân tử logic trong thiết kế

wire sel; // Dây vô hướng

wire [31:0] wl, w2; // Hai dây 32 bit với msb là bit 31

wand c; // Day AND vô hướng

tri [15:0] busa; // Bus 16 bit 3 trang thai, msb la bit 15

module halfadd (a, b, sum, carry);

Các kiêu dữ liệu day: wire, input a, b; // mặc định 1a wire

tri, supplyl, supply0, output sum, carry; // mac dinh 1a wire

wor, trior, wand,

triand, trireg, trio, // thay déi theo phép gan

tril assign sum =a ^ b;

assign carry = a & b;

Ngày đăng: 26/03/2014, 00:35

TỪ KHÓA LIÊN QUAN

w