VHDL có thể làm hỏng đồ họa


22

Tôi đã đọc ở đâu đó rằng mã VHDL xấu có thể dẫn đến thiệt hại cho đồ họa.

Thậm chí có thể làm hỏng một FPGA với mã VHDL? Những loại điều kiện sẽ gây ra điều này và các trường hợp xấu nhất là gì?


2
Kịch bản duy nhất tôi có thể nghĩ đến là về một thiết kế có nhiều, rất nhiều FF được đặt xung nhịp để làm nóng đồ họa.
Claudio Avi Chami

Vâng, nó có thể được kết hợp trong một mạch được thiết kế kém, nó sẽ chạy một số dòng xung quanh việc đốt các thứ nếu không được lập trình đúng.
Eugene Sh.

3
trường hợp xấu nhất có lẽ là fpga được sử dụng cho máy học và tạo ra một AI giả mạo phá hủy thế giới và vũ trụ. nghiêm trọng hơn, nếu bạn đang sử dụng mã không được kiểm tra trong một fpga được kết nối với máy tính, nó có thể lây nhiễm máy tính nói trên. ngoài ra nếu nó được sử dụng để điều khiển các thiết bị công suất cao, bạn có thể đốt cháy một tòa nhà.
satibel

Câu trả lời:


25

Thêm vào câu trả lời của @ Anonymous, có những thiết kế bạn có thể xây dựng có thể làm hỏng kết cấu của một đồ họa.

Đối với người mới bắt đầu, nếu bạn xây dựng một thiết kế rất lớn bao gồm số lượng lớn các thanh ghi (ví dụ 70% của FPGA), tất cả đều ở mức gần tần số tối đa của các GPU, có thể làm nóng silicon đáng kể. Nếu không làm mát đầy đủ, điều này có thể gây ra thiệt hại vật lý. Chúng tôi đã mất một chiếc GPU trị giá $ 13k vì nó quá nóng do bộ dev-kit có hệ thống làm mát khủng khiếp.

Một trường hợp đơn giản hơn có thể là các vòng lặp tổ hợp. Ví dụ: nếu bạn khởi tạo ba cổng không được nối với nhau trong một vòng và vô hiệu hóa hoặc bỏ qua các cảnh báo tổng hợp về cấu trúc như vậy, bạn có thể tạo thành một cái gì đó rất tệ cho một đồ họa. Trong ví dụ này, bạn sẽ tạo ra một bộ dao động đa GHz có thể tạo ra rất nhiều nhiệt trong một khu vực rất nhỏ, có thể làm hỏng ALM và logic xung quanh.


1
Các vòng kết hợp đôi khi được đề xuất là các trình tạo số ngẫu nhiên thực. Tôi không có kinh nghiệm với bộ dao động vòng , nhưng tôi nghi ngờ chỉ có ba cổng sẽ gây hại. Lái xe đầu ra của nó đến nhiều cổng có thể sẽ làm hại mặc dù.
Andreas

7
Bây giờ tôi có 2-3 bảng vô dụng vì lỗi thiết kế với spartan 6 trên chúng. Tôi sẽ thử cái này: P
AntoineLev

Cũng có thể tải một luồng bit ngăn chặn tải các luồng bit khác, hoặc ít nhất làm cho nó khá khó thực hiện.
Vladimir Cravero

8

Mã không phải là một từ đúng trong bối cảnh này. Trong khi Verilog hoặc VHDL trông giống như chương trình, đầu ra của trình biên dịch là một cấu hình được nạp vào chip FPGA hình thành mạch điện tử bên trong nó.

Hai loại đến với tâm trí của tôi:

  • thiệt hại vật lý: ví dụ, một số chân FPGA được kết nối với nhau (hoặc với một thiết bị khác) và bắt đầu xuất ra điện áp logic khác nhau cùng một lúc. Dòng chảy - có thể là dòng điện quá mức - cuối cùng làm hỏng cổng (s);
  • thiệt hại logic: mạch có thể xử lý chip flash hoặc thiết bị cấu hình không đúng cách và hình ảnh dữ liệu bị hỏng trong đó, toàn bộ thiết bị này cuối cùng bị trục trặc.

4
Chủ đề về thiệt hại vật lý có thể là nơi trích dẫn của OP. Là một nhà phát triển phần mềm, tôi đã được nói với một quy tắc chung là "phần mềm" không thể gây hại vật lý cho thiết bị trong khi "phần sụn" có thể gây ra thiệt hại, chẳng hạn như kết nối hai thợ lặn với nhau.
Cort Ammon - Tái lập Monica

2
@CortAmmon "chẳng hạn như kết nối hai thợ lặn với nhau" - Đây là gì, một công tắc kết nối chéo ống khí?
dùng253751

1
@immibis Bạn hiểu ý tôi rồi! Nguyên tắc thực tế là "không dựa trên phần mềm / squishyware trong đầu của bạn bè của bạn trong khi bạn thở, thay vì lúc nào cũng có một công ty nắm bắt về điều bạn." ;-)
Cort Ammon - Phục hồi Monica

3

Định cấu hình sai một khối các chân đầu vào vì đầu ra có thể làm điều đó nếu bất cứ điều gì khác đang lái chúng đủ cứng.

Tôi không biết nếu định cấu hình một số chân cho LVDS hoặc một trong các tiêu chuẩn LVCMOS trong khi ngân hàng IO được cấp nguồn từ điện áp quá cao (ví dụ như nguồn 3,3V với tiêu chuẩn IO 1,8V hoặc ngược lại với đầu vào) nó không

Rõ ràng các vấn đề về nhiệt có thể là một khả năng bằng cách làm một cái gì đó ngớ ngẩn như khởi tạo nhiều, nhiều, dao động vòng.


Tiêu chuẩn I / O được đưa ra dưới dạng các ràng buộc đối với thiết kế chỉ dành cho tính toán thời gian. Nếu ngân hàng I / O là ngân hàng 3,3 V và được cung cấp bởi 3,3V thì không có gì xảy ra nếu bạn chọn tiêu chuẩn 1.8 V.
Paebbels

@Paebbels, không chắc chắn bạn đang sử dụng công cụ nào nhưng thông thường khi bạn đặt tiêu chuẩn I / O, nó sẽ điều khiển điện áp của vị trí I / O đó. Nếu một chân đầu vào FPGA được đặt ở mức điện áp thấp hơn nhiều so với những gì thiết bị bên ngoài đang lái vào chân đó, thì đầu vào FPGA đó có thể bị hỏng.
Ciano

@Ciano mà không đúng. Điện áp pin phụ thuộc vào điện áp ngân hàng I / O không bị ràng buộc.
Paebbels

1

Các GPU có thể được cấu hình lại trong thời gian chạy với dòng bit mới (một phần). Thông thường, luồng này được tải từ một nguồn bên ngoài, nhưng bạn cũng có thể tự tạo luồng này trong bản đồ họa (ví dụ: bằng CPU mềm được nhúng). Sử dụng một giải pháp như vậy, ví dụ như di chuyển động các phân lớp con, không cung cấp tất cả các kiểm tra tính nhất quán như được thực hiện bởi các công cụ của nhà cung cấp. Vì vậy, nếu thuật toán của bạn bị hỏng, bạn có thể kích hoạt các bóng bán dẫn đường dẫn sai trong một đồ họa và ghi chúng.

Bạn cũng có thể chọn các chế độ hoạt động sai cho các nguyên hàm FPGA như PLL hoặc máy thu phát.

Cấu hình lại động giống như mã tự sửa đổi trong phần mềm.

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.