Flip-fl0p 4 20 марта, 2018 Опубликовано 20 марта, 2018 · Жалоба Приветствую Уважаемые посетители форума ! Собственно имеется внутри FPGA некая схема, содержащая PLL. PLL настроена таким образом, что у нас опорная частота умножается и делится на некие коэффициенты, которые никогда не меняются. (коэффициенты рассчитаны таким образом, чтобы не превышалась максимальная частота VCO( ГУН) по спецификации на чип). Но вся проблема в том, что опорный клок у меня может лежать в диапазоне от 25Мгц до 80 Мгц. (т.е иметь любое значение, характерное для значения пиксельной частоты VESA) Как можно обконстрейнить такой клок ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 20 марта, 2018 Опубликовано 20 марта, 2018 · Жалоба Очевидно, что по максимальной частоте, т.е. в вашем случае - 80Мгц, если я правильно понял. Если проект на этой частоте по времянке проходит, то и на 25Мгц всё будет ок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 20 марта, 2018 Опубликовано 20 марта, 2018 · Жалоба Очевидно, что по максимальной частоте, т.е. в вашем случае - 80Мгц, если я правильно понял. Если проект на этой частоте по времянке проходит, то и на 25Мгц всё будет ок. Я пока так и сделал :rolleyes: Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 20 марта, 2018 Опубликовано 20 марта, 2018 (изменено) · Жалоба Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной. Нет, почему же? В общем случае должны выполняться требования setup и hold для всех триггеров в схеме. Если это правило выполняется для частоты Fmax, то тем более будет выполняться и для меньших частот. Есть другой подвох. У вас есть в схеме асинхронные сигналы? Если таковые имеются и переход из одного клокового домена в другой осуществляется через синхронизаторы на регистрах, то при изменении частоты проект может по естественным причинам перестать нормально работать. Допустим, у вас проект тактируется снаружи частотой в диапазоне 25-80Мгц. Предположим, что на вход приходит единичный асинхронный импульс с длительностью 25нс (40МГц). Вы как положено с помощью синхронизатора делаете этот импульс синхронным для вашей схемы. Пока частота вашей схемы достаточно высока, импульс будет корректно пойман. Но если частота опуститься допустим с 80МГц до 25, то естественно, импульс будет пропущен (или будет ловиться, но иногда, как повезёт). Тоже самое может произойти для выходного сигнала вашей схемы, который будет входом для какого-нибудь другого блока со своей частотой. Короче говоря, за длительностью импульсов надо следить. А если дизайн на 100% синхронный, то при снижении частоты ничего не должно ломаться. Изменено 20 марта, 2018 пользователем Inanity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 21 марта, 2018 Опубликовано 21 марта, 2018 · Жалоба Нет, почему же? В общем случае должны выполняться требования setup и hold для всех триггеров в схеме. Если это правило выполняется для частоты Fmax, то тем более будет выполняться и для меньших частот. Есть другой подвох. У вас есть в схеме асинхронные сигналы? Если таковые имеются и переход из одного клокового домена в другой осуществляется через синхронизаторы на регистрах, то при изменении частоты проект может по естественным причинам перестать нормально работать. Допустим, у вас проект тактируется снаружи частотой в диапазоне 25-80Мгц. Предположим, что на вход приходит единичный асинхронный импульс с длительностью 25нс (40МГц). Вы как положено с помощью синхронизатора делаете этот импульс синхронным для вашей схемы. Пока частота вашей схемы достаточно высока, импульс будет корректно пойман. Но если частота опуститься допустим с 80МГц до 25, то естественно, импульс будет пропущен (или будет ловиться, но иногда, как повезёт). Тоже самое может произойти для выходного сигнала вашей схемы, который будет входом для какого-нибудь другого блока со своей частотой. Короче говоря, за длительностью импульсов надо следить. А если дизайн на 100% синхронный, то при снижении частоты ничего не должно ломаться. Все переходы между доменами я делал через FIFO. А одиночные сигналы я синхронизирую путем handshake, как-раз для того, чтобы не беспокоиться на счет того, что короткий импульс может потеряться. Я просто как-то на зарубежном форуме натыкался на аналогичную тему про то, как описывать такие клоки, да вот как-то не гуглится теперь эта тема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 22 марта, 2018 Опубликовано 22 марта, 2018 · Жалоба Я пока так и сделал :rolleyes: Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной. Есть такая штука, как physically exclusive clocks, позволяющая задавать разные тактовые сигналы на одном и том же порту. Если хочется наверняка - можно добавить и 25 и 80 (или вообще целый перечень), хотя смысла, и на мой тоже взгляд, особого нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 марта, 2018 Опубликовано 22 марта, 2018 · Жалоба Ключи -exclusive, -asynchronous, -logically_exclusive и -physically_exclusive применительно к Альтере работают совершенно одинаково. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 22 марта, 2018 Опубликовано 22 марта, 2018 · Жалоба PLL настроена таким образом, что у нас опорная частота умножается и делится на некие коэффициенты, которые никогда не меняются. (коэффициенты рассчитаны таким образом, чтобы не превышалась максимальная частота VCO( ГУН) по спецификации на чип). Но вся проблема в том, что опорный клок у меня может лежать в диапазоне от 25Мгц до 80 Мгц. (т.е иметь любое значение, характерное для значения пиксельной частоты VESA) ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза. А КАК ПЛИС узнает, что на её вход подали именно 25 МГц, а не 40 или 80? Если проект разводится на 80 МГЦ, то 25 работать будут! Можно прогнать TimeQuest на минимальную частоту и на максимальную, не компилируя при это сам проект! Если slack отсутствуют - то все работать будет! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза. Это если VCO выходит за разумные пределы :rolleyes: В моем случае коэффициенты PLL подобраны таким образом, чтобы частота VCO не выходила за пределы спецификации. Например: У меня Cyclone V SEMA5F31C6 По спецификации максимальная частота VCO 1600 Мhz На вход FPGA подается видеосигнал VESA 800x600 60 Hz pixel_clk 40 Mhz pixel_clk я применяю в качестве опорного клока На PLL я получаю частоту VCO путем умножения опорного клока (который как раз и неизвестен - т.е может быть разным в зависимости от разрешения видеосигнала) на 10. А остальные частоты получаю делением этой частоты. В моем случае я получаю частоты: VGA_clk - равный частоте опорного клока т.е делю частоту VCO на 10. RX0_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 RX1_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 RX2_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 Данные коэффициенты у меня никогда не меняются. Таким образом я покрываю все возможные разрешения VESA, где скорость передачи данных не выше 800 Mb/s (частота pixel_clk не больше 80 Mhz). Т.к основное ограничение накладывают LVDS приёмники, которые ограничены приемом 800 Mb/s т.е (DDR клоком в 400 Мгц). И частота VCO у меня никогда не превышает максимальную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба И частота VCO у меня никогда не превышает максимальную. А минимальная Fvco какая? Обычно они работают примерно на октаву. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба А минимальная Fvco какая? Обычно они работают примерно на октаву. Хм... После Вашего вопроса решил ещё раз глянуть datasheet. Там написано что Fvco min 600 Мгц.... Странно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба Хм... После Вашего вопроса решил ещё раз глянуть datasheet. Там написано что Fvco min 600 Мгц.... Странно. Не странно, а обычно примерно так и есть. Меняйте консерваторию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба Не странно, а обычно примерно так и есть. Меняйте консерваторию. Странно что такое ограничение в даташите. Сейчас специально проверил. Сам Quartus поставил коэффициенты там, что частота VCO получается 400 Мгц. Где-то я не то прочитал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 марта, 2018 Опубликовано 23 марта, 2018 · Жалоба Странно что такое ограничение в даташите. Сейчас специально проверил. Сам Quartus поставил коэффициенты там, что частота VCO получается 400 Мгц. Где-то я не то прочитал. смотрите в даташите: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться