aat_81 0 Posted March 23, 2011 · Report post Всем доброго времени суток. Может быть кто то сталкивался с такой задачей и сможет помочь с оптимальным решением. Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку. У кого какие идеи есть по данному вопросу? Quote Ответить с цитированием Share this post Link to post Share on other sites
MM_Andrey 0 Posted March 23, 2011 · Report post Используйте FIFO, и будет Вам счастье. Quote Ответить с цитированием Share this post Link to post Share on other sites
Methane 0 Posted March 23, 2011 · Report post Всем доброго времени суток. Может быть кто то сталкивался с такой задачей и сможет помочь с оптимальным решением. Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку. У кого какие идеи есть по данному вопросу? А что за шины? И как такое вообще случилось? PLL может сгенерить два клока, причем с заданым углом между ними. Quote Ответить с цитированием Share this post Link to post Share on other sites
aat_81 0 Posted March 23, 2011 · Report post А что за шины? И как такое вообще случилось? PLL может сгенерить два клока, причем с заданым углом между ними. Обычных две восьмибитных шины. Дело в том что это данные с внешнего для FPGA чипа поэтому поправить ничего к сожалению нельзя. Да мне вроде как два клока то не нужно...наоборот нужно сделать один клок и одну шину данных. Используйте FIFO, и будет Вам счастье. С таким же успехом Вы могли сказать напиши нужный код и будет тебе счастье. Quote Ответить с цитированием Share this post Link to post Share on other sites
Methane 0 Posted March 23, 2011 · Report post Обычных две восьмибитных шины. Дело в том что это данные с внешнего для FPGA чипа поэтому поправить ничего к сожалению нельзя. Да мне вроде как два клока то не нужно...наоборот нужно сделать один клок и одну шину данных. Ну так и работать от клока внешней FPGA. Quote Ответить с цитированием Share this post Link to post Share on other sites
aat_81 0 Posted March 23, 2011 · Report post Ну так и работать от клока внешней FPGA. Эти данные нужно передать третьему чипу который на вход принимает один клок. Поэтому объединять все таки нужно. Quote Ответить с цитированием Share this post Link to post Share on other sites
evgforum 0 Posted March 23, 2011 · Report post Эти данные нужно передать третьему чипу который на вход принимает один клок. Поэтому объединять все таки нужно. На выходе должна получиться 8-разрядная шина с удвоенным клоком? Quote Ответить с цитированием Share this post Link to post Share on other sites
aat_81 0 Posted March 23, 2011 · Report post На выходе должна получиться 8-разрядная шина с удвоенным клоком? Нет. На выходе должна быть шина с разрядностью двух шин(допустим на вход идут две восьмибитных соответственно на выходе должны быть одна шестнадцатибитная). С клоком тоже думаю понятно частота должна быть такой же как на входе. Странно как забыл это указать когда создавал тему... Quote Ответить с цитированием Share this post Link to post Share on other sites
Methane 0 Posted March 23, 2011 · Report post Нет. На выходе должна быть шина с разрядностью двух шин(допустим на вход идут две восьмибитных соответственно на выходе должны быть одна шестнадцатибитная). С клоком тоже думаю понятно частота должна быть такой же как на входе. Странно как забыл это указать когда создавал тему... Тогда попробуйте синтезировать два 8и битных FIFO на пару слов. Quote Ответить с цитированием Share this post Link to post Share on other sites
dvladim 0 Posted March 23, 2011 · Report post Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку. Кроме двух FIFO посоветую следующее: пересинхронизировать одну из шин на другой клок. Законстрейнить это исходя из худшего соотношения фаз. Т.е. принять данные в регистры каждый на своем клоке, затем одну из шин перебросить на другой клок. Запас в 180 градусов у вас есть. Quote Ответить с цитированием Share this post Link to post Share on other sites
aat_81 0 Posted March 23, 2011 · Report post Methane, dvladim Спасибо, думаю это то что мне нужно. Quote Ответить с цитированием Share this post Link to post Share on other sites
iosifk 0 Posted March 24, 2011 · Report post У кого какие идеи есть по данному вопросу? У меня на сайте в статьях "Краткий Курс HDL", смотрите раздел о CDC. Там перечислены все варианты... Удачи! Quote Ответить с цитированием Share this post Link to post Share on other sites
ivanpa 0 Posted April 5, 2011 · Report post Насколько я понимаю, сдвиг будет фиксированным? для выравнивания сдвигов можно воспользоваться задержками в ногах Quote Ответить с цитированием Share this post Link to post Share on other sites
LV26 0 Posted April 5, 2011 · Report post для выравнивания сдвигов можно воспользоваться задержками в ногах Поясните Quote Ответить с цитированием Share this post Link to post Share on other sites
scorp 0 Posted April 10, 2011 · Report post Обе шины защёлкиваем в 16-битный регистр клоком первой шины. Накладываем ограничение на вход второй шины (задержка в полпериода относительно клока) set_input_delay -max [expr $T/2] -clock Clk1 [get_ports Data2] Quote Ответить с цитированием Share this post Link to post Share on other sites