Làm thế nào là một biến VHDL được tổng hợp bởi các công cụ tổng hợp


9

Tôi biết hai cách trong đó một biến VHDL được tổng hợp bằng công cụ tổng hợp:

  • Biến tổng hợp dưới dạng logic kết hợp
  • Biến được tổng hợp dưới dạng Latch một cách vô tình (khi một biến chưa được khởi tạo được gán cho tín hiệu hoặc biến khác)

Các cách khác trong đó một biến VHDL có thể được tổng hợp là gì? (Ví dụ: nó có thể được hiểu là FF không?)

Câu trả lời:


8

Tôi sẽ phân biệt ba khả năng:

  1. Một biến VHDL không có đại diện phần cứng nào cả. Giả sử ví dụ sau

    signal a,b,c : integer;  
    ...  
    process ( clk ) is  
    variable var : integer := 0;  
    begin  
    if ( rising_edge(clk) ) then  
    var := a + b;  
    c <= var;  
    end if;  
    end process;

    Biến varkhông thực sự được tổng hợp dưới dạng logic tổ hợp (giả sử đây là ý nghĩa của câu hỏi). Nó đúng hơn là phía bên phải của bài tập a + bđược tổng hợp thành phần cứng. Nói đúng ra một biến không bao giờ được tổng hợp thành logic tổ hợp.

  2. Một biến chỉ giữ một kết quả trung gian, được đánh giá trong cùng một chu kỳ xung nhịp -> không tổng hợp phần cứng (đây là 1) nữa) hoặc được đánh giá trong chu kỳ xung nhịp sau -> một flipflop được tổng hợp.

  3. Một trong những chốt đáng sợ đó được suy ra trong trường hợp các nhánh có điều kiện tồn tại trong đó biến được gán không phải là giá trị mới (tùy thuộc vào một số tín hiệu) cũng như giá trị mặc định. Thông thường trường hợp này xảy ra ngoài ý muốn :-)


"Chốt sợ hãi" chỉ có thể xảy ra bên ngoài một quy trình có đồng hồ và hầu hết mọi người (theo kinh nghiệm của tôi) ngày nay không sử dụng các quy trình không có đồng hồ. Vì vậy, nỗi sợ hãi chốt không còn là vấn đề nữa (IMHO) - nó bắt nguồn từ thời xa xưa khi bạn phải viết logic tổ hợp của mình trong một quy trình riêng cho dép xỏ ngón của bạn
Martin Thompson

4

Nếu bạn sử dụng giá trị trong một biến trước khi bạn lưu trữ nó, bạn sẽ nhận được giá trị được lưu trữ lần trước khi quá trình lưu trữ nó (trong một quy trình có xung nhịp, giá trị từ chu kỳ đồng hồ trước đó). Điều đó được tổng hợp như một thanh ghi hoặc FF.

Tất nhiên, trong chu kỳ đồng hồ đầu tiên, bạn nhận được rác, trừ khi bạn khởi tạo biến trong mệnh đề đặt lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.