FPGA üzerinde işlem zamanlaması


10

Ben fpgas için yeniyim ve anladığımdan emin değilim bazı zamanlama incelikleri var: tüm senkron süreçlerim aynı kenarda tetiklenirse, girişlerim yükselen bir kenarda 'yakalanır' ve çıkışları aynı kenarda değişir ..? sıradaki yükseliş?

birinin çıktısının diğerinin girişlerine aktığı iki modülüm varsa, modülüme girişlerin (önceki bir modülün çıkışları) yakalandıkları anda değiştiği durumlar ortaya çıkabilir.

Ekran görüntüsü

205ns işaretçisi, neden bahsettiğimi gösteriyor, op ve data_write benim girişlerim. Bu test durumunda her şey "sadece çalışıyor" gibi görünüyor, ama simülasyonda ne zaman yakalandığı tam olarak belli değil. Data_write = "0001 ..." 205ns veya (205ns + 1 saat çevrimi) hızında yakalanıyor mu? ISim'de kurulum ve tutma sürelerini gösteren daha ayrıntılı dalga formları almanın bir yolu var mı?

Teşekkürler.

Yanıtlar:


12

Flip-flopta her zaman bir yayılma gecikmesi vardır. Genellikle "saat-Q" gecikmesi denir.

Bu, girdilerinizin kenarda yakalandığı ve çıktıların aynı kenarda değiştiğini, ancak birkaç nanosaniyeden sonra olduğu anlamına gelir. Bu birkaç nanosaniye gecikme yeterlidir (flip-floplarınız çoğu FPGA'da olduğu gibi "sıfır tutma süresi" ile tasarlanmışsa), değişikliklerin bir sonraki saat kenarına kadar aşağı akışlı flip-flopları etkilememesi yeterlidir.

İşlevsel veya RTL simülasyonunda (muhtemelen sonucunuzu oluşturmak için yaptığınız şeydir) gecikme, kalıcı nanosaniye olarak simüle edilmeyecektir. VHDL'de, teknik olarak hiçbir zaman olmayan simülatör saatinin tek bir delta döngüsü olacak . Bu, simülatör çıkışındaki gecikmeyi görmeyi imkansız hale getirir. Bununla birlikte, simüle edilmiş ideal parmak arası terliklerde, çıktı değişikliklerinin aşağı akış parmak arası terliklerini etkilememesi yeterlidir.

Yer sonrası ve rota simülasyonu yaparsanız, uygun gecikmeleri de ekleyebilmelidir, böylece bu etkileri net bir şekilde, artan simülasyon çabasıyla görebilirsiniz.


1
Bir VHDL RTL simülasyonunda, gecikme tek bir delta döngüsüdür. Bu kesinlikle sıfır zaman alır, ancak mevcut delta çevrimindeki tüm güncellemeler bir sonraki delta döngüsü başlamadan önce tamamlandığından simülasyonun düzenli bir şekilde ilerlemesine izin verir. Zamanlanmış başka Delta çevrimi kalmadığında, o zaman zaman geçebiliriz.
Martin Thompson

1

İstenen saat kenarında (yükselen veya düşen) D çıkışındaki giriş Q çıkışında görünür. Bu, sınırlı bir zaman alır (Saatten Q'ya gecikme) ve zamanlama ihlali olmadığı varsayılarak, D her seferinde yalnızca bir FF'den geçecektir (yani Q'ya bağlı başka bir FF girişi varsa, ikinci FF değişmeden önce FF1 Q değerini geçirecektir.

Simülasyonunuza zamanlamaları dahil etmek için tasarımınızı sentezlemeniz ve yerleştirmeniz ve yönlendirmeniz, ardından bir post yer ve rota simülasyonu çalıştırmanız gerekir. Bu, tüm kombinasyonel, saatten Q'ya gecikmeler vb. HDL simülasyonunda bu zamanlamalardan hiçbiri yoktur, bu nedenle zamanlama sınırlarını değil, yalnızca temel işlemi test etmek için yararlıdır. Ayrıca, belirli bir saat alanının hız sınırlarını söyleyecek, herhangi bir zamanlama ihlali olup olmadığını size bildirecek ve çeşitli yollar için zamanlama gevşemesini gösterecek bir zamanlama raporu alacaksınız. Bu bilgiyi, değişikliklerin nerede yapılması gerektiğini veya yazılıma ihlalin sorun olmadığını söylemek için eklenen kuralları (örneğin, çok döngülü yollar veya saat yönleri gibi yollar için) bulmak için kullanabilirsiniz.


1

Bu, önceki cevaplara ek olarak kastedilmektedir, fikri aldığınıza inandığımdan.

Bu hususlar başlangıçta simülasyon RTL tasarımları yaparken biraz zor olabilir, çünkü ideal / fonksiyonel / RTL simülasyonlarındaki nedenin ve etkinin ne olduğunu görmek zor olabilir (= yayılma gecikmesi yok).

Doğru simülatörü ile, delta gecikmeler olabilir aslında görsel hale. ISim bunu yapmaz, ancak ei ModelSim'de saat kenarlarında delta genişletmeyi etkinleştirebilirsiniz . Aşağıda, sorunla karşılaştığım bir üçüncü taraf IP'sinden örnek bir ekran görüntüsü var.

ModelSim'de Delta gecikme genişlemesi

csaat sinyalidir ve +1vb. zaman olarak görüntülenen delta çevrimleridir.

Hem simülasyonun hem de tasarımın gerçekten ideal ve eşzamanlı olduğu , simüle edilmiş gecikme olmadan bir tasarım simüle edilirse , prensip olarak, belirli bir saat kanadındaki tüm sinyal değişikliklerini o saat kanadından biraz sonra gerçekleştiğini görebilirsiniz. Bu nedenle, örneğinizde 205 ns'de data_write= 0000...yakalanan değerdir. İlk ünitede Diğer bazı mantık sinyali değişiyor data_writeiçin 0001...aynı kanadını ve bu sinyal görünür data_writehafifçe saat yan sonra. Bu "biraz sonra" ideal bir simülasyonda (örneğin) bir veya birkaç simülasyon deltası (ISim'de görünmez, ancak delta genişlemeli ModelSim'de) veya gerçek dünyada daha sonra bazı ps / ns olabilir.

Bir yan not: RTL tasarımı ile ilgili önemli bir şey, girişlerin her zaman saat kanadında örneklendiğinden emin olmaktır - bir delta döngüsü daha sonra bile çok geç. Giriş bir delta sonra geçerli olmayabilir. Veya başka bir deyişle: "saat yolunu karıştırmayın".

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.