Giảm Metastability trong Thiết kế FPGA

Jason Howie
|  Created: Tháng Hai 21, 2017  |  Updated: Tháng Mười Một 11, 2020

Ở đây, chúng ta sẽ xem xét khái niệm về sự không ổn định (metastability) liên quan đến mạch số – và do đó là thiết kế FPGA – và làm thế nào 'sự xuất hiện' của nó có thể được giảm thiểu đáng kể chỉ bằng cách tuân thủ các nguyên tắc thiết kế đã được chứng minh giúp giảm thiểu tác động của nó.

Metastability! Bạn có thể được tha thứ nếu nghĩ rằng điều này có thể liên quan đến tính toàn vẹn của một số bình chứa tương lai, hoặc trường lực: "Sự không ổn định của bộ điều chỉnh dòng chảy warp drive và bao bì cryonic đang đạt đến mức độ nguy kịch, Thuyền trưởng ạ!"

Đối với những ai sống và thở với điện tử số hàng ngày, thuật ngữ này có lẽ sẽ được đón nhận với sự kết hợp giữa khinh bỉ và tôn trọng.

Ở đây, chúng ta sẽ xem xét khái niệm về sự không ổn định liên quan đến một mạch số – và do đó là thiết kế FPGA – và làm thế nào 'sự xuất hiện' của nó có thể được giảm thiểu đáng kể, chỉ bằng cách tuân thủ các nguyên tắc thiết kế đã được chứng minh giúp giảm thiểu tác động của nó.

Giải thích về Sự Không Ổn Định

Metastability liên quan đến các đầu ra của các bộ đăng ký (hoặc flip-flop được kích bởi xung clock trong ngôn ngữ cũ) trong các mạch số và khả năng một đầu ra có thể bước vào ‘trạng thái metastable’. Các thiết bị FPGA thường sử dụng flip-flop loại D. Trước khi xem xét làm thế nào một trạng thái như vậy có thể được nhập vào, việc ôn lại một số yếu tố thời gian cơ bản liên quan đến hoạt động của một bộ đăng ký là một ý tưởng tốt:

‘Thời gian thiết lập’ – đây là thời gian tối thiểu mà đầu vào của bộ đăng ký phải ổn định, trước khi xung clock tiếp theo đến. Thông thường xuất hiện dưới dạng Tsu trong các bảng dữ liệu.

‘Thời gian giữ’ – đây là thời gian tối thiểu sau khi xung clock đến, mà đầu vào của bộ đăng ký phải tiếp tục ở trong cùng một trạng thái ổn định. Thông thường xuất hiện dưới dạng Th trong các bảng dữ liệu.

‘Thời gian Trễ từ Clock đến Đầu ra’ – đây là khoảng thời gian, sau khi xung clock đến, tại điểm đó đầu ra của bộ đăng ký thay đổi. Điều này cũng được gọi là 'thời gian ổn định' hoặc 'độ trễ truyền dẫn' của bộ đăng ký. Có thể xuất hiện trong các bảng dữ liệu dưới dạng, ví dụ, Tco, hoặc Tphl và Tplh.

Khi một tín hiệu di chuyển giữa hai miền xung nhịp không đồng bộ - các mạch con số trong thiết kế tổng thể đang hoạt động trên các xung nhịp khác nhau hoặc không liên quan - có khả năng gặp phải tình trạng không ổn định (metastability). Điều này cũng đúng với việc chuyển dữ liệu từ một khu vực không có xung nhịp của thiết kế vào một hệ thống đồng bộ - ví dụ như tín hiệu bên ngoài được đưa vào một FPGA.

Hình ảnh sau đây minh họa hai ví dụ về tín hiệu không đồng bộ nhập vào một hệ thống đồng bộ. Trong ví dụ trên, một tín hiệu di chuyển giữa các miền xung nhịp khác nhau. Trong ví dụ dưới, một tín hiệu từ hệ thống không có xung nhịp được đưa vào một hệ thống có xung nhịp (đồng bộ).

Asynchronous System and Synchronous System Graphic

Vấn đề phát sinh khi một tín hiệu dữ liệu từ một miền xung nhịp đến logic đăng ký trong một miền xung nhịp khác. Tín hiệu dữ liệu đến từ miền nguồn có thể chuyển đổi bất kỳ lúc nào so với xung nhịp trong miền đích - không có sự đồng bộ giữa hai miền, không biết về tốc độ chuyển tiếp trong hai mạch con logic. Nếu tín hiệu dữ liệu chuyển đổi tại một điểm vi phạm thời gian Đặt trước hoặc Giữ sau yêu cầu cho bộ đăng ký đích, đầu ra của bộ đăng ký đó có thể nhập vào 'trạng thái không ổn định' - một trạng thái mà tín hiệu đầu ra không phải là Low logic, cũng không phải là High logic, mà nằm trong khu vực không ổn định giữa hai trạng thái đó.

Thời gian mà đầu ra tiếp tục ở trạng thái không ổn định có thể vượt quá thời gian ‘Độ Trễ Từ Clock Đến Đầu Ra’ (thời gian ổn định) được quy định của bộ đăng ký. Trong phần lớn các trường hợp, bộ đăng ký sẽ nhanh chóng giải quyết sự không ổn định này và trở về một trong hai trạng thái được định nghĩa (và ổn định). Tuy nhiên, vấn đề đối với một thiết kế là trong số ít trường hợp, khi thời gian để ổn định vào một trạng thái ổn định không đủ nhanh, hoặc tín hiệu đầu ra giải quyết ở mức logic không chính xác.

Hình ảnh sau đây minh họa đầu ra của một bộ đăng ký tùy thuộc vào sự chuyển đổi của tín hiệu dữ liệu đầu vào.

Output of a register

Xét ba đầu vào:

Đầu vào A: Đầu vào tuân thủ thời gian Thiết lập và Giữ của bộ đăng ký và đầu ra có sẵn sau thời gian Độ Trễ Từ Clock Đến Đầu Ra của thiết bị.

Đầu vào B: Đầu vào chuyển đổi trong thời gian Thiết lập của bộ đăng ký, với đầu ra trở nên không ổn định cho đến khi ổn định ở mức đúng ổn định vượt qua thời gian Độ Trễ Từ Clock Đến Đầu Ra.

Đầu vào C: Đầu vào chuyển đổi trong thời gian Giữ của bộ đăng ký, với đầu ra trở nên không ổn định. Không chỉ đầu ra ổn định vào một trạng thái ổn định vượt qua thời gian Độ Trễ Từ Clock Đến Đầu Ra, nó còn ổn định ở mức logic sai!

Nếu đầu ra từ bộ đăng ký (register) cung cấp dữ liệu cho nhiều bộ đăng ký tiếp theo trong mạch – một cách song song – có khả năng là các bộ đăng ký đích này ghi nhận dữ liệu ở các mức logic khác nhau, tùy thuộc vào việc đầu ra không ổn định từ bộ đăng ký nguồn đã ổn định trở lại trạng thái ổn định trước khi mỗi bộ đăng ký đích được đồng hồ hóa để ghi nhận dữ liệu tiếp theo hay không. Độ trễ đường đi giữa bộ đăng ký nguồn và đích, cộng thêm thời gian để đầu ra không ổn định trở nên ổn định, chỉ làm tăng thêm vấn đề.

Tóm lại, không ổn định (metastability) là kẻ thù dựa trên thống kê hoặc xác suất đối với nhà thiết kế. Tùy thuộc vào thiết bị được sử dụng và bố trí mạch trong thiết kế, trạng thái đầu ra không ổn định có thể xảy ra, hoặc không. Nếu chúng xảy ra, chúng có thể gây hại – gây ra sự cố cho thiết kế – hoặc may mắn có thể ở bên bạn và thời gian ổn định của thiết bị, tốc độ đồng hồ và đường dẫn được định tuyến có thể khiến sự xuất hiện của chúng trở nên lành tính. Tuy nhiên, vấn đề đối với nhà thiết kế là bạn có thực sự đủ khả năng để chấp nhận 'cơ hội' đó không? Nếu sản phẩm bạn đang thiết kế là một phần của một hệ thống y tế hoặc một máy bay thương mại – sự cố của thiết kế có thể là thảm họa.

Mặc dù không thể hoàn toàn loại bỏ được sự không ổn định – không có thiết bị nào trên thế giới có thể tuyên bố hoạt động hoàn toàn không chịu ảnh hưởng của hiệu ứng không ổn định tiềm ẩn – nhưng nó có thể được giảm bớt đến mức chỉ còn là một 'dấu hiệu nhỏ trên radar'.

Để đánh giá độ tin cậy của một thiết kế, liên quan đến sự cố không ổn định gây ra, chúng ta nói về điều gọi là Thời Gian Trung Bình Giữa Các Lỗi – hay MTBF. Với sự không ổn định không được kiểm soát – tức là, không có biện pháp nào được áp dụng trong thiết kế để giảm thiểu ảnh hưởng của nó – MTBF có thể chỉ là vài giây. Bằng cách áp dụng các phương pháp thiết kế số đã được kiểm nghiệm để chống lại sự không ổn định, và bằng cách lựa chọn cẩn thận các thiết bị số được sử dụng trong thiết kế, MTBF có thể được tăng lên đáng kể. Một nghìn năm giữa các lỗi. Một triệu năm. Thậm chí một tỷ năm nếu được tính toán và suy luận theo toán học. Với những giá trị MTBF như vậy, một thiết kế có thể được đánh dấu là 'Cực Kỳ Đáng Tin Cậy' hoặc gần như 'Không Thất Bại' (hoặc có thể nói là 'Miễn Thất Bại') – nhưng bạn hiểu ý.

Các phần sau đây sẽ xem xét cách bạn, với tư cách là một nhà thiết kế, có thể mở rộng MTBF, và vai trò của công nghệ thiết bị.

Đồng bộ Hóa Tín Hiệu Bất Đồng Bộ

Có lẽ giải pháp phổ biến và được chấp nhận rộng rãi nhất cho vấn đề không ổn định là việc thêm mạch phía trước để đồng bộ tín hiệu không đồng bộ đến với bộ đếm thời gian của mạch đồng bộ mục tiêu. Trong hình thức đơn giản nhất, mạch này bao gồm một hoặc nhiều flip-flop kiểu D, được nối tiếp với nhau và được đồng hồ hóa bằng bộ đếm thời gian của hệ thống mục tiêu. Điều này được gọi là ‘chuỗi đăng ký đồng bộ hóa’, hoặc đơn giản là ‘bộ đồng bộ hóa’.

Độ trễ bổ sung do mỗi bộ đăng ký tạo ra cho phép tín hiệu đến phục hồi từ bất kỳ trạng thái không ổn định nào mà nó có thể đã nhập vào. Càng nhiều bộ đăng ký trong chuỗi, thì độ trễ càng nhiều và do đó càng nhiều thời gian để một đầu ra không ổn định được giải quyết. Tổng độ trễ thường được biết đến là ‘Thời Gian Ổn Định Không Ổn Định’. Thông thường, mạch đồng bộ hóa sẽ bao gồm hai bộ đăng ký, nhưng đối với các ứng dụng quan trọng – như y tế và quân sự – ba không phải là điều hiếm gặp.

Hình ảnh sau đây minh họa một ví dụ về việc thêm một bộ đồng bộ hóa 2 giai đoạn vào phía trước của một hệ thống đồng bộ, để đồng bộ hóa một tín hiệu không đồng bộ đến.

adding a 2-stage synchronizer to the front-end of a synchronous system

Logic bắt tay giữa các mạch ở các miền xung khác nhau và/hoặc logic FIFO cũng được sử dụng - bổ sung cho việc đồng bộ hóa phía trước - để đảm bảo việc nhận các giá trị dữ liệu chính xác. Điều này đặc biệt quan trọng khi xử lý một nhóm tín hiệu không đồng bộ nhiều dây bus, mỗi tín hiệu trong số đó có thể chuyển đổi bất kỳ lúc nào và độc lập với nhau.

Mắt xích yếu nhất...

Trong một thiết kế số, có thể có nhiều miền xung khác nhau và rất nhiều tín hiệu được truyền qua lại giữa chúng. Ngoài ra, có thể có nhiều tín hiệu bên ngoài, không đồng bộ - được cung cấp từ bên ngoài (đặc biệt là đối với một thiết kế được thực hiện trên FPGA và sử dụng các thành phần ngoại vi và giao diện truyền thông bên ngoài). Trong những trường hợp như vậy, không phải là hiếm khi tìm thấy nhiều chuỗi đăng ký đồng bộ hóa, xử lý các chuyển đổi tín hiệu không đồng bộ khác nhau trong hệ thống tổng thể.

Về mặt MTBF, mỗi chuỗi đồng bộ hóa sẽ có 'giá trị' riêng của nó. Vì tổng tốc độ hỏng của một thiết kế là tổng của các tốc độ hỏng cá nhân cho các chuỗi đồng bộ hóa bên trong, và tốc độ hỏng là 1/MTBF, bạn có thể dễ dàng thấy rằng một chuỗi đồng bộ hóa có MTBF giảm so với các chuỗi khác, sẽ có ảnh hưởng tiêu cực tổng thể đến MTBF cho toàn bộ thiết kế. Thực tế, MTBF cho thiết kế sẽ cơ bản tuân theo MTBF của chuỗi đồng bộ hóa tồi tệ nhất - điều này có thể là thảm họa nếu năm chuỗi có MTBF là một triệu năm và một chuỗi thứ sáu có MTBF là 50 năm!!

Để xử lý điều này, giải pháp là thêm một giai đoạn đăng ký khác vào chuỗi đồng bộ hóa hoạt động kém nhất trong thiết kế, do đó tăng thời gian ổn định metastability và cải thiện đáng kể MTBF cho chuỗi đó - và do đó là toàn bộ thiết kế - đáng kể (nếu không muốn nói là một cách mũi nhọn!).

Công nghệ Thiết bị - Nhanh hơn so với Nhỏ hơn

Để tóm lại, metastability (mặc dù không có gì ổn định về trạng thái này!) xảy ra khi một tín hiệu bất đồng bộ chuyển đổi vi phạm Thời gian Thiết lập và/hoặc Thời gian Giữ của một bộ đăng ký. Tổng thời gian, Thời gian Thiết lập + Thời gian Giữ, cơ bản định nghĩa 'cửa sổ' cho metastability xảy ra - 'cửa sổ metastability' nếu bạn muốn.

Có lý do để tin rằng thời gian Set-Up và Hold càng nhanh của một bộ đăng ký, thì cửa sổ không ổn định càng nhỏ. Thực vậy, các họ logic nhanh hơn thể hiện những thời gian nhanh hơn và do đó giảm khả năng xảy ra sự kiện không ổn định. Nếu một sự kiện không ổn định xảy ra (nhớ rằng không thể hoàn toàn loại bỏ không ổn định), các bộ đăng ký đủ nhanh để phục hồi nhanh chóng. Ví dụ, một bộ đăng ký trong gia đình 74F sẽ dẫn đến MTBF tốt hơn so với một thiết bị được sử dụng từ gia đình 74LS - hai đầu của phổ tốc độ thiết bị.

Với FPGA, sự giảm kích thước quy trình (từ 180nm, qua 90nm và tiến tới 65nm, 40nm và xa hơn) tạo điều kiện cho tốc độ chuyển mạch transistor nhanh hơn - thường cải thiện MTBF do không ổn định. Tuy nhiên, lợi ích của kích thước giảm không phải không có hậu quả tiềm ẩn. Kích thước hình học giảm tự nhiên dẫn đến việc giảm điện áp cung cấp. Trong trạng thái không ổn định, đầu ra từ một bộ đăng ký thường là một nửa điện áp cung cấp. Khi điện áp cung cấp càng nhỏ, sự chênh lệch điện áp giữa đầy đủ và một nửa càng hẹp, dẫn đến việc giảm khả năng khuếch đại của mạch và thời gian dài hơn cho các bộ đăng ký phục hồi từ trạng thái không ổn định.

Nhà cung cấp FPGA thường thực hiện phân tích không ổn định một cách nghiêm ngặt để đảm bảo độ robust chống lại không ổn định trong các thiết bị vật lý sử dụng những kích thước quy trình ngày càng giảm này.

Liên kết Hữu ích

Sử dụng các liên kết sau để truy cập các tài liệu bên ngoài, những tài liệu này cung cấp cái nhìn sâu sắc và chi tiết hơn về hiện tượng metastability và cách ảnh hưởng của nó được làm cho cơ bản không đáng kể trong thiết kế điện tử số. Nhiều tài liệu này đề cập đến các phương trình được sử dụng để tính toán MTBF cho một flip-flop, và MTBF tiếp theo cho toàn bộ thiết kế, và chính chúng cung cấp tham khảo thêm về chủ đề này.

Metastability trong Logic Số (www.interfacebus.com)

FPGA-FAQ 0017: Hãy nói về Metastability (Philip Freidin)

Metastability trong điện tử (Wikipedia)

Metastability là gì? (www.asic-world.com)

Metastability trong Thiết kế (Trang chủ VLSI)

Bản Trắng: Hiểu về Metastability trong FPGA (Altera)

Ghi chú Ứng dụng: Phục hồi Metastable trong FPGA Virtex-II Pro (Peter Alfke, Xilinx)

Ghi chú Ứng dụng: Metastability và Gia đình ECLinPS (Kỹ sư Ứng dụng, ON Semiconductor)

Phản ứng Metastable trong Mạch Logic 5-V (Texas Instruments)

About Author

About Author

Jason Howie is the Head of Technical Writing at Altium. He brings a wealth of technical writing experience and can often be heard rattling the keyboard into the early hours. Prior to joining Altium in May 2000, Jason spent just over 4 years at the Joint European Torus in Oxfordshire, UK, as part of the Machine Instrumentation & Protection Systems.

Related Resources

Tài liệu kỹ thuật liên quan

Back to Home
Thank you, you are now subscribed to updates.