Modern dijital mantık cihazları genellikle (*) "senkron tasarım uygulaması" ile tasarlanmıştır: global olarak senkronize kenar tetiklemeli kayıt aktarım tasarım stili (RTL): Tüm sıralı devreler, global saat sinyaline CLK bağlı bağlı tetiklemeli kayıtlara ayrılır ve saf kombinasyonel mantık.
Bu tasarım stili, insanların zamanlamadan bağımsız olarak hızlı bir şekilde dijital mantık sistemleri tasarlamalarını sağlar. Dahili durumun yerleşmesi için bir saat kenarından diğerine yeterli zaman olduğu sürece sistemleri "çalışacaktır".
Bu tasarım stili ile, saat kayması ve diğer zamanlama alakalı konular "Bu sistem için maksimum saat hızı nedir?" Endam hariç alakasız.
Saat çarpıklığı tam olarak nedir?
Örneğin:
...
R1 - register 1 R3
+-+
->| |------>( combinational ) +-+
...->| |------>( logic )->| |--...
->|^|------>( )->|^|
+-+ ( ) +-+
| +--->( ) |
CLK | +->( ) CLK
| |
R2: | |
+-+ | |
...->| |->+ |
->|^|->--+
+-+
|
CLK
Gerçek donanımda, "CLK" sinyali hiçbir zaman tam olarak aynı anda her kayıtta geçiş yapmaz . Eğri saat Tskew yukarı saatine aşağı saat nisbetle gecikmesini (olup bir ):
Tskew (kaynak, hedef) = hedef_saat - kaynak_saat
Burada kaynak_zamanı, yukarı akış kaynak kaydında (bu örnekte, R1 veya R2) aktif bir saat kenarının zamanıdır ve hedef_zamanı, bazı aşağı akım hedef kaydında (aynı durumda R3) "aynı" aktif saat kenarının zamanıdır. .
- negatif saat çarpıklığı: R3'teki CLK, R1'deki saatten önce değişir.
- Pozitif saat kayması: R3 de CLK anahtarları sonra R1'de saat.
Saat çarpıklığının etkisi nedir?
(belki de burada bir zamanlama şeması bunu daha açık hale getirecektir)
İşlerin düzgün çalışması için, en kötü durumda bile, R3'ün girişleri R3'ün kurulum süresi veya bekleme süresi boyunca değişmemelidir. Daha da kötüsü, işlerin düzgün çalışması için bir şeyler tasarlamalıyız:
Tskew (R1, R3) <Tco - Th.
Tclk_min = Tco + Tcalc + Tsu - Tskew (R1, R3).
nerede:
- Tcalc, sistemin herhangi bir yerinde herhangi bir kombinasyonel mantık bloğunun en kötü durum yerleşim zamanıdır. (Bazen kritik yolda bulunan kombinasyonel mantık bloğunu yeniden tasarlayabilir, parçaları yukarı veya aşağı doğru itebilir veya başka bir boru hattı aşaması ekleyebiliriz, böylece yeni tasarım, saat hızını artırmamıza izin veren daha küçük bir Tcalc'ye sahiptir) .
- Tclk_min, bir aktif saat kenarından bir sonraki aktif saat kenarına kadar olan minimum süredir. Yukarıdaki denklemden hesaplıyoruz.
- Tsu, kayıt kurulum zamanıdır. Kayıt üreticisi bizden her zaman bu gereksinimi karşılayacak kadar yavaş bir saat kullanmamızı bekliyor.
- Th, kayıt tutma süresidir. Kayıt üreticisi bizden her zaman bu gereksinimi karşılayacak kadar eğikliği kontrol etmemizi bekler.
- Tco, saat-çıkış gecikmesidir (yayılma süresi). Her aktif saat kenarından sonra, R1 ve R2 yeni değerlere geçmeden önce eski değerleri kombinasyon mantığına kısa bir süre Tco için sürmeye devam eder. Bu, donanım tarafından ayarlanır ve üretici tarafından garanti edilir, ancak yalnızca Tsu ve Th ve üreticinin normal çalışma için belirttiği diğer gereksinimleri karşıladığımız sürece.
Çok fazla pozitif çarpıklık, zarar görmemiş bir felakettir. Çok fazla pozitif çarpıklık (bazı veri kombinasyonları ile) "gizlice yollara" neden olabilir, öyle ki R3 yerine N + 1 saatindeki "doğru verileri" kilitler (daha önce N saatinde R1 ve R2'ye kilitlenen verilerin belirleyici bir işlevi) , N + 1 saatinde R1 ve R2'ye kilitlenen yeni veriler sızabilir, kombinasyonel mantığı bozabilir ve yanlış verilerin "aynı" saat kenarı N + 1'de R3'e kilitlenmesine neden olabilir.
Herhangi bir negatif çarpıklık, saat hızının yavaşlatılmasıyla "sabitlenebilir". R3'ün girişlerine R1 ve R2'nin saat kenarı N'de yeni verileri kilitledikten sonra N ve daha sonra R3'e yerleşmesi için zaman vermek amacıyla sistemi daha yavaş bir saat hızında çalıştırmaya zorlaması açısından sadece "kötü". sonucu "sonraki" saat kenarında N + 1 mandallar.
Birçok sistem , eğriltmeyi sıfıra indirmeye çalışan bir saat dağıtım ağı kullanır. Tersine sezgisel olarak, saat yolu boyunca - saat üreticisinden her kayıt cihazının CLK girişine giden yol - dikkatlice gecikmeler ekleyerek, saat kenarı dalga cephesinin fiziksel olarak bir kayıt cihazının CLK girişinden fiziksel olarak kat ettiği görünür hızı artırmak mümkündür. bir sonraki kayıt cihazının CLK girişi ışık hızından daha hızlı olur.
Altera belgeleri söz
"Saat yollarında kombinasyonel mantık kullanmaktan kaçının çünkü saatin çarpık olmasına katkıda bulunur."
Bu, birçok insanın, bazı kayıtların yerel CLK girişini yönlendirmek için bir şekilde küresel CLK sinyalinden başka bir şeye neden olacak şekilde bir FPGA üzerine derlenen HDL yazması gerçeğinden bahsediyor. (Bu, yalnızca belirli koşullar karşılandığında yeni değerlerin bir kayıt defterine yüklenebilmesi için "saat geçidi" mantığı veya N saatinden yalnızca 1 tanesinin geçmesine izin veren "saat bölücü" mantığı olabilir). Bu yerel CLK genellikle bir şekilde küresel CLK'den türetilir - küresel CLK keneler ve daha sonra yerel CLK değişmez veya (sinyalin bu "başka bir şeyden" yayılması için global CLK'den sonra kısa bir gecikme) yerel CLK bir kez değişir.
Bu "başka bir şey", aşağı akış kaydının (R3) CLK'sını çalıştırdığında, çarpıklığı daha olumlu hale getirir. Bu "başka bir şey" akış yukarı yazmacının (R1 veya R2) CLK'sını tahrik ettiğinde, çarpıklığı daha negatif yapar. Bazen, yukarı akış kaydının CLK'sını çalıştıran ve aşağı akış kaydının CLK'sını çalıştıran her ne olursa olsun, hemen hemen aynı gecikmeye sahiptir ve bu ikisi arasındaki eğriliği pratik olarak sıfırlar.
Bazı ASIC'lerin içindeki saat dağıtım ağı , bazı kayıtlarda küçük miktarlarda pozitif saat eğriliği ile kasıtlı olarak tasarlanmıştır , bu da birleşimsel mantığa yerleşmek için biraz daha fazla zaman verir ve böylece tüm sistem daha hızlı bir saat hızında çalıştırılabilir. Buna "saat eğim optimizasyonu" veya "saat eğim zamanlaması" denir ve " retiming " ile ilgilidir.
Hala set_clock_uncertainty
komut tarafından gizem duyuyorum - neden hiç eğrilmeyi "elle belirtmek" isteyeyim ki?
(*) Bir istisna:
asenkron sistemler .