Neden bazı mikro denetleyicilerin bu kadar büyük senkronizasyon gecikmeleri var?


11

Atmel SAM-D21 serisi mikrodenetleyicilerde, birçok çevre birimi ana CPU saatiyle eşzamanlı olmayan bir saat kullanır ve bu çevre birimlerine erişim eşitleme mantığından geçmelidir; CPU saatine göre saati yavaş olan çevre birimlerinde, bu gerçekten çok büyük gecikmelere neden olabilir. Örneğin, RTC (tasarım amacı olarak göründüğü gibi) 1024Hz saat kullanacak şekilde yapılandırılmışsa ve CPU 48Mhz'de çalışıyorsa, "geçerli saat" kaydının okunması bus mantığının 200.000'den fazla bekleme durumu (en az 1024Hz saatin beş döngüsü). CPU'nun bir okuma isteği yayınlaması, başka bir ilgisiz kod yürütmesi ve zamanı getirmek için 200.000'den fazla döngü döndürmesi mümkün olsa da, zamanı daha hızlı okumanın herhangi bir yolu yoktur.

Senkronizasyon anlayışımla, tek bitli bir senkronizasyon devresi bir sinyali hedef saatin 2-3 döngüsü kadar geciktirir; çok bitli bir miktarın senkronize edilmesi biraz daha zordur, ancak kaynak saatten daha hızlıysa hedef saatin beş döngüsü içinde güvenilir davranışı garanti edebilecek çeşitli yaklaşımlar vardır ve değilse sadece birkaç döngü daha fazladır. Senkronizasyon için kaynak saat alanında altı döngü gerektiren Atmel SAM-D21 ne yapacaktı ve senkronizasyon gecikmeleri, "senkronizasyon tamamlandı" kesmesini gerektirecek kadar uzun olan bir tasarımı tercih eden bir tasarımdan hangisini tercih edecek? senkronizasyon gecikmeleri bu kesintileri gereksiz kılacak kadar kısadır?


2
Bu soru için teşekkür ederim. Sonunda elimdeki konuyu anlamamı sağladı. Buraya geldim çünkü Watchdog Zamanlayıcıyı (WDT) temizlemenin neden SAMD20 / 21'de yaklaşık 5 milisaniye süreceğini anlayamadım. Artık donanım tasarımıyla olduğunu biliyorum, benim hatam değil. (WDT tek mantıklı seçenek olan 1024 Hz'de çalışmaktadır.) Şimdi en azından buna göre başa çıkabilirim.
T-Bull

2
@ T-Bull: Bu parçalardaki bekçi köpeği ile ilgili gerçekten eğlenceli olan şey, yazılımın reset komutunu verdiği zaman ile komutun senkronizatörden geçtiği zaman arasında devre dışı bırakılmış olmasıdır. Cihaz bu aralıkta uykuya geçerse, başka bir şey parçayı uyandırmadıkça veya beklemedikçe bekçi çalışmaz .
supercat

Yanıtlar:


2

Bu bana bir şeyler yapmanın farklı bir yoludur, kayıtlarımın CPU saatimde veya saatin en az 1 / 2'sinde olduğu mimarilerime alışkınım. Yani kayıtlarınızı yazıyorsunuz ve hemen hazırlar. Belki de bunu enerji tasarrufu için yapıyorlar? Çevresel kayıtları kendi ayrı gerçekten yavaş saat alanlarına koyarlarsa belki de uyanıp ana osilatörü veya CPU saatini çalıştırmak zorunda kalmazlar, ancak çevre birimindeki değerleri güncellemeye devam edebilirler.

Bu durumda, süper yavaş çevresel bloğunuza bir kayıt yazabilir, ardından tüm CPU veya saat kapısı için güç adasını devre dışı bırakabilir ve yavaş senkronizörün mutlu olana kadar okumasına izin verebilir ve daha sonra CPU'yu çıkarmak için kesebilirsiniz. uyku.

Alternatif olarak, altı döngüyü döndürmek ve her yazmayı beklemek yerine, maksimum talimatı uyanık zamanınıza sıkıştırmanıza izin verebilir.

Neden bu kadar çok senkronizasyon çevrimi kullandıklarına, paranoya olabilir veya müşterilerinden biri için bazı yüksek güvenilirlik standartlarını karşılayabilirler. Herhalde söyleyemem ama her koçun ecc'ye sahip olacağı ve belirli bir değere önceden yükleneceği gibi talepleri olan müşterileri gördüğümü biliyorum.

Sanırım bu kesin bir cevap değil ama veri sayfasına biraz baktıktan sonra düşüncelerim bunlar.


2
"Altı döngü", çevresel saatin altı döngüsüdür; örneğin, gerçek zamanlı saat modülünün 1024Hz'de beslenmesini ayarlarsa (Atmel'in tavsiyesi gibi görünüyorsa) ve CPU saati 48MHz'de ise, periferik saatin altı döngüsü çok uzun olan CPU saatinin 281.250 döngüsü olacaktır. Özellikle servis gerektiren herhangi bir kesinti varsa dönme zamanı. Yavaş saat 8Mhz (36-CPU döngüsünde bir dönüş anlamına gelir) ise, eğirme yalnızca orta derecede korkunçtur, ancak sert bir hata, 1024Hz'lik bir saatteki bir döndürmeden daha iyi olurdu.
supercat
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.