RTL design_blocking and non blocking
Thiết kế mạch logic bằng lập trình thường được gọi tắt là RTL code (Register Transfer Level code). Thiết kế này được viết bằng ngôn ngữ HDL (hardware description language) bao gồm hai hệ ngôn ngữ là Verilog và VHDL. Verilog thì gần với software và hiện được dùng phổ biến hơn. Các bái viết sẽ sau này sẽ diễn đạt và giải thích trên ngôn ngữ Verilog.
Cách viết Blocking và Non Blocking, sự khác biệt là gì?
Đây là câu hỏi rất hay được dùng trong các cuộc phỏng vấn.
1. Về syntax:
Blocking biểu thị là dấu "="
Non blocking biểu thị là "<="
2. Về hoạt động:
●Blocking: giống như software, câu lệnh sẽ được xảy ra tuần tự từ trên xuống dưới.
Ví dụ:
a = 5;
b = 7;
Với cách viết này, khi có trigger xảy ra biến "a" sẽ được gán bằng 5 xong sau đó biến "b" sẽ được gán bằng 7.
●Non blocking: Điểm khác biệt là các xử lý sẽ được xảy ra ngay lập tức và đồng thời.
Ví dụ:
a <= 5;
b <= 7;
Với cách viết này, khi có trigger xảy ra biến "a" sẽ được gán bằng 5 và biến "b" sẽ được gán bằng 7 cùng lúc với nhau.
Việc ghi nhớ 2 cách viết này rất quan trọng trong thiết kế RTL. Nó giúp bạn nắm và hiểu được sự chuyển động của tín hiệu trong mạch.
Comments
Post a Comment