NSergeevich 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба Идея проста, реализация мне не понятна. У меня идут данные по шине [7:0]data Нужно, используя оба ребра клока сократить шину до [3:0]data, т.е. в два раза. Как это можно сделать на языке Verilog и/или есть ли шаблоны в Xilinx-е где это реализовывается? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба Идея проста, реализация мне не понятна. У меня идут данные по шине [7:0]data Нужно, используя оба ребра клока сократить шину до [3:0]data, т.е. в два раза. Как это можно сделать на языке Verilog и/или есть ли шаблоны в Xilinx-е где это реализовывается? Заранее спасибо! Частота то какая? Если не сильно высокая, то самое простое - удвоить тактовую на ФАПЧ и протактировать ею через мультиплесор 8->4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба Частота то какая? Если не сильно высокая, то самое простое - удвоить тактовую на ФАПЧ и протактировать ею через мультиплесор 8->4 частота 125mhz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба да есть шаблон 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]; надо аккуратно констраины прописать, и учитывать задержки появления данных на выходе при приеме.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба частота 125mhz ну, если кристалл более менее свежий (шустрый), то при правильной констрейнизации за 250МГц работать будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба ну, если кристалл более менее свежий (шустрый), то при правильной констрейнизации за 250МГц работать будет. двойная частота не нужна... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба двойная частота не нужна... Можно и так реализовать, но если например тактовая не очень качественная и скважность плавает, то можно нарваться на всякие нежелательные эффекты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще.... Да, вот это более ортодоксальный вариант. И по времянке проще будет. Хотя современные плисины и 400МГц качать способны. ЗЫ по теме есть всякого рода вспомогательная инфа http://www.xilinx.com/support/documentatio...tes/xapp692.pdf на профильных сайтах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба тогда на PLL генерят clk и clk_180( сдвинутый по фазе на 180 град), так даже правильнее чтобы не было задержки от инверсии клока. Это стандартный метод формирования дуал дата рейт. Так делают для памяти и ваще.... От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL. Метод с удвоенной тактовой также в некоторых случаях имеет преимущество - меньше локальных буферов для разводки IO клоков хотя частота выше в 2 раза. В общем, надо смотреть по ситуации. В случае ТС все три способа допустимы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL. Метод с удвоенной тактовой также в некоторых случаях имеет преимущество - меньше локальных буферов для разводки IO клоков хотя частота выше в 2 раза. В общем, надо смотреть по ситуации. В случае ТС все три способа допустимы. В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен. Как раз в этом случае он и уместен! Ибо RGMII - это как раз интерфейс к внешней (относительно ПЛИС) физике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 мая, 2015 Опубликовано 13 мая, 2015 · Жалоба От инверсии клока задержек не будет совсем, так как она физически реализуется не на отдельной догической ячейке, а внутри примитива DDR. В вашем случае вы на ровном месте используете дефицитный ресурс - PLL. в хилых DCM сразу имеет 2 выхода прямой и инверсный (вроде как) так что что один клок, что один и сдвинуты все равно 1 блок. А если брать спартан у него на всех ногах стоит DDR, но клок он внутри не инвертирует, а просит подавать снаружи клок и инверсию клока. И при подключении clk ~clk в схему явным образом добавлялся инвертер. Мы как-то давно беседовали на эту тему, я по апликейшин ноут от ксалинкса пытался наружу выдать деленный клок, и избежать гейтед клока при этом, собственно рекомендации оттуда брать клок и инверсию с ПЛЛ и привожу. Для более аккуратной времянки. ну и конечно Как раз в этом случае он и уместен! Ибо RGMII - это как раз интерфейс к внешней (относительно ПЛИС) физике. абсолютно верно для ксалинкс (для серии спартанов уж точно) потому что на выходе есть ДДР и их надо использовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NSergeevich 0 14 мая, 2015 Опубликовано 14 мая, 2015 · Жалоба В данном случае скорее всего речь идет о реализации RGMII и следовательно "примитив DDR" может быть не уместен. Не скорее всего, а речь идет именно о реализации RGMII. И у меня Spartan 6 XC6SLX100 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 14 мая, 2015 Опубликовано 14 мая, 2015 · Жалоба тогда в тимплайтах найдите DDR блок, это стандартный приметив и он есть на всех ногах 6 спартана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться