Đặt lại: đồng bộ so với không đồng bộ


15

Tôi đã làm việc với fpgas trong nhiều năm và luôn sử dụng các bộ đặt lại đồng bộ cho mọi bộ phận (cần nó) trong các mạch của tôi. Nó giúp mạch được thiết lập lại toàn cầu ở một chu kỳ xung nhịp nhất định.

Tuy nhiên, tôi được cho biết rằng trong các mạch ASIC, mọi người có xu hướng sử dụng thiết lập lại không đồng bộ ở mọi nơi. Tôi tự hỏi tại sao, và nếu đó là trường hợp trong một số thiết kế fpga quá. Tôi rất thích nghe ý kiến ​​chuyên nghiệp.

Cảm ơn

Câu trả lời:


11

Dường như có rất nhiều quan điểm về điều này.
Khẳng định không đồng bộ, khẳng định đồng bộ được cho là thực hành tốt. Điều này tránh được vấn đề đồng hồ không chạy (hoặc chạy quá chậm để thu tín hiệu đặt lại) khi xác nhận đồng bộ và khả năng di chuyển có thể xảy ra khi xác nhận không đồng bộ.

Bạn sẽ sử dụng bộ đồng bộ hóa thiết lập lại (hai FF) với đầu ra được gắn với phần còn lại của thiết kế đặt lại:

Cài lại

Vài cuộc thảo luận:
Đặt lại đồng bộ hóa và đồng bộ hóa Đặt lại
Thư trên Đồng bộ hóa so với Đặt lại Async


Làm thế nào để yêu cầu thiết lập / giữ thời gian giữa việc phát hành tín hiệu đặt lại chốt và đồng hồ của nó so với các yêu cầu cho đầu vào dữ liệu? Tôi sẽ cảm thấy thoải mái hơn nếu các chốt trong hệ thống nhìn thấy sự kết thúc của tín hiệu đặt lại xảy ra ở cạnh đồng hồ không hoạt động. Việc phát hành thiết lập lại không đồng bộ trên cạnh đồng hồ hoạt động có được đảm bảo không ảnh hưởng đến chu kỳ xảy ra không?
supercat

Không, việc phát hành thiết lập lại không đồng bộ không được đảm bảo sạch sẽ do thời gian khôi phục cần thiết (như thiết lập / giữ) Đây là lý do tại sao bạn sẽ phát hành thiết lập lại đồng bộ.
Oli Glaser

Câu hỏi của tôi là liệu có một latch1 giải phóng tín hiệu đặt lại cho latch2 trên cùng một cạnh đồng hồ như latch2 sẽ sử dụng hoàn toàn hay không, tức là thời gian lan truyền tối thiểu từ đồng hồ của latch1 đến đầu ra của nó có đáp ứng yêu cầu giữ cho đầu vào thiết lập lại của latch2 không. BTW, bạn nghĩ gì về câu trả lời của tôi ở trên? Mạch bạn đã vẽ cung cấp rất ít khả năng miễn dịch cho các xung runt trên dòng thiết lập lại, khi gần như có thể miễn nhiễm hoàn toàn.
supercat

Sau khi xem xét thêm, người ta có thể thêm sự bảo vệ khỏi các xung runt bằng cách thêm một chốt thứ ba và có tín hiệu đặt lại không đồng bộ của nó là một phiên bản bị triệt tiêu của tín hiệu được cấp cho hai tín hiệu đầu tiên, sao cho tín hiệu bị nhiễu không đồng bộ ở chốt thứ ba sẽ bị nhiễu đảm bảo để thiết lập lại sạch sẽ hai cái đầu tiên. Xung runt trên đầu vào thiết lập lại có thể khiến dòng thiết lập lại chính trong chip có được xung runt, nhưng nếu xung đó xảy ra, nó sẽ được theo sau bởi xung đặt lại đồng bộ.
supercat

Xin lỗi, tôi nghĩ rằng tôi thấy những gì bạn có nghĩa là bây giờ. Nếu bạn có nghĩa là đầu ra từ chốt thứ hai trong bộ đồng bộ hóa để thiết lập lại FF hệ thống, thì tôi hiểu là thời gian phục hồi thiết lập lại thường ít hơn thời gian thiết lập dữ liệu cho cùng một FF, vì vậy nó sẽ ổn. Tôi đồng ý về các xung runt, nó không cung cấp miễn dịch cho những người không có cái gì đó như bạn đề nghị được thực hiện.
Oli Glaser

7

Tôi sẽ ưu tiên thiết lập lại không đồng bộ so với thiết lập lại đồng bộ vì một số lý do (không theo thứ tự cụ thể):

  • Thêm một bộ không đồng bộ hoặc chức năng đặt lại vào một flip-flop có thể sẽ dẫn đến một thiết kế nhỏ hơn do tích hợp logic vào một ô duy nhất (so với một flip-flop không thể đặt lại với một cổng AND trên đầu vào)
  • Ít cổng hơn dẫn đến hệ thống dây điện / địa điểm và tuyến đường ít tắc nghẽn
  • Đây là một quy trình đơn giản / dễ dàng hơn để thiết lập lại chip (thân thiện với người dùng / kiểm tra hơn)
  • Làm cho đường dẫn thiết lập lại không đồng bộ đơn giản hóa phân vùng phân tích thời gian tĩnh của tín hiệu đặt lại
  • Thiết lập lại đồng bộ sẽ thêm logic bổ sung vào đường dẫn quan trọng của luồng dữ liệu và làm cho việc đáp ứng các yêu cầu thiết lập và giữ khó khăn hơn
  • Trong khi một FPGA có chức năng logic tùy ý đầu vào 4-6 trên đầu vào, bạn "trả" cho mỗi đầu vào vào một cổng trên ASIC (nhiều đầu vào = cổng lớn hơn; hàm phức tạp = nhiều cổng)

Cuối cùng, tôi không nghĩ bất kỳ vấn đề nào trong số những vấn đề này là điểm dừng hiển thị, nhưng chúng chắc chắn sẽ góp phần vào việc ưu tiên mạnh mẽ cho việc thiết lập lại không đồng bộ trên ASIC.


2
Một mối nguy hiểm khi sử dụng việc đặt lại các bộ không đồng bộ vào logic bên trong của một người là xung nhịp trên đầu vào thiết lập lại có thể phá hỏng bất kỳ và tất cả các cách thức tàn phá. Nếu một người sẽ cho phép thiết lập lại mạch một cách không đồng bộ, thì người ta phải thiết kế mạch đầu vào theo cách để đảm bảo rằng bất kỳ xung đặt lại nào đủ để có thể khiến bất kỳ loại thiết lập lại không đồng bộ nào đến được mạch bên trong cũng sẽ được đảm bảo thiết lập lại đồng bộ xảy ra.
supercat

4

Thiết lập lại không đồng bộ với khử xác nhận đồng bộ hoạt động rất tốt. Như đã đề cập ở trên, các nút đặt lại không đồng bộ nhỏ hơn và không yêu cầu đồng hồ hoạt động để đảm bảo đặt lại, do đó bạn có thể buộc một bộ phận được đặt lại (thường là trạng thái năng lượng thấp đã biết) chỉ bằng nguồn và một pin hoặc dây cứng duy nhất khi thiết lập lại.

Nếu bạn thực sự muốn tìm hiểu sâu về vấn đề này, bạn có thể đọc qua các bài báo của Cumming về điều này, đặc biệt:

http://www.sunburst-design.com/ con / CummingsSNUG2003Boston_Resets.pdf

Chúc mừng.


Một vấn đề tôi nghĩ rằng ông Cummings bỏ lỡ trong bài báo của mình là trong khi các máy dò trục trặc có thể triệt tiêu những gì sẽ là xung thô, chúng cũng có thể biến xung có độ dài hợp pháp thành xung thô. Hiệu quả của việc này là một xung có độ dài vừa phải có thể tùy ý chặn trạng thái hệ thống mà không gây ra thiết lập lại thích hợp. Vì nó là rất khó khăn để tránh metastability trong mọi trường hợp mà không cần kích đúp đồng bộ, tôi sẽ đề nghị có hai mạch async-chụp, một trong số đó có một tiêu chuẩn 'khắt khe' trục trặc động phát hiện, và sau đó ...
supercat

... Sắp xếp mọi thứ sao cho một trục trặc ngắn có thể hoặc không thể thiết lập lại xảy ra một hoặc hai chu kỳ sau đó, nhưng một xung đủ dài sẽ gây ra thiết lập lại ngay lập tức. Ngoài ra, trong khi sử dụng đầu vào 'async reset' trên flip flop có thể hỗ trợ tổng hợp trong một số cấu trúc liên kết, điều đó không có nghĩa là chúng phải được sử dụng không đồng bộ. Có thể hữu ích khi hầu hết các tín hiệu đặt lại bên trong được đồng bộ hóa với đồng hồ ngay cả khi lái các đầu vào "đặt lại không đồng bộ" trên các chốt.
supercat

Cummings không nói bộ lọc trục trặc "là xấu xí." Tôi chưa bao giờ thấy một trong các IC tôi đã làm việc. Chúng tôi có xu hướng sử dụng các trình kích hoạt Schmitt tại tất cả các ô đệm đầu vào để tránh những vấn đề này và các bộ khởi động lại nguồn mà tôi sử dụng cũng được làm sạch tương tự. Nhân tiện, trong trường hợp nào bạn sẽ có các xung ngắn trên đường đặt lại? Tôi đã thấy điều này trong một số tình huống thử nghiệm quét, nhưng chúng vẫn theo thứ tự như chu kỳ đồng hồ dài, không phải là xung ngắn có chủ đích. Trong bình luận cuối cùng của bạn, việc xác nhận lại thiết lập lại phải được đồng bộ hóa với đồng hồ để tránh vi phạm s / h trên thiết lập lại và đảm bảo tất cả các thiết lập lại thoát flops trên cùng một cạnh.
hỗn hợp_signal_old

Các bộ lọc trục trặc thường hữu ích để xác định loại đầu vào nào có thể gây ra tính di động, nhưng chúng không loại bỏ các trạng thái siêu bền. Mục tiêu với bộ lọc trục trặc phải là để đảm bảo rằng bất kỳ trạng thái siêu bền nào có thể xảy ra đều trong tình huống "không quan tâm". Đôi khi, cần có một thiết bị có khả năng đặt lại thiết bị khác được cắm vào thiết bị đó. Trừ khi dây đặt lại được đồng bộ hóa hai lần, sẽ có nguy cơ xung nhịp từ các sự kiện ESD gần đó và các sự cố khác.
supercat

Về điểm cuối cùng, tôi chỉ đơn thuần nói rằng thậm chí một người đang tổng hợp một thiết kế trên phần cứng cung cấp đầu vào thiết lập lại async "miễn phí" trên flip flop, điều đó không có nghĩa là người ta không thể đồng bộ hóa hoàn toàn tín hiệu với đồng hồ chính trên cả hai khẳng định và phát hành. Các tín hiệu hướng ra ngoài có thể phải phản ứng không đồng bộ với đầu vào đặt lại, nhưng điều đó không có nghĩa là người ta cần phải thiết lập lại không đồng bộ tất cả các chốt của một người. Thật vậy, để tránh các trạng thái không nhất quán, có thể hữu ích khi chỉ có tất cả ngoại trừ hai chốt trong thiết kế của một người là đồng bộ.
supercat

2

Một cách tiếp cận khác, dường như thậm chí còn an toàn hơn so với cách tiếp cận 'phát hành đồng bộ / xác nhận đồng bộ', là có một trình phát hiện thiết lập lại không đồng bộ (giống như được mô tả ở nơi khác, với 'phát hành' không đồng bộ và 'phát hành đồng bộ'), nhưng có đầu ra từ cổng đó bất kỳ thiết bị I / O hướng ra ngoài nào mà không đặt lại không đồng bộ bất cứ thứ gì (ngoại trừ chốt trong máy dò). Nếu một sử dụng hai bộ phát hiện thiết lập lại không đồng bộ, một cho các dòng I / O và một để cung cấp cho bộ phát hiện thiết lập lại đồng bộ và nếu một thiết kế cho một bộ phát hiện các dòng I / O để nó sẽ chỉ bị ngắt bởi các xung đặt lại đủ âm thanh đáng tin cậy vấp phải bộ dò chính, người ta có thể tránh được việc đầu ra bị trục trặc trong trường hợp không thiết lập lại CPU. Lưu ý rằng nếu thực hiện điều này, xung đặt lại có độ dài hợp pháp sẽ đặt lại các đầu ra không đồng bộ,

Một điều khác cần xem xét là các hệ thống thường có một số thanh ghi không bị ảnh hưởng bởi thiết lập lại. Nếu thiết lập lại không đồng bộ có thể chạm vào mạch ghi vào các thanh ghi đó, thì có thể một xung đặt lại đến không đúng lúc để ghi đè các thanh ghi đó, ngay cả khi đó là xung sạch (không phải là runt). Ví dụ: nếu mã đang cố ghi vào địa chỉ 1111 và thiết lập lại không đồng bộ xuất hiện ngay trước khi xung đồng hồ buộc một trong các địa chỉ chốt về 0 giống như xung đồng hồ đang đến, điều đó có thể gây ra lỗi ghi vào địa chỉ 1110. Trong khi người ta có thể sử dụng nhiều dòng thiết lập lại nội bộ với độ trễ tổ hợp để đảm bảo rằng ghi ghi đã bị vô hiệu hóa trước khi địa chỉ bị ghi đè, sử dụng logic thiết lập lại nội bộ đồng bộ để tránh vấn đề hoàn toàn.

BTW, đây là một mạch minh họa khái niệm. Gần góc dưới bên trái là hai đầu vào logic để đặt lại. Một cái sẽ tạo ra một xung đặt lại "sạch" và cái còn lại sẽ tạo ra một xung thực sự khó chịu. Đèn LED màu vàng cho biết thiết lập lại hệ thống chính; đèn LED màu lục lam cho biết I / O cho phép. Nhấn vào thiết lập lại sạch sẽ gây ra "thiết lập lại" đầu ra ngay lập tức; nhấn thiết lập lại icky sẽ gây ra thiết lập lại đầu ra bị trì hoãn hoặc khiến chúng không bị ảnh hưởng (trong trình giả lập, không có cách nào để gây ra trường hợp 'để chúng không bị ảnh hưởng').


Tôi nghĩ rằng điều này nghe có vẻ là một ý tưởng tốt. rất nhiều sắc thái của màu xám với những thứ tưởng chừng đơn giản như thiết lập lại.
Oli Glaser

0

Là một kỹ sư giàu kinh nghiệm ( 3 năm với thiết kế đồ họa và hệ thống nhúng ), tôi nói với bạn rằng bạn cần kiểm tra bảng dữ liệu và hướng dẫn sử dụng của FPGA. Nó không phải là một câu trả lời đơn giản.

Bạn phải biến FIT thiết kế của mình thành loại FPGA mà bạn đã chọn. Một số đồ họa có FlipFlops được thiết kế để đặt lại Async, một số được thiết kế để đặt lại Sync.

Bạn phải kiểm tra hướng dẫn sử dụng FPGA để biết loại FlipFlops nào bạn có.

Người triển khai / Mapper sẽ chọn các tuyến dành riêng cho thiết lập lại của bạn ( mã có thể chạy ở tần số cao hơn và chiếm ít không gian hơn ) nếu bạn khớp mã của mình với loại nguyên thủy của FPGA.

Thiết kế của bạn sẽ hoạt động trong bất kỳ trường hợp nào , nhưng đôi khi Trình triển khai đồ họa sẽ cố gắng làm cho logic của bạn hoạt động ( thêm logic hơn ), nhưng điều đó sẽ gây ra tần số tối đa thấp hơn và / hoặc nhiều nguồn tài nguyên hơn.

Ví dụ: đã thử nghiệm với ZYNQ của Xilinx ( FPGA được thiết kế để thiết lập lại đồng bộ - xem hướng dẫn sử dụng nguyên thủy ). Bằng cách thay đổi thiết lập lại từ không đồng bộ thành đồng bộ hóa , tần số ổn định tối đa đã tăng từ 220 MHz đến 258 MHz và do đó tôi đã vượt qua biên độ tần số của mình.

Ngoài ra tôi có thể thêm rằng Người triển khai không biết tín hiệu đồng hồ và đặt lại là gì. Nó gán các chân flipflop cho các tín hiệu theo thứ tự, không phải theo tên. Vì vậy, trong một số FPGA, người triển khai chọn tín hiệu đầu tiên sau khi "process () bắt đầu" trong VHDL làm đồng hồ, trong một số là thiết lập lại, tùy thuộc vào mức độ mà trình triển khai được đặt thành.


Tôi không đồng ý với tuyên bố của bạn rằng "Người triển khai không biết tín hiệu đồng hồ và đặt lại là gì". Các công cụ tổng hợp suy ra đồng hồ nào và được thiết lập lại bằng cách sử dụng chúng. Tín hiệu đồng hồ được sử dụng với thông số kỹ thuật cạnh, thiết lập lại thì không. Hơn nữa, bất kỳ flip-flop nào cũng có thể được sử dụng với thông số đặt lại đồng bộ và, như bạn đã quan sát, điều này thường dẫn đến các đường dẫn quan trọng nhanh hơn.
Joe Hass
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.