Posts

Showing posts with the label Fpga

RTL design_blocking and non blocking

Image
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. Blocking vs Non Blocking (source: Internet) 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;  ...

Fpga_start from 0

Image
 Fpga là gì?  Cái này các bạn tra wiki để biết rõ thêm chi tiết. Với mình nôm na thì fpga cũng là một loại chip điều khiển, ta có thể lập trình cho nó hoạt động theo ý mình muốn. Tất nhiên chưa bàn đến ngôn ngữ, tính năng... Song song với FPGA bạn sẽ hay được nghe thêm từ khoá Asic. Vậy Asic là gì? Theo ngôn từ nôm na của tôi thì nó cũng là một loại chip điều khiển nhưng ta không thể lập trình cho nó một cách tuỳ tiện. Các tính năng của nó đã được cố định, bạn chỉ có thể thay đổi nội dung các thanh ghi điều khiển để chip chuyển các mode hoạt động. Vậy tại sao FPGA lại liên quan đến Asic? Có nhiều lý do nhưng theo mình có 3 lý do chính sau: 1. Cả 2 đều hoạt động và hình thành ở mức cổng logic. ( flip flop, and, or...) 2. Đều lập trình trên ngôn ngữ Hardware Description Language. Verilog hoặc VHDL. 3. Trong quy trình sản xuất Asic, người ta hay dùng FPGA để kiểm thử hoạt động của thiết kế. Giá thành của FPGA thường cao hơn vì nó là một chip mang dung lượng số cổng logic lớn, giú...