Yüksek hızlı Data Streams için Vhdl'te Düşük Enerjili Filtreler
Table of Contents
Giriş Giriş Giriş
Dijital filtreleri en az geçncy ile tasarlayın, yüksek hızlı veri akışlarını gerçek zamanlı sistemlerde işleme ve yazılım tanımlı radyodan yüksek frekanslı ticaret motorlarına, giriş ve çıkış arasındaki gecikme doğrudan sistem performansı ve doğrulığı etkiler. VHDL (VHSIC Hardware Description Language) FPGAs ve ASICs'te uygulama için bir baskın aracı olarak kalır, zamanlama, kaynak kullanımı ve mimarisi sunar.
Düşük-Latency Digital Filtrelerinin Temelleri
Dijital bir filtrede Latency, bir giriş örneği için, bir çıkış örneği üretmek için gereken zaman, saat döngüsü veya mutlak zaman için ölçülmelidir. Yüksek hızlı uygulamalar için, her döngü önemlidir. gecikmenin birkaç yüz nanosaniyesi bile kapatılabilir veya telekomünikasyonda paket kaybına neden olabilir.
birincil ölçüm şu ki:0) geç kalmış durumdaki (Ceff) genellikle filtrenin ilk geçerli giriş sayısına göre sıralanırken, geç saatteki veri için mühendisler ayrıca [[Grup gecikmesi[Döneticileri değiştir] [Dönderin frekansı bileşenlerinin ortalama gecikmesi.
Düşük gecikme gerektiren uygulamalar şunları içerir:
- [FONT:0) Yüksek frekanslı ticaret (HFT)) – mikrosaniye seviyesi geçliği kârlılığı belirler.
- [FONT:0]Radar ve elektronik savaş[[Dönemli: 1) Gerçek zamanlı hedef algılama minimum işleme gecikme gerektirir.
- [FONT:0)Software- tanımlanmış radyo (SDR))[T][/FONT)[GÜNCÜSTRİYE)
- [FONT:0)Medical görüntüleme[DÜT:1) - ultrason ve MRG ışınları canlı geri bildirim için düşük seviyeli dijital filtrelere ihtiyaç duyar.
Bu kullanım vakalarını anlamak, tasarımcılar kaynak tahsisi ve mimari seçimleri haklı çıkarır.
Filtre Tasarımı için VHDL: Güçlüler ve Sınırlar
VHDL, eş zamanlı donanım davranışını tanımlamak için titiz bir çerçeve sağlar. Güçlü tipleme, jenerikler ve sinyal atama semantics, sentezlenebilir ve zamanlama-korrect olması gereken filtre uygulamaları için idealdir.C,DL gibi yüksek seviyeli diller aksine altta kayıt-transfer seviyesini ortaya çıkarır (RTL), tasarımcılara kapı seviyesinde geçn geçebilmelerini sağlar.
VHDL'yi düşük çözünürlük filtreleri için kullanmanın temel avantajları şunlardır:
- [FONT:0)Ekmüm paralellik[[Dönetici:0)[Dönetici:0)[Dönetici paralellik[Dönetici: 00,00T:1) – VHDL süreçleri eş zamanlı olarak çalışır, FPGA mantığının paralel doğasını yansıtacak şekilde.
- [FONT:0)Dön-flops üzerindeki kontrol[[Dönetici: 1) Tasarımcı kayıtların nereye yerleştirildiğine karar verir.
- [FONT:0)Genericity[[[Dönderlik: 1)) - kat genişliği, filtre düzeni ve boru hattı derinliği için genellemeler kullanarak yeniden kullanılabilir tasarımları sağlar.
- [FONT=0]Simulation letting[[Dönetici: 1) VHDL kapı seviyesinde gecikmeler (SDF back-annotation) doğru geçncy tahmin için simüle eder.
Bununla birlikte, VHDL de sınırlamaları vardır: büyük ölçekli tasarımlar için fiilose ve manuel boru hatları hataya maruz kalabilir çünkü araç-tavyetli yükleri yüksek seviyeli sentezler (HLS) C/C++ kodundan VHDL üreten araçlar sunar, ancak ultra-düşüküm gereksinimleri için, el-kod VHDL üstün kalır.
Filtre Mimarileri: IIR Latency Trade-offs karşı
Finite Impulse Response (FIR) ve Sonsuz Impulse Response (IIR) filtreler, her ikisi de uygulamanın hızı ve faz gereksinimlerine uyması gereken farklı özelliklere sahiptir.
Tahmin edilebilir Latency için FIR Filtreler
FIR filtreler doğal olarak istikrarlı ve lineer bir faza sahiptir (sepisler simetrik olduğunda). Geçimleri öncelikle bu muslukların sayısı ve boru hattı derinliğine göre belirlenir. FIR filtreler yüksek hızda tercih edilir (MAC) zincir. çünkü onların geç FIR, gecikmeli bir sürüme bağlı değildir.
Düşük çözünürlük FIR tasarımları genellikle bir boru hattı aracılığıyla yapılır: 0.liksel dizin[Dönetici: 1) veya her bir muslukun özel bir çok basit ve ekere sahip olduğu tam paralel mimari, ve sonuçlar 5 saat döngüsü artı giriş / kayıt sayısı ile dolu bir miktara sahiptir.
IIR Filtre: Compact ama Latency-Sensitive
IIR filtreler FIR'dan daha az musluk ile aynı frekans yanıtını elde eder, bu da kaynak kullanımını azaltır. Ancak, geri bildirim döngüleri, mimarinin yeniden yapılandırılamaması durumunda filtrelerini genişletir (örneğin, görünüşe göre).
Birçok hızlı tasarımda, FIR filtreler varsayılan seçimdir çünkü tahmin edilebilir gecikmeli AXI4-Stream gibi akış protokolleri ile uyumlu hale gelir ve elhakın belirli bir sayıda döngü içinde gerçekleşmelidir.
VHDL'de Low Latency için Anahtar Tasarım Stratejileri
VHDL'deki düşük seviyeli filtreler, boru hattı, paralellik ve kaynak haritalama için sistematik bir yaklaşım gerektirir. Aşağıdaki stratejiler üretim sistemlerinde kanıtlanmıştır.
Pipelining: Eleştirel Yolun Yok Edilmesi
Borulining, kayıtlar arasındaki kombinasyonel yolu kısa sürede azaltılacak en etkili yoldur. Borulining olmadan filtre, kritik yol çok sayıda girişten geçer, ekers ve muhtemelen geri bildirim, maksimum saat boyunca boru hatları kayıtlarını sınırlandırabilir.Her bir aşamada bir saat boyunca devam edebilir, ancak zaman içinde toplam geç saatler boyunca toplam geç saatler boyunca (saat döngüsü * dönem) azalır.
Örneğin, iki boru hattı aşamasıyla, toplam 16-tap FIR'nın 50 ns'in kritik bir yolu olabilir, 20 mm'ye karşı saat frekansı kısıtlayabilir.Bu durumda, boru hatları aslında 20 ns'a azaltır ve [Döndergiler dahil) 4 döngüyü azaltır, ancak frekans iyileşmesi yeterliyse mutlak zaman azaltır.
Paralellik ve Retiming
Saat döngüsünde bir örnek hazırlamak yerine, 1 GHz ADC, 250 MHz FPGA'yı satın almak için paralel olarak birden çok örnekle çalışır:0)polifaklama için:2parallel.In VHDL, bu, filtreyi çoğaltmak ve veri girişiyle otomatik olarak yeniden kayıt altına almak için yapılır.
Kaynak Optimizasyonu: DSP Bloklar ve Dağıtılmış Mantık
Modern FPGAs, DSP dilimlerini (örneğin, iç borular ve özel bloklar) tek bir hücrede kurmak için çok basit bir şekilde entegre eder.Örneğin, DSP48E2, Intel DSP blokları) bu bloklar, minimum geç ayarlayıcıyı kullanarak doğrudan bileşen bildirimlerini kullanarak ayarlayabilirler. Örneğin, DSP48E2 dilimleri kullanarak, sıfırdan fazla betonla yeniden yapılandırılabilir ve ek mantıkla yeniden yapılandırılabilir.
Katalometre için, ROM olarak blok RAM (BRAM) kullanın, ancak BRAM'ın geçncy'yi okuduğunuzun genellikle 2 döngüsü olduğunu unutmayın. Bunu en aza indirmek için, LUT hafızasındaki mağaza katları (SRL32 veya basit kayıtlar) filtre düzeni küçükse.
Adım-Adım Uygulama: VHDL'de Düşük Seviyeli A Filtre 8Tap FIR Filtresi
Bu örnek 8 symmetric katlarla tamamen paralel bir FIR filtre gösterir. Tasarım kritik yolu kısa tutmak için bir boru hattı eker ağacı kullanır.
-- 8-tap symmetric FIR, fully parallel
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity fir_low_latency is
generic (
DATA_WIDTH : integer := 16;
COEF_WIDTH : integer := 16
);
port (
clk : in std_logic;
reset : in std_logic;
data_in : in std_logic_vector(DATA_WIDTH-1 downto 0);
valid_in: in std_logic;
data_out: out std_logic_vector(DATA_WIDTH+COEF_WIDTH-1 downto 0);
valid_out: out std_logic
);
end fir_low_latency;
architecture rtl of fir_low_latency is
-- coefficient ROM (single cycle read)
constant COEFFS : integer_array(0 to 7) := ( ... );
-- internal registers
signal tap_regs : array(0 to 7) of signed(DATA_WIDTH-1 downto 0);
signal prod : array(0 to 7) of signed(DATA_WIDTH+COEF_WIDTH-1 downto 0);
signal sum_stage1, sum_stage2, sum_stage3 : signed(DATA_WIDTH+COEF_WIDTH-1 downto 0);
begin
-- input shift register
process(clk)
begin
if rising_edge(clk) then
if valid_in = '1' then
tap_regs(0) <= signed(data_in);
for i in 1 to 7 loop
tap_regs(i) <= tap_regs(i-1);
end loop;
end if;
end if;
end process;
-- pipeline stage: multiply (one cycle)
process(clk)
begin
if rising_edge(clk) then
for i in 0 to 7 loop
prod(i) <= tap_regs(i) * COEFFS(i);
end loop;
end if;
end process;
-- pipeline stage: adder tree (3 cycles for 8 inputs)
process(clk)
begin
if rising_edge(clk) then
-- stage 1: pair sums
sum_stage1 <= prod(0) + prod(1) + prod(2) + prod(3);
sum_stage2 <= prod(4) + prod(5) + prod(6) + prod(7);
-- stage 2: final sum
sum_stage3 <= sum_stage1 + sum_stage2;
end if;
end process;
-- output register
process(clk)
begin
if rising_edge(clk) then
data_out <= std_logic_vector(sum_stage3);
valid_out <= valid_in; -- delayed by 5 cycles total
end if;
end process;
end rtl;
Bu tasarım, toplam 5 boru aşamasını (tavı değişimi, iki eker ağaç aşamalarını ve çıktı), 5 saat döngüsünin geç saatlerinde ortaya çıkıyor. Adder ağacı uzun kombinasyonel yollar ayarlamak için çok sayıda boru kaydı kullanır. daha büyük musluk noktaları için eker ağacı derinliğini ayarlayarak, prensip kalır: toplamı dengeli bir ikili ağaç aşamalarına ayırın.
Geçerli out sinyalinin aynı sayıda döngü tarafından veri yolu olarak gecikmesi gerektiğini unutmayın. Bu, kuyrukları korumak için akış arabirimleri kritiktir. VHDL'de, geçerli sinyale kaydolan basit bir değişim kaydı bunu gerçekleştirir.
Düşük-Latency Filtrelerinin Doğrulaması ve Testleri
Simülasyon hem filtrenin frekans yanıtını hem de geçkiğini doğrulamak için gereklidir.Gerekli giriş sıralarını (impulse, adım, sinusoidal) ve SDF ile zaman arasındaki farkı ölçmek için zaman aralığınızı ölçmek için "şimdilik süresi" ile kullanın.
Yüksek hızlı veri akışları için, aynı zamanda doğru doğru doğru:0)data geçerli elhake[Dönetici:2) ve [[Döneticileri [Dönderin baskısı[Döneticileri ile))) (Eğer AXI4-Stream kullanarak) geçerli/okuyucu mantığının gecikmesi genel sisteme gider; ellerin geri dönüşlerinden kaçınarak minimuma tutun.
Sub-Cycle Latency için İleri Teknikler
Dağıtılmış Arithmetic (DA)
Belirli kateratifler için boru hatları (düşük) ve geçişçiler, belirli kateratörleri için boru hatlarının sayısını azaltabilecek durumda. Ancak, DAHA'lar ultra-düşükücükler için uygun olan sabit filtreler için en uygun.
Systolic Dizileri
Systolic dizileri düzenli olarak, verinin bir işleme elementleri arasındaki ritmik bir modelde akışları olduğu yapılardır.Bir FIR filtre için, bir systolic serisi, bir sonlu erişim için saat döngüsünde bir çıkış yolu ile popülerdir (artık boru hatları).Her işlem elemanı yerel kayıt ile tekrarlanır. VHDL kodları doğrudan donanıma ve düzenli olarak zamanlama ayarlanır. Systolic dizileri yüksek performanslı bir hesaplama ve FIR filtre uygulamaları için yüksek performanslı bir uygulamada popülerdir.
Adder Ağacının Özel Borulining
Çok geniş filtreler için (örneğin, 128 musluk), ekitre ağacı, tam bir propagate olmadan boru hattına (örneğin, bu teknik DSP48E2 bloklarında kullanılır ve DSP48E2 bloklarında kullanılabilir.)
En İyi Uygulamalar ve Ortak Pitfalls
- [[Dönemli sinyaller, doğrulayıcı ve veri yolsuzlukları ile paralel olarak, doğrulayıcı ve yanlış bir şekilde yanlış ayarlanan gecikme ve veri yolsuzluklarını geciktirmek için genel bir hatadır.
- [FONT:0) senkronizasyonu kullanarak, başlangıçta ekstra geçliğe neden olabilecek rastgele ilk devletlerden kaçınmak için senkronizasyonu kullanın.
- [FONT:0) Sinyalleri etkinleştirebilme konusunda bir düktif mantık (Döneticileri)[Döneticileri oluşturma imkanı sağlar. Kayıt, özel yüz-flop kontrolleri aracılığıyla sağlar.
- [FONT=0)Prefer satıcısı tarafından yapılan DSP uygulamaları[[[Döneticileri) hız ve geç saat için çok sayıdakiler için. DSP48E2 dilim, örneğin, 2 döngüde bir çoğaltma yapabilir (parça kayıt dahil).
- [[Dönemler için RAM'ı kullanırken [Dönemler için RAM”ı kullanarak, adres ve veri çıktılarını ekstra gecikmeleri eklemeden kaçınmak için boru hattı. Alternatif olarak, küçük katlama setleri için dağıtılmış RAM kullanın.
- [FONT:0] Gerçek jitter ile ilgili olarak ([Döntgen: 1) Zaman zaman aralığına göre saat 1,00 $ 3.
- [FONT=0]Prob.tr|projeksiyonu kullanarak tasarım (Ceff) tekrarlama özellikleri kullanarak, ancak yeniden yapılanmanın gereksiz kayıtları ekleyerek genel çevrim sayısını artırmadığını doğrulama.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Düşük çözünürlükli dijital filtreleri VHDL'de yüksek hızlı veri akışları için bir mimari bilgi, dikkatli borulama ve FPGA kaynaklarının verimli kullanımı. Doğru filtre tipi (tipik olarak FIR), agresif borular ve paralelleştirme uygular ve belirli bir DSP bloklarını kullanarak, mühendisler karmaşık bir simülasyon için bile alt-100 ns latencies'u karmaşık bir şekilde gerçekleştirirler.Bu makalede belirtilen tekniklerle sabit sinyal işleme ve sabit sinyal işleme uygulamaları ile sabit bir şekilde ayarlanırlar.
VHDL filtre uygulamaları ve FPGA optimizasyonu hakkında daha fazla okuma için, algFLT:0)FPGA4Fun öğreticileri ) ve satıcı başvuru notları gibi kaynakları görün.