Khi nào thì sử dụng chốt tốt hơn so với flip-flop trong một FPGA hỗ trợ cả hai?


20

Câu hỏi:

Khi nào thì sử dụng chốt tốt hơn so với flip-flop trong một FPGA hỗ trợ cả hai?

Lý lịch:

Một nguyên tắc nổi tiếng là nên tránh các chốt trong suốt có độ nhạy trong mức độ trong các đồ họa và nên sử dụng các flip-flop nhạy với cạnh. Hầu hết các kiến ​​trúc FPGA thực sự hỗ trợ cả chốt và flip-flop.

Lời khuyên chung - ngay cả từ các nhà cung cấp đồ họa - là coi chừng chốt, hoặc không bao giờ sử dụng chốt, v.v ... Có những lý do rất chính đáng cho lời khuyên này, các chi tiết đều được biết đến. Tuy nhiên, hầu hết các lời khuyên đều được thực hiện, "đừng sử dụng chốt trừ khi bạn biết bạn cần chúng".

Tôi là một nhà thiết kế đồ họa có kinh nghiệm và trong nhiều năm tôi nghĩ rằng tôi biết rằng tôi cần một cái chốt, nhanh chóng nhận ra rằng có một cách tốt hơn để làm điều đó với dép xỏ ngón. Tôi quan tâm đến việc nghe các ví dụ về việc sử dụng chốt là tốt hơn hẳn.

Lưu ý quan trọng:

Chốt so với dép xỏ ngón thường khiến mọi người nổi giận. Tôi chỉ quan tâm đến câu trả lời cho câu hỏi. Các phản hồi giải thích sự khác biệt giữa chốt và flip-flop, lý do hết sức để sử dụng KHÔNG sử dụng chốt, nêu chi tiết lý do tại sao flip-flop tốt hơn chốt, nói về cách chốt tốt hơn trong các mục tiêu không phải là đồ họa, v.v., sẽ hoàn toàn lạc đề.


Khi bạn đang sử dụng một FPGA để bắt chước chính xác một mạch hiện có sử dụng chốt?
Majenko

Câu trả lời:


11

Câu hỏi của bạn về cơ bản là "khi nào bạn biết bạn cần chốt?" Mà, như bạn ngụ ý, là một câu hỏi chủ quan. Mong đợi nhiều ý kiến ​​hơn thực tế là câu trả lời. Điều đó đang được nói, đây là ý kiến ​​của tôi:

Tôi cũng như bạn, thường tìm ra những cách tốt hơn để sử dụng dép xỏ ngón do đó tránh được chốt. Logic kết quả thường thanh lịch và mạnh mẽ hơn. Nhưng có những lúc tôi không có đủ quyền kiểm soát logic để tránh chốt. Ví dụ, tôi có thể giao tiếp với bus bộ xử lý yêu cầu chốt để đáp ứng các thông số kỹ thuật mong muốn. Vì tôi không thể thiết kế lại CPU hoặc xe buýt, tôi bị kẹt với chốt.

Trong hơn 13 năm qua, đó là lần duy nhất tôi cần chốt.


2
Cảm ơn câu trả lời. Tôi tinh thần nộp phản hồi của bạn theo "khả năng tương thích ngược bắt buộc", có vẻ hoàn toàn hợp lý. =)
wjl

8

Dép xỏ ngón thường được ưa chuộng hơn chốt vì chúng chỉ có bốn điều kiện / ràng buộc chủng tộc:

  1. thời gian thiết lập giữa một thay đổi đối với đầu vào dữ liệu và cạnh đồng hồ hoạt động sau và
  2. giữ thời gian giữa một cạnh đồng hồ và thay đổi tiếp theo cho đầu vào dữ liệu;
  3. thời gian xung đồng hồ hoạt động tối thiểu;
  4. thời gian xung đồng hồ không hoạt động tối thiểu.

Nếu những hạn chế đó được đáp ứng, đầu ra của một flip flop sẽ hoàn toàn "sạch" và không có wonkiness. Hơn nữa, thời gian của một flip flop theo nghĩa "kỹ thuật số": được cung cấp các ràng buộc thời gian được cung cấp, đầu ra sẽ chỉ thay đổi trong một cửa sổ dự đoán sau khi cạnh đồng hồ hoạt động, bất kể thời gian đầu vào. Do đó, hiệu quả của dép lật tầng là có thể dự đoán được, bất kể độ sâu. Ngược lại, thời gian của một đầu ra chốt là "tương tự" hơn nhiều. Một độ trễ trên tín hiệu đi vào chốt có thể gây ra độ trễ trong tín hiệu phát ra. Ngay cả khi các ràng buộc riêng của chốt được đáp ứng, sự chậm trễ này có thể gây ra vấn đề ở hạ lưu.

Tôi sẽ khuyên bạn nên sử dụng chốt trong trường hợp hành vi bắt buộc của đầu ra của chip có thể được mô hình hóa hợp lý nhất bởi một. Ví dụ, phần cứng của một người được cho là hoạt động như một bộ chuyển đổi nối tiếp song song trong đó, giữa các cạnh tăng và giảm của đồng hồ đầu tiên sau khi đồng bộ khung, đầu ra đầu tiên theo dõi đầu vào; giữa các cạnh tăng và giảm của đồng hồ thứ hai, đầu ra thứ hai theo dõi đầu vào, v.v. Người ta có thể thiết kế một mạch bằng cách sử dụng flip flop và logic tổ hợp thuần túy sẽ mang lại hành vi như vậy với các ràng buộc về thời gian được đáp ứng, nhưng một mạch như vậy sẽ nhiều hơn phức tạp hơn một lần sử dụng chốt và sẽ dễ bị hành xử kỳ quặc hơn nếu không đáp ứng được các hạn chế về thời gian.


3
"Các phản hồi giải thích sự khác biệt giữa chốt và flip-flop, lý do hết sức để sử dụng KHÔNG sử dụng chốt, nêu chi tiết tại sao flip-flop tốt hơn chốt, nói về cách chốt tốt hơn trong các mục tiêu không phải là đồ họa, v.v., sẽ hoàn toàn lạc đề . "
Majenko

@supercat Ít nhất phần thứ hai trong câu trả lời của bạn không có câu trả lời phù hợp cho câu hỏi. =) Cảm ơn bạn.
wjl

1
@Majenko: Có lẽ tôi nên nói "dễ sử dụng hơn" hơn là "thích hợp hơn"; Quan điểm của tôi không phải là tranh luận rằng người ta nên tránh chốt bất cứ khi nào có thể, mà là để gợi ý rằng ai đó sử dụng chốt cần phải nhận thức được sự phức tạp.
supercat

@supercat, bạn có thể vui lòng làm rõ ví dụ của bạn với một wavetrace ngắn không?
Philippe

1

Trong công việc của tôi đôi khi tôi đã phải thực hiện các chốt trong FPGA, nhưng nó luôn là giải pháp "giải pháp cuối cùng". Các ứng dụng điển hình bao gồm các kết nối với giao diện hoặc xe buýt không đồng bộ, nếu tôi không thể đảm bảo đồng hồ có tốc độ đủ để đảm bảo lấy mẫu và đồng bộ hóa đúng các tín hiệu điều khiển và xe buýt.

Vấn đề chính là chốt là một khối không đồng bộ. Do đó, bạn phải đảm bảo rằng các hàm tổ hợp tạo tín hiệu đầu vào cho chốt là không có chủng tộc . Nếu không, chúng có thể tạo ra các trục trặc , có thể bị khóa, gây nguy hiểm trong hệ thống của bạn.

Để tránh các chủng tộc, bạn phải thực hiện các chức năng tổ hợp này theo cách thức đặc biệt. Thật không may (trong trường hợp cụ thể này ;-), nếu không thì đó là một đặc tính rất tốt), các công cụ tổng hợp FPGA tối ưu hóa thiết kế của bạn loại bỏ tất cả sự dư thừa. Do đó, nếu bạn muốn thực hiện chốt trong FPGA, bạn phải triển khai "bằng tay" và bảo vệ chống tối ưu hóa (ví dụ: trong VHDL, bạn có thể cần phải đặt thuộc tính "giữ" thành "đúng" cho các tín hiệu được sử dụng bên trong chốt của mình) .


-1 OP đặc biệt hỏi về thời điểm bạn nên sử dụng chốt và đặc biệt yêu cầu độc giả không đưa ra thêm lý do rằng không nên sử dụng chốt .
Joe Hass

-1

Về mặt thời gian:

Nếu chúng ta đang sử dụng dép xỏ ngón trong một thiết kế thì hiệu suất phụ thuộc vào độ trễ đường dẫn tổ hợp dài nhất.

nếu chúng ta sử dụng chốt thay cho dép xỏ ngón, chúng ta có thể bù lại độ trễ đường dẫn kết hợp dài nhất bằng cách mượn thời gian từ độ trễ đường dẫn ngắn hơn trong các giai đoạn tiếp theo. Với điều này, chúng tôi có thể giảm sự chậm trễ và tăng hiệu suất của thiết kế.


3
-1. Tốt hơn là phân tích nó đúng cách với một ràng buộc nhiều bánh xe và cho phép phần "không đồng bộ" chạy qua hai chu kỳ. Xem ví dụ: trang 7-30 của activa.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc
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.