VHDL'de Yüksek Hızlı SerDes'e Giriş

Seriiser /deserialiser (SerDes) modülleri, modern yüksek hızlı veri iletişim sistemlerindeki temel bina bloklarıdır.Tek bir diferansiyel çift veya optik elyaf üzerinden aktarma için paralel veri akışlarını dönüştürür ve sonra alıcıdaki paralel verileri yeniden yapılandırır. Sağlam, yüksek hızlı bir şekilde SerDes in VHDL, dijital tasarım ilkeleri, saat mimarisi ve sinyal bütünlüğü için hızlı bir şekilde entegre etmek için tasarlanmıştır.Bu makale, SerDes'i VHDL'de tasarım uygulamaları, programlamayı kapsar.

SerDes Architecture Fundamentals

Tam bir SerDes, dört anahtar alt sistemlere ayrılabilir: serileştirici, solunum (CDR), ve hiza / devre devre devreleri paralel verileri serileştirirken, alıcı tarafı gelen seri akışından biraz saat geri kazanmalıdır ve her alt sistem VHDL tasarımı üzerinde farklı kısıtlamalar getirir.

Seriizer (Parallel-to-Serial Converter)

Seriktör bir şekilde alır:0)N-bit geniş paralel kelime ve uçlar, çizgide bir kez bir aradaki küçük not ortalaması olarak uygulanabilir.[Dönem:0) Genellikle [[Dönetici:2).N kez daha hızlı bir şekilde seri saati ile (Düzücü) ve en az zamanlayıcı, en az zamanlayıcının, en az zamanlayıcının, en az zamanlayıcının kontrol ettiği bir aradan kaçınılması gerekir.

Deserializer (Serial-to-Parallel Converter)

Deserializer ters operasyonu gerçekleştirir: Bir seri bit akışı alır ve paralel kelimeyi yeniden yapılandırır. gelen bitler her seri saat kenarında bir kayıt haline getirilir. tam kelime toplandığında, paralel çıkış otobüsünde geçerli bir ilişkili bayrak ile sunulur.

Saat Data Recovery (CDR)

CDR, gelen veri akışından seri saati alır. Bu kritiktir çünkü alıcı ve verici birçok sistemde frekans kilitlenmez.CDR genellikle faz açmalı devreler olarak uygulanır (PLL) veya gecikmeli döngü (DLL) ve gelen veri geçişleri ile eşleme işlemine izin veren yerel osilatör.CDR nadiren kapı düzeyinde sentez için VHDL'de tasarlanırken, CDR nadiren kontrol edilir.

Word Processing and Framing

CDR'den sonra, gelen bitler, model için arama yapan ve sonra sıralanana kadar farklı bir modele (örneğin, 8b/10b) sahip olmalıdır.

Yüksek Hızlı SerDes Design

Yüksek hızlı SerDes çok-gigabit oranlarında çalışır, genellikle şerit başına 10 Gbps'yi aşıyor. Bu hızlarda fiziksel ve dijital tasarım zorlukları telaffuz edilir.

Timing Closure ve Metastability

Serik ve deserializer, saat domainleri (parallel ve seri) arasındaki verileri transfer etmelidir. Metastability, kurulum / izin süreleri ihlal edilirse gerçekleşebilir. VHDL tasarımcıları senkronizasyonu ve analiz araçlarını kullanarak zamanlamayı tercih etmelidir.

Jitter ve Skew

Tamamlanan saatteki Jitter biraz hataya neden olabilir. Dizici, paralel ve seri alanlar arasındaki saat skew, bu şekilde yanlış sipariş etmeye yol açar.Bu şekilde savaşmak için, yüksek hızlı SerDes tasarımları genellikle diferansiyel sinyalleme, pre-emphzi ve eşitleme kullanır. bir VHDL açısından, tasarımcılar seri veri yolundaki şarj edici mantıktan; retiming (moving turn-flops to denge gecikmelere) yaygın bir tekniktir.

Güç Tüketimi

gigabit frekanslarında geçiş önemli dinamik güç alır. Power azaltma stratejileri saat gating, tedarik gerilimi azaltır ( hedef teknoloji izinleri varsa), ve daha düşük paralel genişliklerle serileri kullanarak (örneğin 32 bit) değiştirmek için 8 bits vs.

VHDL Yüksek Hızlı SerDes için VHDL Uygulamaları Teknikleri

Multi-gigabit oranlarında güvenilir bir operasyon elde etmek için, VHDL kodu özel donanım kaynaklarına sentezlenmelidir. Aşağıdaki bölümler pratik kodlama teknikleri ve örnekleri sunar.

Adi SerDes Hard Macros Kullanıyor

Çoğu modern FPGA'lar, yüksek çözünürlükte olan ve bu cihazlar için sertleştirilmiş SerDes transceivers (örneğin Xilinx GTY, Intel E-tile) içerir. Bu bloklar PLLs, CDR, deserializers ve daha sonra sarmalı bir modül ile yapılandırılır.Bu cihazlar için tam bir yumuşak kod için tam bir şekilde güvenilirdir.

Yumuşak SerDes Uygulama (Moderate Speeds)

Birkaç yüz megahertz'a kadar, VHDL'deki tamamen yumuşak bir SerDes uygulanabilir olabilir. Anahtar, özel yüz ayaklarla uygulanan değişim kayıtlarını ve karşıtları kullanmak ve uzun bir düktöryel zincirlerden kaçınmaktır. Aşağıda, bir yük etkinleştiren ve elhak sinyali içeren bir serileştirici örneği vardır.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Serializer_8to1 is
 Port (
 clk_ser : in STD_LOGIC; -- serial clock
 clk_par : in STD_LOGIC; -- parallel clock (1/8 rate)
 rst : in STD_LOGIC;
 data_in : in STD_LOGIC_VECTOR(7 downto 0);
 load : in STD_LOGIC;
 serial_out : out STD_LOGIC;
 busy : out STD_LOGIC
 );
end Serializer_8to1;

architecture Behavioral of Serializer_8to1 is
 signal shift_reg : STD_LOGIC_VECTOR(7 downto 0);
 signal bit_cnt : integer range 0 to 7;
begin
 process(clk_ser, rst)
 begin
 if rst = '1' then
 shift_reg <= (others => '0');
 bit_cnt <= 0;
 busy <= '0';
 elsif rising_edge(clk_ser) then
 if load = '1' then
 shift_reg <= data_in;
 bit_cnt <= 7;
 busy <= '1';
 elsif bit_cnt > 0 then
 shift_reg <= shift_reg(6 downto 0) & '0';
 bit_cnt <= bit_cnt - 1;
 else
 busy <= '0';
 end if;
 end if;
 end process;

 serial_out <= shift_reg(7);
end Behavioral;

Bu serileştirici tüm operasyonlar için seri saati kullanır.TheETHFLT:5), sinyal, paralel alandan bir saat alan geçişi gerekir.

Word Sorting ile Deserializer

Deserializer paralel kelimeyi ve sınırları belirlemelidir. Aşağıdaki örnek, bilinen bir model için arama yapan basit bir ayarlı devlet makinesi içerir (örneğin, 03).

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Deserializer_8b10b is
 Port (
 clk_ser : in STD_LOGIC;
 rst : in STD_LOGIC;
 serial_in : in STD_LOGIC;
 data_out : out STD_LOGIC_VECTOR(9 downto 0);
 aligned : out STD_LOGIC
 );
end Deserializer_8b10b;

architecture Behavioral of Deserializer_8b10b is
 signal shift_reg : STD_LOGIC_VECTOR(9 downto 0);
 signal bit_cnt : integer range 0 to 10;
 signal lock : STD_LOGIC := '0';
begin
 process(clk_ser, rst)
 begin
 if rst = '1' then
 shift_reg <= (others => '0');
 bit_cnt <= 0;
 lock <= '0';
 aligned <= '0';
 elsif rising_edge(clk_ser) then
 shift_reg <= shift_reg(8 downto 0) & serial_in;
 if bit_cnt < 10 then
 bit_cnt <= bit_cnt + 1;
 end if;
 -- check for alignment pattern at any bit position
 if lock = '0' then
 if bit_cnt = 10 then
 if shift_reg = "1111000010" then -- comma pattern
 lock <= '1';
 aligned <= '1';
 end if;
 end if;
 else
 -- After locked, output parallel word every 10 clocks
 if bit_cnt = 10 then
 data_out <= shift_reg;
 bit_cnt <= 0;
 end if;
 end if;
 end if;
 end process;
end Behavioral;

Gerçek bir sistemde, hizalama mantığı da paket başına biraz kaybedebilmeli ve birden fazla komün karakterle başlanmalıdır. CDR saati geri alındı; eğer değilse, bir PLL bloğu gereklidir.

Saat Domain Crossing Strategiess

Yüksek hızlı SerDes tasarımları kaçınılmaz olarak hızlı seri saate daha yavaş paralel bir saatten geçiyor.En güvenli yaklaşım, ilk önce alanları (örneğin, ilk kayıt) kontrol sinyalleri için kullanılabilir.In VHDL, FIFO, okuma ve yazma noktaları ile iki yönlü RAM olarak uygulanabilir.

Simülasyon ve Doğrulama

Yüksek hızda bir SerDes yapmak dikkatli testbench tasarımı gerektirir. Testbench veri kalıpları üretmelidir, jitter (CDR ve zamanlama marjlarını değerlendirmek için), ve bu yollatilen verilerin toplanmasından sonra veri aldığını doğrulamalıdır.

  • [FONT:0)Data nesli:[Dönetici:[Dönetici:0) PRBS (pseudo-random bit dizileri) gerçekçi trafik taklit etmek için PRBS kalıpları, inter-symbol müdahale ve model bağımsız jitter gibi hata kaynakları ortaya koyar.
  • [FONT=0)Clock modelleme: [Dönetici: [Dönetici: 0,3] Modelleme, gerçekçi faz gürültüleriyle seri saati modelleyebilir. Çoğu dijital simülatörü VHDL testbenches (e.g., [[Döneticileri ile) ilgili olarak jitter ile ilgili olarak yaklaşık olarak jitter ile ilgili olabilir.
  • [[Düzücük doğrulama[Dönemli doğrulama[[Dönemli)[[[Dönemli doğrulama)[[Dönemli doğrulama)[[Dönemli doğrulamalar için kontrol etmek için VHDL iddiaları, 8b/10b kodlamalarında geçersiz karakter kodları gibi 8b kodlama veya yanlışlık tespit ettikten sonra.
  • [FONT:0)Coverage-güdümlü test:[Dönetici:[Dönetici:0)Coverage-güdümlü test:[Dönetici:[Dönetici:0) Run long Simulators to enable the tick state machine can kilit on the komünal pattern under çeşitli ilk aşamalar altında. Fonksiyonel kapsama alanı kullanılabilirse Systemlog kullanarak kayıt olabilirsiniz.

Xilinx ve Intel gibi satışçılar SerDes ilkelleri için simülasyon kütüphanelerini sağlarlar. Bu kütüphaneleri kullanarak doğrulamayı hızlandırırlar çünkü PLL ve eşitlemenin analog davranışlarını modeller. Her zaman bu modelleri simülasyon testbench'inizde içerir.

Gelişmiş Konular: Pre-emphasis, Equalisation ve PCB Thinkations

VHDL kodu fiziksel katman davranışını değiştirememesine rağmen, SerDes kontrolörü bunları desteklerse eşitleme ayarlarını ayarlayabilir. Modern FPGA transceivers, kanal kaybı ve alıcı eşitleme için programlanabilir verici verici bir vericiye sahiptir. VHDL, bu, bir iç otobüsle kayıt yaptırmak için yapılandırılır (örneğin, AXI-Lite).

PCB düzeni eşit derecede kritiktir. Dizi izlerinin kontrol edilmesi gerekir (tipik olarak 100 GU diferansiyel), ve saat dağılımı, referans saati ile transceiver'nin özel saat girişi arasında skew'yi minimemelidir.Bu fiziksel kısıtlamalar VHDL dışındadır, ancak dijital tasarımcı, gerekli jitter toleransı ve geri dönüş özellikleri gibi, PCB mühendisine açık kılavuzlar sağlamalıdır.

Vaka Çalışması: VHDL'de bir Gigabit Ethernet SerDes'i Uygulamayın

Gigabit Ethernet (1000BASE-X) 8b/10b kodlama programı kullanır ve 1.25 Gbps'nin bir satır oranı. SerDes, 8bit paralel bir kelime artı bir kontrol için (K/D karakter ayrımı) 10bit seri akışına sahiptir. Alıcının saat kurtarmasını yapar ve komünize edilen verilerle eşanlamize eder.

  1. 8b/10b encoder (bir gözlüğü olarak uygulanabilir) 8-bit veri ve kontrol sinyalleri 10bit kod grubuna dönüştürür.
  2. 10bit kod grubu alır ve 125 Gbps'de seri olarak çıktı.
  3. Birazda değişim yapan ve komünörün şekli için arama yapan bir deserializer.
  4. Bir CDR bloğu (genellikle bir satıcıdan ayrı olarak) 125 MHz'in geri kalanını ( paralel taraf için) gelen 1.25 Gbps akışından elde etti.
  5. Geri dönüşüm için bir FIFO, geri alınan saat domainden sistem saat alanına veri aldı.

Bu mimari, tam olarak VHDL'de tanımlanabilir, analog CDR ve line sürücüsü/receiver. Birçok açık kaynak projesi, eğitim amaçlı bu uygulamaları sağlar, ancak üretim için sertleştirilmiş transceivers şiddetle tavsiye edilir.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

VHDL'deki yüksek hızlı bir SerDes'i uygulamak, dijital mantık ve yüksek frekanslı analog tasarım köprüleri teşvik etmek için zorlu bir görevdir. VHDL kodu, sentez kısıtlamaları ile yazılması ve saat alanı geçişleri ile zihindeki hızlar için, yüksek çözünürlükte yüksek çözünürlükte, yüksek çözünürlükte, yüksek çözünürlükte, yüksek çözünürlükte, yüksek çözünürlükte, tüm güçlendiricileri kullanarak inşa edilebilir.


[FONT:0)Dönemli Referanslar[Dönemli:0)

  • [FONT=0)Xilinx 7 Serisi Transceivers Kullanıcı Kılavuzu (UG476)) - Sertleştirilmiş SerDes ilkelleri hakkında ayrıntılı bilgi.
  • [FONT:0)Wikipedia: Seriizer/Deserializer[[Dönetici: 1) – SerDes konseptleri ve uygulamaları genel bakış.
  • [FONT:0)Intel Stratix 10 Transceiver Kullanıcı Kılavuzu[[DÜT:1) – başka bir satıcının yüksek hızlı seri arayüzlerine yaklaşımı.
  • [FONT:0]FPGARelated SerDes mph[[DÜT:1) – VHDL örnekleri ile SerDes tasarımına pratik giriş.