Her ikisini de destekleyen bir FPGA'da mandalları ne zaman parmak arası terlikten daha iyi kullanırsınız?


20

Soru:

Her ikisini de destekleyen bir FPGA'da mandalları ne zaman parmak arası terlikten daha iyi kullanırsınız?

Arka fon:

FPGA'larda seviyeye duyarlı şeffaf mandallardan kaçınılması ve sadece kenara duyarlı parmak arası terliklerin kullanılması iyi bilinen bir prensiptir. Çoğu FPGA mimarisi yerel olarak hem mandalları hem de parmak arası terlikleri destekler.

Genel tavsiye - FPGA satıcılarından bile - mandallara dikkat etmek veya asla mandal vb. Kullanmamaktır. Bu tavsiyenin ayrıntıları iyi bilinen çok iyi nedenler vardır. Bununla birlikte, çoğu öneri " onlara ihtiyacınız olduğunu bilmiyorsanız mandalları kullanmayın" şeklinde ifade edilir .

Deneyimli bir FPGA tasarımcısıyım ve yıllar geçtikçe bir sürgüye ihtiyacım olduğunu bildiğimi düşündüğümde , parmak arası terlikle yapmanın daha iyi bir yolu olduğunu hemen fark ettim. Mandal kullanmanın açık bir şekilde daha iyi olduğunu duymakla ilgileniyorum.

Önemli Not:

Parmak arası terlik ve parmak arası terlik genellikle insanları kızdırır. Sadece sorunun cevabı ile ilgileniyorum. Mandallar ve flip-floplar arasındaki farkı açıklayan yanıtlar, mandalları KULLANMAMANIN açıklayıcı nedenleri, mandalların neden mandallardan daha iyi olduğunu detaylandıran, FPGA olmayan hedeflerde mandalların nasıl daha iyi olduğu hakkında konuşmak tamamen konu dışı olacaktır.


Mandal kullanan mevcut bir devreyi tam olarak taklit etmek için bir FPGA kullanırken?
Majenko

Yanıtlar:


11

Sorunuz temel olarak, "mandallara ne zaman ihtiyacınız olduğunu biliyor musunuz?" Dediğin gibi sübjektif bir soru. Cevap olarak gerçeklerden daha fazla görüş bekliyoruz. Olduğu söyleniyor, işte benim görüşüm:

Senin gibi ben de parmak arası terlik kullanmanın daha iyi yollarını bulurum, böylece mandallardan kaçınırım. Ortaya çıkan mantık genellikle daha zarif ve sağlamdır. Ancak mandalları önlemek için mantık üzerinde yeterince kontrol sahibi olmadığım zamanlar var. Örneğin, istenen özellikleri karşılamak için mandallar gerektiren bir işlemci veriyoluna arabirim yapıyor olabilirim. CPU'yu veya veri yolunu yeniden tasarlayamadığım için, mandalla sıkıştım.

Son 13+ yılda, mandallara ihtiyacım olan tek zaman.


2
Cevap için teşekkürler. Tamamen makul görünen "zorunlu geriye dönük uyumluluk" altında yanıtınızı zihinsel olarak sunuyorum. =)
wjl

8

Parmak arası terlikler genellikle sadece dört yarış koşulu / kısıtlaması olduğu için mandallara tercih edilir:

  1. veri girişinde bir değişiklik ve bir sonraki etkin saat kenarı arasındaki kurulum süresi ve
  2. saat kenarı ile veri girişinde bir sonraki değişiklik arasındaki zamanı tutma;
  3. minimum aktif saat vurum süresi;
  4. minimum pasif saat darbesi süresi.

Bu kısıtlamalar karşılanırsa, bir flip flopun çıktısı tamamen "temiz" olacak ve zafiyetten arınmış olacaktır. Ayrıca, bir flip flopun zamanlaması bir anlamda "dijital" tir: zamanlama kısıtlamalarının karşılanması koşuluyla, çıkış, giriş zamanlamasına bakılmaksızın sadece aktif bir saat kenarından sonra tahmin edilebilir bir pencerede değişecektir. Basamaklı parmak arası terliklerin etkisi, derinliğe bakılmaksızın tahmin edilebilir. Bunun aksine, mandal çıkışının zamanlaması çok daha "analog" dur. Mandal içine giren sinyalin gecikmesi, sinyalin çıkmasına neden olabilir. Mandalın kendi kısıtlamaları karşılansa bile, bu gecikme aşağı akışta sorunlara neden olabilir.

Bir çipin çıkışlarının gerekli davranışının biri tarafından makul olarak modellenebileceği durumlarda mandalların kullanılmasını tavsiye ederim. Örneğin, bir kişinin donanımının, bir kare senkronizasyonunu izleyen ilk saatin yükselen ve düşen kenarları arasında, ilk çıkışın girişi izlediği seri-paralel dönüştürücü olarak davranması beklenir; ikinci saatin yükselen ve düşen kenarları arasında, ikinci çıkış girişi izler, vb. mandalları kullananlardan daha karmaşıktır ve zamanlama kısıtlamaları karşılanmazsa garip davranmaya daha yatkındır.


3
"Mandallar ve parmak arası terlikler arasındaki farkı açıklayan yanıtlar, mandalları KULLANMAMANIN açıklayıcı nedenleri, parmak arası terliklerin mandallardan neden daha iyi olduğunu detaylandıran, FPGA olmayan hedeflerde mandalların nasıl daha iyi olduğu hakkında konuşmak tamamen konu dışı olacaktır. ."
Majenko

@supercat Cevabınızın en azından ikinci kısmının soruya uygun bir cevabı var. =) Teşekkür ederim.
wjl

1
@Majenko: Belki de "tercih edilebilir" yerine "kullanımı kolay" demeliydim; Demek istediğim, mümkün olduğunda mandallardan kaçınmak gerektiğini değil, mandal kullanan birinin karmaşıklıkların farkında olması gerektiğini öne sürmekti.
supercat

@supercat, lütfen örneğinizi kısa bir dalga dalgası ile netleştirebilir misiniz?
Philippe

1

Çalışmamda bazen FPGA'da mandal uygulamak zorunda kaldım, ama bu her zaman "son çare" bir çözümdü. Tipik uygulamalar, veri yolunun ve kontrol sinyallerinin düzgün bir şekilde örneklenmesini ve senkronizasyonunu sağlamak için yeterli hızda bir saat sağlayamazsam, asenkron arayüzler veya otobüsler ile bağlantıları içerir.

Ana sorun, mandalın eşzamansız bir blok olmasıdır. Bu nedenle, mandal için giriş sinyalleri üreten kombinasyonel fonksiyonların yarıştan bağımsız olduğundan emin olmalısınız . Aksi takdirde , kilitlenebilecek ve sisteminizde tehlikelere neden olabilecek aksaklıklar üretebilirler .

Yarışlardan kaçınmak için, bu kombinasyonel işlevi özel bir yeniden yönlendirici şekilde uygulamanız gerekir. Ne yazık ki (bu özel durumda ;-), aksi takdirde çok iyi bir özelliktir) FPGA sentez araçları tasarımınızı tüm artıklıkları kaldırarak optimize eder. Bu nedenle FPGA'da bir mandal uygulamak istiyorsanız, onu "elle" uygulamanız ve optimizasyona karşı korumanız gerekir (örneğin VHDL'de, mandalınızda dahili olarak kullanılan sinyaller için "keep" özelliğini "true" olarak ayarlamanız gerekebilir) .


-1 OP özellikle ne zaman sorulduğunda gereken mandalları kullanın ve özellikle okuyucuları sorulan değil kilitlenecek o daha fazla neden vermek olmamalıdır kullanılabilir.
Joe Hass

-1

Zamanlama açısından:

Bir tasarımda parmak arası terlik kullanıyorsak, performans en uzun kombinasyonel yol gecikmelerine bağlıdır.

parmak arası terlik yerine mandal kullanırsak, sonraki aşamalarda daha kısa yol gecikmelerinden ödünç alarak en uzun kombo yol gecikmelerini telafi edebiliriz. Bununla, tasarımın gecikmelerini azaltabilir ve performansını artırabiliriz.


3
-1. Bir multicycle kısıtlaması ile düzgün bir şekilde analiz etmek ve "asenkron" kısmın iki döngü boyunca çalışmasına izin vermek daha iyidir. Örneğin, bkz. Sayfa 7-30 / altera.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc
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.