Professional Documents
Culture Documents
Chapter 2 Verilog Syntax, Structural Verilog and Timing
Chapter 2 Verilog Syntax, Structural Verilog and Timing
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
giáo trình
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
Các vấn đề hành chính
Đọc
• [2] Chương 3 (Khái niệm cơ bản – Verilog HDL)
• [2] Chương 4 (khai báo mô-đun và cổng, đặt tên theo thứ bậc)
• [2] Chương 5 (mô-đun cấu trúc, cổng nguyên thủy, độ trễ)
• Trang trình bày Chương 2 (Canvas)
Bài tập về nhà
• bài tập về nhà 1
Dự án
• Lập nhóm và lựa chọn chủ đề sau Chương 3
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
Nội dung
1.Bình luận
2.số
3.Tín hiệu
4.Loại dữ liệu
5.Tham số và xác định
6.Verilog kết cấu
7.Cổng mô-đun
8.Thời gian và độ trễ
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
1. Bình luận
Bình luận là quan trọng
• Trong ngành, nhiều người khác sẽ đọc mã của bạn
• Một số người (có thể là bạn nhiều năm sau) sẽ phải tham khảo mã
của bạn khi khách hàng phát hiện ra lỗi.
Những nhận xét hay nhất ghi lại lý do tại sao bạn đang làm
việc bạn đang làm chứ không phải việc bạn đang làm
• Bất kỳ ai biết Verilog đều có thể biết đoạn mã đó đang làm gì
• Bình luận tại sao (động lực/quá trình suy nghĩ) bạn đang làm việc đó
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
1. Bình luận
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
1. Bình luận
rising
Đây là bình luận tốt hơn. Nó cho bạn biết lý do tại sao mọi thứ đã được
thực hiện!
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
2. Con số
Định dạng chung là: <size>'<base><number>
Ví dụ:
• 4'b1101 // Đây là số nhị phân 4 bit bằng 13
• 10'h2e7 // Đây là số có độ rộng 10 bit được chỉ định ở dạng hex
Cơ sở có sẵn:
• d = số thập phân (vui lòng chỉ sử dụng trong băng ghế thử nghiệm)
• h = hex (sử dụng thường xuyên)
• b = nhị phân (sử dụng thường xuyên cho số # nhỏ hơn)
• o = bát phân (hiếm khi, vui lòng tránh)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
2. Con số
Các số có thể có giá trị là ký tự x hoặc z
• x = không xác định, z = Trở kháng cao
• 12'h13x // Số 12 bit với 4 bit thấp hơn không xác định
Nếu kích thước không được chỉ định thì nó phụ thuộc vào trình mô
phỏng/máy (ít nhất phải là 32 bit).
• Luôn định cỡ số cho Verilog Design Under Test (DUT)
Hỗ trợ cả số âm
• -16'h3A // đây sẽ là -3A ở dạng hex (tức là FFC6 ở dạng bù 2)
Dấu gạch dưới và dấu chấm hỏi
• Cho phép gạch dưới “ _ ” ở bất cứ đâu ngoại trừ ký tự đầu tiên. Ví dụ:
12'b1011_0011_0110
• Dấu chấm hỏi " ? ” thay thế cho x trong bối cảnh số.
9
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
3. Tín hiệu
Mã định danh là tên bạn chọn cho tín hiệu của mình
Một số quy tắc
• Phân biệt chữ hoa chữ thường
• Bắt đầu bằng ký tự chữ cái hoặc dấu gạch dưới
• Không thể bắt đầu bằng chữ số hoặc $
Bạn nên chọn tên biến mô tả và tên tín hiệu.
• Sử dụng trường hợp hỗn hợp và/hoặc _ để phân cách tên mô tả
• Có quy ước cho các tín hiệu hoạt động ở mức thấp
Nhiều lỗi xảy ra trên giao diện giữa các khối được viết bởi 2 người khác nhau trở lên. Một
người cho rằng tín hiệu đang hoạt động ở mức thấp và người kia cho rằng tín hiệu đó đang
hoạt động ở mức cao.
Sử dụng _n ở cuối tín hiệu để biểu thị mức hoạt động thấp
Ví dụ: đầu tiên_n = 1'b0 // tín hiệu reset mức thấp đang hoạt động 10
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
3. Tín hiệu
Tín hiệu có thể có 1 trong 4 giá trị
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
3. Tín hiệu
Giải quyết logic 4 giá trị
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Lưới
• Thể hiện sự kết nối giữa các phần tử phần cứng.
• Có các giá trị được điều khiển liên tục trên đầu ra của thiết bị mà chúng
được kết nối.
• Khai báo chủ yếu bằng từ khóa wire
• Giá trị mặc định là z .
b a
c
a=b&c
13
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Các thanh ghi là các nút lưu trữ
• Một biến có thể giữ một giá trị cho đến khi một giá trị khác được đặt vào
nó.
• Có thể thay đổi trong mô phỏng bằng cách gán một giá trị mới
• Được khai báo bằng từ khóa reg .
• Giá trị mặc định là x .
14
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Các thanh ghi không nhất thiết phải là flip-flop
• Đừng nhầm lẫn thuật ngữ thanh ghi trong Verilog với thanh ghi phần
cứng.
• Thanh ghi Verilog không cần đồng hồ như thanh ghi phần cứng.
• Trong các thanh ghi Verilog của Design Unit Test (DUT) của bạn thường
là flip-flop
• Bất cứ thứ gì được gán trong khối luôn luôn hoặc khối ban đầu đều phải
được gán cho một thanh ghi.
• Một dây có thể kết nối với reg , nhưng reg thì không.
• Bạn sẽ sử dụng các thanh ghi trong testbench của mình, nhưng chúng sẽ
không phải là flip-flop
15
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Các vectơ là một tập hợp các kiểu dữ liệu dây hoặc reg (tức là các
mạng có kiểu dữ liệu reg rộng 16 bit )
Vector có thể được khai báo tại [ high# : low#] hoặc [ low# : high#],
nhưng số bên trái luôn là bit có ý nghĩa nhất (MSB) của vectơ
16
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Có thể chọn các phần của vectơ (bit đơn hoặc phạm vi)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Mảng
• Cho phép trong Verilog các kiểu dữ liệu đăng ký reg , số nguyên , thời
gian và vectơ và không cho phép các biến thực .
• < tên_mảng >[<chỉ số dưới>]
• Mảng đa chiều không được phép.
• Vectơ là một phần tử có chiều rộng n-bit , trong khi mảng là nhiều phần
tử có chiều rộng 1-bit hoặc n-bit .
18
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
số nguyên
• Kiểu dữ liệu đăng ký mục đích chung với số nguyên từ khóa
• Độ rộng mặc định tùy thuộc vào máy (thường là ít nhất 32-bit)
• reg chỉ có thể lưu trữ các giá trị không dấu , trong khi số nguyên lưu trữ các
giá trị có dấu
Sợi dây
• Có thể được lưu trữ trong reg. Độ rộng của biến reg phải đủ lớn để chứa chuỗi
• Mỗi ký tự trong chuỗi chiếm 8 bit (1 byte).
Thời gian
• Đó là thời gian mô phỏng với từ khóa time .
• Hàm hệ thống $time lấy thời gian mô phỏng hiện tại.
19
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
4. Kiểu dữ liệu
Có thể có mảng nhiều chiều
• reg [7:0] mem[0:99][0:3]; // Cái này là cái gì?
Thường có một kỷ niệm mẫu mực
• SRAM, ROM, Flash, Bộ nhớ đệm
• Ký ức có thể hữu ích trên băng ghế thử nghiệm của bạn
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
5. Tham số và xác định
Các tham số rất hữu ích để làm cho mã của bạn chung chung/linh
hoạt hơn. Đọc về nó trong văn bản.
` Câu lệnh định nghĩa có thể làm cho mã dễ đọc hơn
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
5. Tham số và xác định
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
Nhiệm vụ hệ thống
hữu ích
$display : Giống như printf trong C. Hữu ích cho việc kiểm tra
và gỡ lỗi
$monitor : Theo dõi biến và bất cứ khi nào giá trị thay đổi, nó sẽ
in nó
$stop : Dừng mô phỏng và cho phép bạn vẫn thăm dò tín hiệu và
gỡ lỗi
$finish : dừng hoàn toàn mô phỏng, trình mô phỏng từ bỏ quyền
kiểm soát luồng
Cũng hữu ích là `include để bao gồm mã từ một tệp khác (như
tệp tiêu đề)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
nguyên thủy
Xây dựng thiết kế từ cấp độ cổng/flip-flop/chốt
• Verilog cấu trúc là danh sách các khối và kết nối
Verilog cung cấp một tập hợp các cổng nguyên thủy
• và, hoặc, không, nand , cũng không, xor , xnor , buf , bufifl , v.v.
• Khối xây dựng kết hợp cho thiết kế kết cấu
• Biết “hành vi”
• Không thể truy cập mô tả “bên trong”
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
nguyên thủy
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Bất kỳ thiết kế Verilog nào bạn thực hiện sẽ là một mô-đun
Điều này bao gồm các bàn thử nghiệm!
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Xây dựng một mô-đun từ những phần nhỏ hơn
Thiết kế: thường từ trên xuống
Xác minh: thường từ dưới lên
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Xây dựng một mô-đun từ những phần nhỏ hơn
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Bạn có thể sử dụng các loại module Verilog khác để xây dựng cấu trúc
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Hệ thống phân cấp mô-đun Verilog
• Mọi phiên bản, tín hiệu hoặc biến của mô-đun đều được xác định bằng mã
định danh . Mã định danh chỉ có thể được khai báo một lần.
• Tên phân cấp là mã định danh danh sách được phân tách bằng dấu chấm
(“.”) cho mỗi cấp độ phân cấp.
• Điều này thường hữu ích trong mã hóa testbench, theo cách hơi cửa hậu,
trong một mô-đun khác trong testbench của bạn.
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Cha mẹ không thể truy cập tín hiệu “nội bộ” của con
Có thể có tất cả các mô-đun trong một tệp duy nhất
• Thứ tự mô-đun không quan trọng!
• Tốt cho thiết kế nhỏ
• Không tốt cho những cái lớn hơn
• Không tốt cho việc tái sử dụng mô-đun (cắt và dán)
Có thể chia mô-đun thành nhiều tệp
• Giúp tổ chức
• Hãy để bạn tìm thấy một mô-đun cụ thể một cách dễ dàng
• Tốt cho việc tái sử dụng mô-đun (thêm tệp vào dự án)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Kết nối: Theo vị trí hoặc Kết nối theo thứ tự
• Có thể ổn trong một số trường hợp
Thiết kế có rất ít cổng
Các cổng đầu vào có thể hoán đổi cho nhau ( và/hoặc/ xor đầu vào
cổng)
• Gây nhầm lẫn cho số lượng lớn các cổng
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
6. Verilog kết cấu
Kết nối: Phương thức rõ ràng hoặc Kết nối theo tên
• Giúp tránh “kết nối sai”
• Không cần phải nhớ thứ tự cổng
• Có thể dễ đọc hơn
• .<tên cổng>(tên tín hiệu)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
7. Cổng mô-đun
Các cổng cung cấp giao diện để mô-đun có thể giao tiếp với các mô-đun
khác.
Danh sách các cổng là tùy chọn trong một mô-đun. Nếu mô-đun không trao
đổi tín hiệu với bất kỳ cổng nào thì không có cổng nào trong danh sách.
Mô-đun Top là mô-đun cấp cao nhất và mô-đun fulladd4 được khởi tạo bên
dưới Top .
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
7. Cổng mô-đun
Nhiều cách để khai báo các cổng của mô-đun
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
7. Cổng mô-đun
Tất cả các khai báo cổng đều được khai báo ngầm là wire .
Các cổng thuộc loại đầu vào và đầu vào không thể được khai báo là reg
vì các cổng đầu vào không được lưu trữ giá trị.
cổng đầu vào chỉ phản ánh những thay đổi trong tín hiệu bên ngoài mà
chúng được kết nối.
Tuy nhiên, nếu cổng đầu ra giữ một giá trị thì chúng phải được khai
báo là reg .
Ví dụ: trong định nghĩa của D Filp -flop ( DFF ), chúng ta muốn đầu ra
q giữ nguyên giá trị của nó cho đến cạnh xung nhịp tiếp theo.
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
7. Cổng mô-đun
cổng đầu vào có thể được kết nối với một biến là reg hoặc net .
các cổng đầu ra phải luôn được kết nối với mạng , không thể kết nối
với reg .
Cổng vào luôn phải là loại có dây và được kết nối với mạng .
Hai mục có kích thước khác nhau có thể được kết nối nhưng có cảnh
báo.
Verilog cho phép các cổng không được kết nối.
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
7. Cổng mô-đun
Ví dụ về kết nối cổng bất hợp pháp
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
8. Thời gian và độ trễ
Có thể đặt “độ trễ” trong thiết kế Verilog
• Cổng, dây điện và báo cáo hành vi
Độ trễ chỉ hữu ích cho Mô phỏng!
• Được sử dụng để ước tính hoạt động “thực” trong khi mô phỏng
• Dùng để điều khiển bàn thí nghiệm
HỆ THỐNG
• tổng hợp BỎ QUA các điều khiển thời gian này
Không thể yêu cầu cổng đợi 1,5 nano giây
Độ trễ là kết quả của tính chất vật lý
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
8. Thời gian và độ trễ
Khi không có điều khiển thời gian nào được chỉ định: độ trễ
bằng 0
• Không thực tế – ngay cả các electron cũng cần có thời gian để di
chuyển
• OUT được cập nhật cùng lúc A và/hoặc B thay đổi:
và A0(OUT, A, B);
Độ trễ đơn vị thường được sử dụng
• Cũng không chính xác, nhưng gần hơn ...
• “Độ sâu” của mạch ảnh hưởng đến tốc độ!
• Dễ dàng hơn để xem các thay đổi lan truyền qua mạch như thế nào
• OUT được cập nhật thời gian 1 “đơn vị” sau khi thay đổi A và/hoặc B:
và #1 A0(OUT, A, B);
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
8. Thời gian và độ trễ
Ví dụ
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
8. Thời gian và độ trễ
Các loại độ trễ: Độ trễ quán tính (Cổng)
• Ngăn chặn các xung ngắn hơn mức độ trễ
• Trong thực tế, các cổng cần phải giữ đầu vào trong một thời gian
nhất định trước khi đầu ra chính xác (thời gian giữ).
Các loại độ trễ: Độ trễ vận chuyển (Nets)
• “Thời gian bay” từ nguồn đến chìm
• Xung ngắn được truyền đi
Tuy nhiên, không quan trọng đối với dự án của chúng tôi,
trong ngành
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
8. Thời gian và độ trễ
dây số 5 net_1; // độ trễ vận chuyển 5 đơn vị
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn
Bản tóm tắt
Nhận xét phải cho thấy lý do tại sao bạn đang làm việc bạn
đang làm chứ không phải việc bạn đang làm
<kích thước>'<cơ sở><số> . Cơ sở có sẵn: d, h, b, o
Xác định các thành phần của định nghĩa mô-đun Verilog như
tên mô-đun, danh sách cổng, nhận xét, số, tín hiệu và khai
báo tham số.
Hiểu cách kết nối các cổng với tín hiệu bên ngoài, theo danh
sách thứ tự và theo tên
Phân cấp: thiết kế (từ trên xuống), xác minh (từ dưới lên)
pail.phenikaa-uni.edu.vn thuan.levan@phenikaa-uni.edu.vn