Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Đăng ký
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Verilog căn bản: Bài 8: Khối thủ tục begin-end và fork-join

Email In PDF.
[​IMG]1,Giới thiệu.
- Hai khối begin-end and fork-join được sử dụng để kết hợp một nhóm các câu lệnh thành một khối duy nhất.Có hai khối thủ tục cơ bản sau:
-- Khối tuần tự, hay còn được gọi là khối begin-end
-- Khối song song, hay còn được gọi là khối fork-join

2, Khối begin-end
- Những câu lệnh trong khối begin-end sẽ được thực thi một cách tuần tự theo thứ tự của người lập trình.Khối begin-end thường nắm trong các khối khác ví dụ như khối always, initia và có thể nằm trong khối fork-join. Giá trị trì hoãn của một câu lệnh là thời gian mô phỏng việc thực thi của phát biểu ngay trước câu lệnh hiện tại. Có thể sử dụng cho cả hai mạch tuần tự và mạch tổ hợp.

- Cú pháp chung của begin-end như sau:
Mã:
type_of_block @(sensitivity_list) begin: group_name   local_variable_declarations;   statements; end
Giải thích:
- type_of_block: có thể là khối initialhoặcalways (2 khối này mình sẽ giới thiệu ở bài sau)
- sensitivity_list: là độ nhạy hay xung clock, chỉ có trong khối always.
- Group name: đặt tên của khối begin-end và có thể có hoặc không. Thông thường thì mình không dùng nhiều. Chú ý nếu bạn không đặt tên cho khối begin-end thì sau begin sẽ không có dấu “:”.
- local_variable_declarations: Khai báo các biến chỉ sử dụng trong khối begin-end.
- Statements: Các câu lệnh của bạn.

3, fork-join
- Những câu lệnh trong khối fork-join sẽ được thực hiện một cách đồng thời hay song song.Khối fork-join thường được sử dụng nhiều trong chương trình mô phỏng. Giá trị trì hoãn của mỗi câu lệnh là thời gian mô phỏng được tính từ khi luồng điều khiển bước vào khối fork-join cho đến hết câu lệnh đó. Điều khiển chương trình sẽ thoát ra khỏi khối khi câu lệnh có thứ tự cuối cùng theo thời gian (giá trị trì hoãn lớn nhất) được thực thi.

- Cú pháp chung của fork-join như sau:
Mã:
type_of_block@(sensitivity_list)  fork statement1;   statement2;   ---- join

Giải thích:tương tự như khối begin-end.
ki.png

Chú ý:
Bên trong khối begin-end có thể chèn thêm khối fork-join và ngược lại.Tùy yêu cầu bài toán mà chúng ta kệp hợp hai khối lại để hiệu quả cao hơn.

3, Một số ví dụ khác:
[​IMG]
[​IMG]
 

Related Articles

Chat Zalo