Перейти к содержанию
    

Подавление Jitter-а и Wander-a (Retiming) на ПЛИС

Не обходимо сделать схему подавления Jitter-а и Wander-a ( так называемый Retiming) на ПЛИС с помощью двупортовой памяти либо FIFO, подскажите как можно реализовать схему управления записью/чтением в буфер. Запись происходит с одной частотой (точнее с той же, но с Jitter-ом и Wander-ом), а чтение с другой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если на ПЛИС, то чем не устраивают стандартные библиотечные двухпортовые FIFO ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если на ПЛИС, то чем не устраивают стандартные библиотечные двухпортовые FIFO ?

Человек вообще спрашивал о принципе построения в смысле управления FIFO.

Т.к. FIFO это только часть того, что называется Jitter Attenuator.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как цитировать. потому пишу в кавычках.

"Возьмите описание lxt332 на Intel. "

 

Вобще-то мне нужно на ПЛИС забацать аналог LXT6282. Точнее схему ретайминга, схему я сделал, но проблема с сигналами записи/чтения в FIFO они друг относительно друга плавают, вот как бы сделать так чтобы сигналы были синхронны?

Хотя дело может быть в самой ПЛИС мне приходиться поект создавать под FLEX6000, при моделировании после нормального сигнала возникают непонятные пики, как с этим бороться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проблема с сигналами записи/чтения в FIFO они друг относительно друга плавают, вот как бы сделать так чтобы сигналы были синхронны?

Задача решается при использовании более высокой частоты тактирования (Clk), лучше в 2^n больше, чем битрэйт потока (ClkIn). Необходимым является всегда(!) выполнение условия T(ClkIn)>T(Clk)+delta

-- SyncRo
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity SyncRo is 
   port(
       Clk  : in    std_logic;
       ClkIn   : in    std_logic;
 Reset    : in    std_logic;
       D       : in    std_logic;
       Q       : out   std_logic;
       E       : out   std_logic
 );
   end SyncRo;

architecture default of SyncRo is

signal r1, r2, dd   : std_logic;

begin

ClkInProc: process (Reset, ClkIn)
begin
if(Reset='1') then
   r1<='0';
   dd<='0';
elsif(r2='1') then
   r1<='0';
elsif(ClkIn = '1' and ClkIn'event) then
   r1<='1';
   dd<=D;
end if;
end process;

ClkProc: process (Reset, Clk)
begin
if(Reset='1') then
   r2<='0';
elsif(Clk = '1' and Clk'event) then
   r2<=r1;
end if;
end process;

Q<=dd;
E<=r2;

end default;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не обходимо сделать схему подавления Jitter-а и Wander-a ( так называемый Retiming) на ПЛИС с помощью двупортовой памяти либо FIFO, подскажите как можно реализовать схему управления записью/чтением в буфер.  Запись происходит с одной частотой (точнее с той же, но с Jitter-ом и Wander-ом), а чтение с другой.

 

Алгоритмы, используемые для построения FIFO (в т.ч. с различными частотами записи и чтения) приводятся на сайте www.xilinx.com (Product & Services -> Application Notes). В архиве приложения (APPx) находится pdf-файл, а так же исходники на VHDL и Verilog.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гм, я не очень силен верилоге, что нужно в исходниках править, чтобы заработало в квартусе, он выдает ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала быстрой фапч восстанавливаем тактовую из потока, затем делим ее на некий коэф. чтобы в итоге получить скажем 1 кГц. затем стоит уже более медленная фапч, она следит за восстановленной тактовой. Далее две выделенные тактовых перетактируют данные по закольцованному сдвиговому регистру.

 

Вот собственно

post-6532-1121057958_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала быстрой фапч восстанавливаем тактовую из потока, затем делим ее на некий коэф. чтобы в итоге получить скажем 1 кГц. затем стоит уже более медленная фапч, она следит за восстановленной тактовой. Далее две выделенные тактовых перетактируют данные по закольцованному сдвиговому регистру.

 

Вот собственно

 

В том-то и дело, что мне нужно без ФАПЧа. Схема частично заработала. Осталась самая малость- заставить проходить ПСП, т.к произвольное слово проходит.

Спасибо всем откликнувшимся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и скажите, научите делать FIFO, если с языками не владах возьмите лучше готовые мегакорки Altera.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и скажите, научите делать FIFO, если  с языками не владах возьмите лучше готовые мегакорки Altera.

 

Дело в том, что готовые Альтеровские как-то странно работают, возможно это особенность флекса 6000. Проявляется странность в появлении паразитных коротких импульсов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что готовые Альтеровские как-то странно работают, возможно это особенность флекса 6000. Проявляется странность в появлении паразитных коротких импульсов.

Где эти импульсы появляются? Может там не регистровые выходы, тогда естественно возможны глитчи, ставим триггер(или соответствующую опцию в свойствах корки) и все дела.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где эти импульсы появляются? Может там не регистровые выходы, тогда естественно возможны глитчи, ставим триггер(или соответствующую опцию в свойствах корки) и все дела.

Перешел на двухпортовую память и проблема решилась, схема работает (на выходе вижу такой же сигнал как и на входе, но без джиттера) проблема только одна при подаче ПСП пробегает ошибка, почему пока не ясно, т.к. при подаче любого слова ошибки нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...