Bir FPGA'yı yanlış programlayarak kırabilir misiniz?


26

Bir FPGA'yı yanlış programlayarak gerçekten bozabilir misiniz ?

Ben gerçekten bir yazılımcıyım. Yazılımınız yanlış ise, her türlü önemli veriyi yok edebileceğiniz ve hatta belki de tüm makineye zarar verebileceğiniz bir sır değil. Ancak bir bilgisayarı yalnızca programlayarak fiziksel olarak zarar vermek gerçekten zordur .

(Halt-and-Catch-Fire talimatının sonsuz bir söylentisi vardır, ya da anakartı tuğlalamak ya da monitörünüzü kızartmak için yanlış değerleri grafik kartına programlamak için sistem donanım yazılımını yeniden aktarabilmek. : söylentiler. Ve uzun zamandır kullanılmayan donanımlar hakkında. Modern bilgisayar donanımlarını kötü programlamayla kırmak gerçekten çok zor görünüyor.)

Bir FPGA ile bireysel devreleri (en azından nominal olarak) birbirine bağlarsınız. Bir hata durumunda fiziksel hasarın meydana gelmesi tamamen makul görünüyor.

Örneğin, iki çıktının birbirine bağlanmasını isteyen bir VHDL yazabilirsiniz. Farklı mantık seviyeleri çıkarırlarsa, bunun muhtemelen bir şeyi kızarttığını hayal ediyorum. (Ben ediyorum umarım bunu yapamazsın en sentez aracı çığlık ki ... ama bu tür araçlar aslında hata kontrolü bu seviyede uygulamak eğer bilmiyorum.)

Yanlışlıkla FPGA modelini sentez aracında yanlışlıkla seçmek ve böylece çipinizi tamamen farklı bir model için tasarlanmış bir bit akımıyla programlamaya çalışmak son derece mümkün görünüyor. Ne olacağını bilemem, ama "kötü" olacağından şüpheleniyorum.

Bu nedenle, FPGA yongasını kesinlikle devrenin geri kalanına yanlış bağlayabilirsiniz. Örneğin, pin numaralarını karıştırırsanız, anakartın FPGA'nın da kullanmaya çalıştığı bir G / Ç pimi sürmeye çalışmasına neden olabilirsiniz. G / Ç pimleri genellikle böyle bir hataya karşı “korumaya” sahip midir? Yoksa çip sadece kızarır mı?


3
Bazı FPGA'larda yalnızca şifrelenmiş ve imzalı bit akışını harici bellekten yüklemeye izin veren güvenlik özellikleri bulunur. Anahtarlar FPGA'da tutulur ve sadece bir kez programlanabilir. Eğer böyle bir özelliği kazara açarsanız veya anahtarları gevşetirseniz, esas olarak "tuğla" bir FPGA alırsınız.
filo

2
“Ama sadece programlayarak bir bilgisayara fiziksel olarak zarar vermek gerçekten zor” öyle mi düşünüyorsun? Bir zamanlar, sabit disk kafalarını kontrol etmek sürücüye kalmıştı - yani virüs, doğum günün kutlu olsun. BIOS, fanları kontrol eder - aşırı ısınmadan zarar görmesine izin verir (yerleşik bir koruma olabilir, ancak yeterince hızlı ısıtırsanız kurtarılamaz). BIOS, 20V'yi CPU'nuza koymaya bile karar verebilir ... .... Hangi yazılımı kullanacağınızı biliyorsanız, yazılım bilgisayarlara zarar vermekten çok kolay bir şekilde sorumlu olabilir.
UKMonkey



2
@UKMonkey Sisteminizin nasıl kurulduğuna bağlı olarak, herhangi bir CPU'yu yeterli çabayla eritebileceğinizden oldukça eminim. Çoğu bilgisayar - AFAIK tamamen pasif bir şekilde soğutulmayan herhangi bir şey - soğutma sistemini kontrol etmenin bir yolunu bulacaktır. Başka bir savunma hattı olan termal azaltmayı BIOS aracılığıyla devre dışı bırakabilirsiniz, bu da program tarafından çekirdek tarafından programlanabilir şekilde gerçekleştirilebileceğini gösterir. Bu özel durumda, kasıtlı olması gerekirdi, ama bu kesinlikle mümkün.
Fon Monica'nın Davası

Yanıtlar:


31

Yanlışlıkla FPGA modelini sentez aracında yanlışlıkla seçmek ve böylece çipinizi tamamen farklı bir model için tasarlanmış bir bit akımıyla programlamaya çalışmak son derece mümkün görünüyor.

Tipik olarak programlama yazılımı, parça numarası için programlanan parçayı sorgulayacaktır ve farklı bir FPGA modeli için bir bit akışında programlamayı reddedecektir.

Parçanın kendisi de tam olarak doğru uzunlukta olmayan bir bit akımıyla programlanırsa çalışmaya başlamayı reddeder (ve farklı çiplerin aynı uzunluktaki bit akışları için çok nadirdir).

FPGA yongasını kesinlikle devrenin geri kalanına yanlış bağlayabilirsiniz. Örneğin, pin numaralarını karıştırırsanız, anakartın FPGA'nın da kullanmaya çalıştığı bir G / Ç pimi sürmeye çalışmasına neden olabilirsiniz.

Bu, FPGA'ya yanlış programlamayla zarar vermenin en muhtemel yoludur.

Başka bir yol çok yoğun bir tasarımın programlanması ve yüksek bir frekansta çalıştırılması (böylece yüksek güç tüketilmesi) ve ardından yeterli bir ısı emici olmadan bir FPGA üzerinde çalıştırılması olabilir.

G / Ç pimleri genellikle böyle bir hataya karşı “korumaya” sahip midir? Yoksa çip sadece kızarır mı?

Çıkış pinleri "genellikle" kısa devre koşullarında birkaç saniye, hatta birkaç dakika boyunca hayatta kalır. Ancak hiçbir şey garanti edilmez.


1
İlginç. FPGA'ların aktif soğutmaya ihtiyaç duymaları normal mi? Oh, sanırım bu başlı başına bir soru. (Ve sanırım cevap bir çok şeye bağlı - 15 sterlin mi yoksa 15,000 sterlinlik FPGA mı satın aldığınız gibi!)
MathematicalOrchid

4
@MaticalicalOrchid, Mutlaka aktif soğutma değil, soğutucu ve basınçlı hava oldukça yaygındır. FPGA satıcıları genellikle, bir ısı emicinin ne kadar büyük ve bir fanın ne kadar büyük olması gerektiğine karar vermek için (parça, tasarım, saat frekansı, vb.) Belirlemeye yardımcı olmak için çok karmaşık bir elektronik tablo sunar.
Foton

3
@MathematicalOrchid 250 MHz'e kadar kare dalgaları ölçmek için bir frekans sayacı olarak bir FPGA kullandım. Bu gerekli bir 220 MHz saat ölçülen soğutma, ancak bunun yerine soğutma düzgün kurma Emin 5 saniyeden uzun ölçmek değil yapılan. 5W @ 220MHz tüketmiştir ve IC yaklaşık 2 cm ^ 2 olmuştur. Çok hızlı çok sıcak oldu.
Harry Svensson

@HarrySvensson Bu bir frekans sayacı için çılgın bir miktar ısı gibi görünüyor.
user253751

1
@HarrySvensson Hala 5 watt kullanması delilik.
user253751

20

Belirtilen birkaç istisna dışında, araçlar genel olarak gerçek silikon ilkellerine erişmenize izin vermez, bu nedenle son kullanıcı bir mühendisin elektriksel olarak geçersiz bir tasarımı * SRAM tabanlı bir FPGA'ya yüklemesi zordur, belki de yanlışlıkla bir aleti keşfetmek böcek.

Flash tabanlı FPGA'lar yeniden programlanabilirliklerini belirli geçersiz yükler nedeniyle hasar görmüş olabilir. OTP FPGA'lar hiçbir zaman değiştirilemeyeceklerinden, geçerli bir yapılandırma yükü tarafından dolaylı olarak "zarar görmüştür" .

Nihayetinde sormak istediklerinize ve HCF örneğinize en yakın olan şey dayanılmaz termal stres üreten bir konfigürasyon olacaktır . Güç tüketimi, kullanılan mantığın saat hızı ve hacim * etkinliği ile doğrudan tahrik edilir, bu nedenle çip üzerindeki flip flop'ların çoğunu maksimum saatte gereksiz yere değiştirmek için takımları kandırabilirseniz (yollar vardır ...) sıradan kullanım için çoğu soğutma sistemini aşacak oldukça etkili bir ısıtıcı. O zaman bu sadece bir şey pişirmeden önce koruyucu bir şekilde kapatırsa bir soru. Ve elbette, araçlarda verilen saat sinyali hakkında yalan söylemiyorsanız, muhtemelen makul bir şekilde öngörülebilir olan güç tahmin modelleri vardır.

(* Aletlere yalan söyleyerek neden olabileceğiniz, fiziksel olarak yıkıcı olmayan ama yine de şaşırtıcı olan ilginç bir sınıf dışı sorun var. Sizden farklı bir saat beslerseniz, söyleyeceğinizden farklı veya sade bir şekilde eşzamanlı blok RAM hücrelerinde adres kurulum zamanlamasını ihlal edebilir ve onları kısa devre yapmak ve içeriğini bozmak için bir şeyler yapabilirsiniz - örneğin, tasarımda bir ROM olarak belirtilen bir şeyin içeriğini yalnızca çalışma zamanında değiştirerek görebilirsiniz için okumak ) kötü saati ile bunu. Ama bu fiziksel olarak yıkıcı olduğuna inanmıyorum


2
Her flop'u bir invertör ile birlikte zincirleyebilir ve çok fazla ısı üretebilirsiniz. Herhangi bir FPGA'nın çok ısınması durumunda saati değiştirecek koruma devreleri var mı? Saat ağacı genellikle kontrollerinin dışındadır.
Ben Jackson

@BenJackson: Her bir Mantık Öğesinde birkaç farklı ağaç arasından seçim yapabilecek şekilde, saat ağacı az çok kablolu değil mi? Saat kaynağının kendisi kontrollerinin dışında olabilir, ancak çok sıcak olduğunda saat ağacı tamponlarını kapatabilirler. Ya da arzı durdurabilirler sanırım.
Michael,

5

En muhtemel şey, halihazırda sürülen bir pimi sürerek GPIO'ların mevcut derecelendirmesini ihlal etmektir. Bazı FPGA'ların ayarlanabilir akım limitleri veya değişken çıkış sürücüleri vardır, bu nedenle liman haritanızı doğru yapmazsanız bu size yardımcı olabilir / zarar verebilir. Programlamadan önce yine de bağlantı noktası listenizi iki kez kontrol etmelisiniz, değiştirme pimleri gibi hataların çözülmesi saatler alabilir, hataların önüne geçmek ve ürün yazılımının tam olarak ne yapması gerektiğini bilmek en iyisidir. (hata bulma heyecanını beğenmiyorsanız)

HDL'ler genellikle kendi başlarına iki kabloyu aynı kabloya bağlamanıza izin vermez ve bunu yapan bir kodunuz varsa sentezlemeyi durduracak ve hatalarınızı düzeltecektir.

Sorunlara neden olabilecek bir yer iki yönlü portlardır, ancak bunlar üzerinde akım sınırlayıcı dirençlere sahip olmalısınız.


Yeniden “ iki çıkışın aynı kabloya bağlanması”: Sentez aracının ikisini de aynı anda asla etkinleştirmeyeceğine söz verirseniz, iki üç durumlu ara belleğin çıktılarını birbirine bağlayamaz mısınız? Tamponun “etkinleştir” ini kullanan mantık çok sarsılmış olsa bile araç, sözünüzü kontrol edebilir mi?
Edgar Bonet

@EdgarBonet yup, bu şekilde çatışmalara neden olabilir. Mantıksal olarak zorlamayı zorunlu kılma zorunluluğu yoktur; bazı mantık (FPG'nin harici mantık ve / veya donanım / yazılım içerebilir), mantıksal iki mantığın aktif hale gelmesine neden olursa, bunu durdurmak için hiçbir şey yoktur. OE'ler için mantık açıkça bunu önlemek için kodlanmıştır.
Rodney,

@EdgarBonet Yapabilirsiniz, ancak tipik olarak üçlü kablolar, bir sürücüye / alıcı vericiye ihtiyaç duyduğunuzdan ve GPIO'larda bulunduğundan, FPGA'nın dışındadır. Bir FPGA'daki üçlü durumla hiç tasarım yapmadım ve bir FPGA'daki donanımın üç durumu desteklediğini sanmıyorum. İki tamponu aynı anda açabilirsiniz, fiziksel tasarım onları yakmanızı engellemelidir.
Voltage Spike

4

Mikrodenetleyicilerde olduğu gibi, her bir pinten bir maksimum akım (veya daha fazla) çekerek her zaman IO bankası başına maksimum toplam akımı aşabilirsiniz. FPGA bu gibi durumlara karşı yerleşik bir korumaya sahip değilse, bu hasara neden olabilir.

Başka bir olasılık, periyodik olarak meta-stabil hale gelen ya da FPGA kumaşının işlemek için tasarlandığından (birkaç GHz) çok daha yüksek bir frekansta salınan bir birleştirme döngüsünü yapmaktır. Bu, çip çapında termal koruma devreye girmeden önce fiziksel hasara yol açabilecek çok fazla bir aşırı ısınmaya neden olacaktır. Yani, böyle bir koruma olduğunu varsayarak: aşırı sıcaklık kapanmaya yol açmazsa, sadece Çok güç aç devre ve yetersiz soğutma ile çalışmasına izin verin.

Dinamik yeniden yapılandırma, statik bir yapılandırma durumunda geliştirme araçları tarafından uygulanabilecek geçersiz ilkel ilkelerin yapılandırmasına karşı korumalar etrafında da çalışabilir. Örneğin, bir PLL'yi maksimum iç frekansını aşacak şekilde yapılandırabilir veya aynı bağlantı hattını aynı anda iki kaynaktan besleyebilir veya LVDS gibi düşük voltajlı alıcı-vericisini kullanmak için yüksek voltajlı bir IO bankasından bir pimi zorlayabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.