Sıfırla: senkronize ve senkronize olmayan


15

Yıllardır fpgas ile çalışıyorum ve devrelerimin her parçası (buna ihtiyaç duyuyor) için her zaman senkron sıfırlamalar kullandım. Belirli bir saat döngüsünde devrenin global olarak sıfırlanmasına yardımcı olur.

Ancak, ASIC devrelerinde, insanların her yerde asenkron sıfırlama kullanma eğiliminde olduğu söylendi. Nedenini merak ediyorum ve bazı fpga tasarımlarında da durum böyle ise. Profesyonel görüşler duymak isterim.

Teşekkürler

Yanıtlar:


11

Bu konuda çok fazla görüş var gibi görünüyor.
Asenkron iddia, senkron deassertion iyi bir uygulama olduğu söylenir. Bu, saatin eşzamanlı onaylamada çalışmamasını (veya sıfırlama sinyalini yakalamak için çok yavaş çalışmasını) ve eşzamansız deassertionda olası metastabiliteyi önler.

Çıktıların tasarımların geri kalanına bağlı olduğu bir sıfırlama senkronizörü (iki FF) kullanırsınız:

Sıfırla

Birkaç tartışma:
Zaman uyumsuzluk ve senkronizasyon sıfırlama Senkronizasyondaki Mektuplar ve Zaman uyumsuz sıfırlama


Mandalın sıfırlama sinyalinin bırakılması ile saati arasındaki kurulum / tutma süresi gereksinimleri veri girişi için olanlarla nasıl karşılaştırılır? Sistemdeki mandallar, sıfırlama sinyalinin sonunun etkin olmayan saat kenarında meydana geldiğini görürse daha rahat hissederim. Etkin bir saat kenarında zaman uyumsuz sıfırlamanın serbest bırakılmasının, gerçekleştiği döngüyü etkilememesi garanti edilir mi?
supercat

Hayır, sıfırlama işleminin eşzamansız olarak serbest bırakılmasının, gereken kurtarma süresi (kurulum / tutma gibi) nedeniyle temiz olduğu garanti edilmez. Bu nedenle sıfırlamayı eşzamanlı olarak serbest bırakırsınız.
Oli Glaser

Benim sorum, mandal1'in mandal2 ile aynı saat kenarında sıfırlama sinyali besleme mandalını 2 serbest bırakmasının tamamen kaşer olup olmadığı, yani mandal1'in saatinden çıkışına minimum yayılma süresinin mandal2'nin sıfırlama girişi için tutma gereksinimini karşılayıp karşılamayacağıdır. BTW, yukarıdaki cevabım hakkında ne düşünüyorsun? Çektiğiniz devre, neredeyse toplam bağışıklığın mümkün olması gerektiğinde, sıfırlama hattındaki darbeler için çok az bağışıklık sunar.
supercat

Daha fazla göz önüne alındığında, üçüncü bir mandal ekleyerek ve asenkron sıfırlama sinyalinin ilk ikisine beslenen sinyalin aksaklık bastırılmış bir versiyonu olmasıyla runt darbelerinden koruma eklenebilir, böylece üçüncü mandalı asenkron olarak bozan bir sinyal ilk ikisini temiz bir şekilde sıfırlamayı garanti eder. Sıfırlama girişindeki bir runt darbesi, yongadaki ana sıfırlama hattının bir runt darbesi almasına neden olabilir, ancak böyle bir darbe meydana gelirse, bunu senkronize bir sıfırlama darbesi izler.
supercat

Üzgünüm, sanırım şimdi ne demek istediğini anlıyorum. Eşzamanlayıcıdaki ikinci mandaldan sistem FF sıfırlamasına çıktı anlamına geliyorsa, anlayışım, sıfırlama kurtarma süresinin genellikle aynı FF için veri kurulum süresinden daha kısa olması, bu yüzden iyi olması gerektiğidir. Runt darbeleri konusunda hemfikirim, sizin gibi bir şey yapılmasını önermeyenlere dokunulmazlık sunmuyor.
Oli Glaser

7

Birkaç nedenden dolayı (belirli bir sırayla) eşzamanlı sıfırlama üzerinde bir eşzamansız sıfırlama tercih ederim:

  • Bir flip-flop'a eşzamansız bir set veya sıfırlama işlevi eklemek, mantığın tek bir hücreye entegrasyonu nedeniyle muhtemelen daha küçük bir tasarıma neden olur (girişteki AND geçidi ile sıfırlanamayan bir flip-flop)
  • Daha az sayıda kapı daha az sıkışık kablolama / yer ve rota ile sonuçlanır
  • Çipi sıfırlamak daha basit / daha kolay bir süreçtir (daha kullanıcı / test dostu)
  • Sıfırlama yolunun eşzamansız hale getirilmesi, sıfırlama sinyalinin statik zamanlama analizi bölümlendirmesini basitleştirir
  • Eşzamanlı sıfırlama, veri akışı kritik yoluna fazladan mantık ekler ve kurulum ve tutma gereksinimlerini karşılamayı zorlaştırır
  • Bir FPGA'nın girişte 4-6 giriş keyfi mantık işlevi olsa da, bir ASIC üzerindeki bir kapıya her giriş için "ödeme yaparsınız" (daha fazla giriş = daha büyük geçit; karmaşık işlevler = birden fazla geçit)

Nihayetinde bu sorunların hiçbirinin gösterici olmadığını düşünmüyorum, ancak ASIC'lerde asenkron sıfırlamanın kesinlikle tercih edilmesine kesinlikle katkıda bulunacaklardı.


2
Birinin dahili mantığına asenkron sıfırlamalar getirmenin bir tehlikesi, sıfırlama girişindeki bir darbe darbesinin her türlü tahribatı bozabileceğidir. Eğer bir kişi devresinin eşzamansız olarak sıfırlanmasına izin verecekse, giriş devresini, herhangi bir eşzamansız sıfırlamanın iç devrelere erişmesi için yeterli herhangi bir sıfırlama darbesinin de neden olacağı garanti edilecek şekilde tasarlanması gerekir. eşzamanlı bir sıfırlama gerçekleşir.
supercat

4

Eşzamanlı sapma ile eşzamansız sıfırlama çok iyi çalışır. Yukarıda belirtildiği gibi, asenkron sıfırlama flopları daha küçüktür ve sıfırlamayı sağlamak için etkin bir saat gerektirmez, böylece bir parçayı yalnızca güç ve tek bir sabit kablolu pim veya güçle sıfırlamaya zorlayabilirsiniz (genellikle bilinen, düşük güç durumu). sıfırlamada.

Bunu gerçekten incelemek istiyorsanız, özellikle Cumming'in bu konudaki makalelerini okuyabilirsiniz:

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

Şerefe.


Bay Cummings'in makalesinde özlediğini düşündüğüm bir sorun, aksaklık dedektörlerinin başka türlü runt darbeleri bastırabilirken, meşru uzunluktaki darbeleri de runt darbelerine dönüştürebilmesidir. Bunun etkisi, sadece doğru uzunlukta olan bir darbenin uygun bir sıfırlamaya neden olmadan keyfi olarak sistem durumunu tıkayabilmesidir. Çift senkronizasyon olmadan tüm durumlarda metastabiliteden kaçınmak çok zor olduğundan, biri 'daha katı' bir aksaklık tespit kriteri olan iki asenkron yakalama devresine sahip olmayı ve daha sonra ...
supercat

... kısa bir aksaklığın bir veya iki döngü sonra sıfırlamanın gerçekleşmesine neden olabileceği veya olmayabileceği şekilde düzenleyin, ancak yeterince uzun bir darbe anında sıfırlanmaya neden olur. Ayrıca, flip floplarda 'zaman uyumsuz sıfırlama' girişleri kullanılırken bazı topolojilerde senteze yardımcı olabilir, bu da zaman uyumsuz olarak kullanılması gerektiği anlamına gelmez. Mandallarda "zaman uyumsuz sıfırlama" girişleri sürerken bile dahili sıfırlama sinyallerinin çoğunun saatle senkronize edilmesi yararlı olabilir.
supercat

Cummings aksaklık filtrelerinin "çirkin" olduğunu söylüyor. Çalıştığım IC'lerde hiç görmedim. Bu sorunları önlemek için tüm giriş pad hücrelerinde Schmitt-tetikleyicileri kullanma eğilimindeyiz ve kullandığım açılış sıfırlamaları da benzer şekilde temizleniyor. Bu arada, hangi durumlarda sıfırlama hattında kısa darbeler olur? Bunu bazı tarama testi senaryolarında gördüm, ancak yine de amaçlanan kısa darbeler değil, saat döngüsü uzunluğunda. Son yorumunuzda, sıfırlamanın s / h ihlallerini önlemek ve tüm flopların aynı kenardan sıfırlanmasını sağlamak için sıfırlamanın dağıtılması saat ile senkronize edilmelidir.
mixed_signal_old

Aksaklık filtreleri genellikle hangi tür girdilerin metastabiliteye neden olabileceğini belirlemek için yararlıdır, ancak metastabil durumları ortadan kaldırmazlar. Aksaklık filtresinin amacı, oluşabilecek herhangi bir metastabil durumun "umursamama" durumlarında olmasını sağlamak olmalıdır. Bazen bir cihazın takılı başka bir cihazı sıfırlayabilmesi gerekir. Sıfırlama teli çift senkronize olmadıkça, yakındaki ESD olaylarından ve diğer benzerlerden kaynaklanan darbe darbeleri riski olacaktır.
supercat

Son noktaya gelince, sadece birisinin bile flip floplarda "ücretsiz" asenkron sıfırlama girişleri sağlayan donanımda bir tasarım sentezlediğini söylüyordum, bu da sinyalin her ikisindeki ana saate tam olarak senkronize olamayacağı anlamına gelmiyor iddia ve tahliye. Dışa bakan sinyallerin sıfırlama girişine eşzamansız olarak tepki vermesi gerekebilir, ancak bu, tüm mandallarının eşzamansız olarak sıfırlanması gerektiği anlamına gelmez. Aslında, tutarsız durumlardan kaçınmak için, bir kişinin tasarımındaki mandalların ikisi hariç hepsinin senkronize olması yararlı olabilir.
supercat

2

'Eşzamansız onaylama / eşitleme sürümü' yaklaşımından bile daha güvenli görünen başka bir yaklaşım, eşzamansız bir sıfırlama dedektörüne (başka yerlerde açıklandığı gibi, eşzamansız 'onaylama' ve eşzamanlı 'serbest bırakma') sahip olmak, ancak dışa bakan herhangi bir G / Ç aygıtını eşzamansız bir şekilde sıfırlamadan (dedektörün kendisindeki mandal dışında). Biri, biri G / Ç hatları için diğeri de senkronize sıfırlama dedektörünü beslemek için biri olmak üzere iki asenkron sıfırlama dedektörü kullanıyorsa ve biri I / O hatları için onu sadece güvenilir bir şekilde yeterli ses olan sıfırlama darbeleri ile tetiklenecek şekilde tasarlarsa ana dedektörü açtığınızda, CPU'yu sıfırlamayacak durumlarda çıkışların arızasını önlemek bile önlenebilir. Biri bunu yaparsa, meşru uzunluktaki bir sıfırlama darbesinin çıkışları eşzamansız olarak sıfırlayacağını,

Dikkate alınması gereken başka bir şey, sistemlerin genellikle sıfırlamadan etkilenmemesi gereken bazı kayıtlara sahip olmasıdır. Bir asenkron sıfırlama, bu kayıtlara yazan devreyi vurabiliyorsa, temiz (runtsuz) bir darbe olsa bile, bu kayıtları yavaşlatmak için yanlış zamanda gelen bir sıfırlama darbesi mümkün olacaktır. Örneğin, kod adres 1111'e yazmaya çalışıyorsa ve saat darbesinden hemen önce gelen bir eşzamansız sıfırlama, saat darbesi geldikçe adres mandallarından birini sıfıra zorlarsa, bu, hatalı bir yazmanın 1110 adresine adreslenmesine neden olabilir. senkronize sıfırlama mantığı kullanarak kayıt yazma işlemlerinin devre dışı bırakılmasından önce kayıt yazma işlemlerinin devre dışı bırakıldığından emin olmak için kombine gecikmeli çoklu dahili sıfırlama hatları kullanılabilir.

BTW, işte konsepti gösteren bir devre. Sol alt köşenin yakınında sıfırlama için iki mantık girişi vardır. Biri "temiz" bir sıfırlama darbesi üretecek ve diğeri gerçekten çok yapışkan bir darbe üretecektir. Sarı LED ana sistemin sıfırlandığını gösterir; camgöbeği LED I / O etkin olduğunu gösterir. Temiz bir sıfırlamaya basmak, çıkışların hemen "sıfırlanmasına" neden olur; icky reset'e basmak ya çıkışların gecikmesine neden olur ya da etkilenmez (simülatörde 'onları etkilenmeden bırak' durumuna neden olmanın bir yolu yoktur).


Bence bu iyi bir fikir gibi geliyor. sıfırlama gibi görünen basit şeylerle birçok gri tonu.
Oli Glaser

0

Deneyimli bir mühendis olarak ( FPGA tasarımı ve gömülü sistemlerle 3 yıl ), size FPGA'nın veri sayfasını ve kullanıcı kılavuzunu kontrol etmeniz gerektiğini söylüyorum. Bu basit bir cevap değil.

Sen yapmak zorunda tasarım uyan FPGA tipi Seçtiğin. Bazı FPGA'larda Async sıfırlama için tasarlanmış FlipFlop'lar , bazıları da Senkronizasyon sıfırlama için tasarlanmıştır.

Ne tür FlipFlop'lara sahip olduğunuz için FPGA kullanım kılavuzunu kontrol etmeniz gerekir.

Uygulayıcı / Haritacı, kodunuzu FPGA ilkel türüyle eşleştirdiğinizde sıfırlamanız için özel yollar seçer ( kod daha yüksek frekanslarda çalışabilir ve daha az yer kaplar ).

Tasarımınız HERHANGİ BİR durumda çalışacaktır , ancak bazen FPGA Uygulayıcısı mantığınızı çalıştırmak için daha fazla yol açar ( daha fazla mantık ekler ), ancak bu daha düşük maksimum frekansa ve / veya daha fazla FPGA kaynaklarına neden olur.

Örnek: Xilinx'in ZYNQ'su ile test edilmiştir ( FPGA senkronize sıfırlama için tasarlanmıştır - ilkel kullanıcı kılavuzuna bakın ). Senkronizasyonu sıfırdan senkronize olarak değiştirerek , maksimum kararlı frekans 220MHz'den 258MHz'e gitti ve bu yüzden frekans marjımı geçtim .

Ayrıca Uygulayıcı'nın saat ve sıfırlama sinyalinin ne olduğunu bilmediğini de ekleyebilirim. Flipflop pinlerini isimlere göre değil, ORDER ile sinyallere atar. Bu nedenle, bazı FPGA'larda, uygulayıcı, uygulayıcının hangi FPGA'ya ayarlandığına bağlı olarak, VHDL'de "process () başladıktan sonra saat olarak, bazıları sıfırlama olarak ilk sinyali seçer.


"Uygulayıcının saat ve sıfırlama sinyalinin ne olduğunu bilmediğini" belirttiğinize katılmıyorum. Sentez araçları, saat olan ve nasıl kullanıldıklarına göre sıfırlanan çıkarım yapar. Saat sinyali kenar özellikli olarak kullanılır, sıfırlama yapılmaz. Ayrıca, herhangi bir flip-flop, senkronize sıfırlama spesifikasyonuyla kullanılabilir ve gözlemlediğiniz gibi, bu genellikle daha hızlı kritik yollara yol açar.
Joe Hass
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.