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

Использование dual edge clk

Идея проста, реализация мне не понятна.

У меня идут данные по шине [7:0]data

Нужно, используя оба ребра клока сократить шину до [3:0]data, т.е. в два раза.

 

Как это можно сделать на языке Verilog и/или есть ли шаблоны в Xilinx-е где это реализовывается?

Заранее спасибо!

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


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

Идея проста, реализация мне не понятна.

У меня идут данные по шине [7:0]data

Нужно, используя оба ребра клока сократить шину до [3:0]data, т.е. в два раза.

 

Как это можно сделать на языке Verilog и/или есть ли шаблоны в Xilinx-е где это реализовывается?

Заранее спасибо!

 

Частота то какая? Если не сильно высокая, то самое простое - удвоить тактовую на ФАПЧ и протактировать ею через мультиплесор 8->4

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


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

Частота то какая? Если не сильно высокая, то самое простое - удвоить тактовую на ФАПЧ и протактировать ею через мультиплесор 8->4

 

частота 125mhz

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


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

да есть шаблон ddr завется.

 

идея очень простая

2 триггера один захватывает данные по восходящему клоку, другой по нисходящему, на выход подается мультиплексор этих 2 триггеров,

 

input [7:0] in;
output [3:0] out;

reg [3:0] out1;
reg [3:0] out2;

assign out = (clk == 1'b1) ? out1 : out2;
always @(posedge  clk)
    out1 <= in[3:0];

always @(negedge clk)
    out2 <= in[7:4];

 

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

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


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

частота 125mhz

ну, если кристалл более менее свежий (шустрый), то при правильной констрейнизации за 250МГц работать будет.

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


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

ну, если кристалл более менее свежий (шустрый), то при правильной констрейнизации за 250МГц работать будет.

двойная частота не нужна...

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


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

двойная частота не нужна...

Можно и так реализовать, но если например тактовая не очень качественная и скважность плавает, то можно нарваться на всякие нежелательные эффекты.

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


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

тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще....

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


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

тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще....

Да, вот это более ортодоксальный вариант. И по времянке проще будет. Хотя современные плисины и 400МГц качать способны.

ЗЫ по теме есть всякого рода вспомогательная инфа http://www.xilinx.com/support/documentatio...tes/xapp692.pdf на профильных сайтах

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


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

тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще....

От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL.

Метод с удвоенной тактовой также в некоторых случаях имеет преимущество - меньше локальных буферов для разводки IO клоков хотя частота выше в 2 раза.

В общем, надо смотреть по ситуации. В случае ТС все три способа допустимы.

 

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


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

От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL.

Метод с удвоенной тактовой также в некоторых случаях имеет преимущество - меньше локальных буферов для разводки IO клоков хотя частота выше в 2 раза.

В общем, надо смотреть по ситуации. В случае ТС все три способа допустимы.

В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен.

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


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

В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен.

Как раз в этом случае он и уместен! Ибо RGMII - это как раз интерфейс к внешней (относительно ПЛИС) физике.

 

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


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

От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL.

 

в хилых DCM сразу имеет 2 выхода прямой и инверсный (вроде как) так что что один клок, что один и сдвинуты все равно 1 блок.

А если брать спартан у него на всех ногах стоит DDR, но клок он внутри не инвертирует, а просит подавать снаружи клок и инверсию клока. И при подключении clk ~clk в схему явным образом добавлялся инвертер.

 

Мы как-то давно беседовали на эту тему, я по апликейшин ноут от ксалинкса пытался наружу выдать деленный клок, и избежать гейтед клока при этом, собственно рекомендации оттуда брать клок и инверсию с ПЛЛ и привожу. Для более аккуратной времянки.

 

ну и конечно

Как раз в этом случае он и уместен! Ибо RGMII - это как раз интерфейс к внешней (относительно ПЛИС) физике.

абсолютно верно для ксалинкс (для серии спартанов уж точно) потому что на выходе есть ДДР и их надо использовать.

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


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

В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен.

 

 

Не скорее всего, а речь идет именно о реализации RGMII. И у меня Spartan 6 XC6SLX100

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


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

тогда в тимплайтах найдите DDR блок, это стандартный приметив и он есть на всех ногах 6 спартана.

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


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

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

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

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

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

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

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

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

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

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