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.