|
|
  |
Инверсия сигнала |
|
|
|
Jan 2 2013, 09:22
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282

|
Столкнулся с проблемой в FPGA. Нужно по команде инвертировать тактовый сигнал внутри чипа. Попытался сделать это элементом "исключающее или". Но Квартус ругается. Warning: (Medium) Rule C104: Clock signal source should drive only clock input ports. Found 1 nodes related to this rule. Чем его еще можно инвертировать?
|
|
|
|
|
Jan 2 2013, 09:44
|
Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991

|
Цитата(quandr @ Jan 2 2013, 13:22)  Столкнулся с проблемой в FPGA. Нужно по команде инвертировать тактовый сигнал внутри чипа. Попытался сделать это элементом "исключающее или". Но Квартус ругается. Warning: (Medium) Rule C104: Clock signal source should drive only clock input ports. Found 1 nodes related to this rule. Чем его еще можно инвертировать? Попробуйте через DCM модуль и сдвиг по фазе 180 градусов. Логикой этого сделать не удастся, потому что логика вносит джиттер в тактовый сигнал и фактически его "портит". Если не запретить компилятору он будет выдавать ошибку. Можно поискать в настройках где запретить чтобы не ругался. Другой способ, если Вам не важно качество сигнала, можете сделать так, подайте на D триггер у которого инверсный выход подключен ко входу D, клок с двухкратной частотой. На выходе получите поделенный на два прямой и инверсный сигнал. И вот этот сигнал используйте как тактовую частоту для последующей схемы.
Сообщение отредактировал novchok - Jan 2 2013, 09:45
--------------------
Herz укроп и педрила
|
|
|
|
|
Jan 2 2013, 10:09
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282

|
Цитата(novchok @ Jan 2 2013, 12:44)  Попробуйте через DCM модуль и сдвиг по фазе 180 градусов. Логикой этого сделать не удастся, потому что логика вносит джиттер в тактовый сигнал и фактически его "портит". Если не запретить компилятору он будет выдавать ошибку. Можно поискать в настройках где запретить чтобы не ругался. Другой способ, если Вам не важно качество сигнала, можете сделать так, подайте на D триггер у которого инверсный выход подключен ко входу D, клок с двухкратной частотой. На выходе получите поделенный на два прямой и инверсный сигнал. И вот этот сигнал используйте как тактовую частоту для последующей схемы. Что такое DCM модуль? Как он называется в мегафункциях?
|
|
|
|
|
Jan 2 2013, 10:12
|
Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991

|
PLL модуль или что то такое, точнее посмотрите в руководстве по синтезу для Вашего чипа.
Сообщение отредактировал novchok - Jan 2 2013, 10:13
--------------------
Herz укроп и педрила
|
|
|
|
|
Jan 2 2013, 13:59
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(quandr @ Jan 2 2013, 12:22)  Столкнулся с проблемой в FPGA. Нужно по команде инвертировать тактовый сигнал внутри чипа. Попытался сделать это элементом "исключающее или". Но Квартус ругается. Warning: (Medium) Rule C104: Clock signal source should drive only clock input ports. Found 1 nodes related to this rule. Чем его еще можно инвертировать? Какая-то странная задумка... По другому нельзя? Можно использовать DDR-триггер и инвертировать по данным, например. Деталей зачем это надо Вы не предоставили - поэтому ничего конкретного не посоветуешь. Кроме этого надо синхронизировать "команду" иначе будут глитчи. P.S. У Xilinx смотрите ODDR. Вкратце: D1 <= INV_CMD; D2 <= NOT(INV_CMD);
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Jan 2 2013, 15:52
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(quandr @ Jan 2 2013, 13:22)  Столкнулся с проблемой в FPGA. Нужно по команде инвертировать тактовый сигнал внутри чипа. Попытался сделать это элементом "исключающее или". Но Квартус ругается. Warning: (Medium) Rule C104: Clock signal source should drive only clock input ports. Found 1 nodes related to this rule. Чем его еще можно инвертировать? Наиболее правильное решение, если вносимые логикой джиттер и/или задержки для задачи по барабану, как это чаще всего бывает, просто забить на данный Warning, и сделать как делали. Это не ругань, это предупреждение, говорящее Вам, что в проекте имеется заход клока в логику. Он является "руганью", когда это получилось случайно, а когда по задумке - то просто информация. Не надо бояться клоков, прошедших через гейты, надо уметь правильно с ними работать. Только, в таком случае, не забудьте при указании констрейнов аккуратно объявить оба клока, и если имеется переход из домена, тактируемого исходным клоком, и клоком, прошедшим через логику, объявить клоки в одной группе, чтобы квартус соблюл холды. Это раз. И два - если речь именно про управляемую инверсию клока - то надо сделать безглитчевый мультиплексор прямого и инверсного сигнала, а не просто управлять через исключающее "ИЛИ", либо управление инверсией тактировать от клока, прошедшего через гейт, с той же целью, безглитчевости.
|
|
|
|
|
Jan 8 2013, 11:16
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(Костян @ Jan 3 2013, 12:24)  Есть же специальные Clock MUX. C PLL вытягиваете 0 и 180 градусов clock и подаете на такой MUX Когда-то давно уже писал об этом подробно - не стоит двигать фазу на PLL в ПЛИС Альтера, если нужен предельный температурный режим. Наблюдал сбои на минусе. Если можно решить вопрос использованием другого фронта той же частоты - лучше сделать именно так. В большинстве случаев достаточно на плате сделать клоковое кольцо. Обязательно с клокового выхода и на клоковый пин. Ну или сдвигать частоты на источниках. Разумеется все вышесказанное актуально для частот выше 100 МГц.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Jan 8 2013, 15:07
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
QUOTE (warrior-2001 @ Jan 8 2013, 09:16)  Когда-то давно уже писал об этом подробно - не стоит двигать фазу на PLL в ПЛИС Альтера, если нужен предельный температурный режим. Похоже на ошибку разработчиков PLL QUOTE В большинстве случаев достаточно на плате сделать клоковое кольцо. Обязательно с клокового выхода и на клоковый пин. Ну или сдвигать частоты на источниках. Разумеется все вышесказанное актуально для частот выше 100 МГц. Поясните подробнее, пожалуйста. Ничего не понятно, как инвертировать в данном случае клок, чем сдвигать частоты источника ?
|
|
|
|
|
Jan 10 2013, 06:40
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(Костян @ Jan 8 2013, 19:07)  Похоже на ошибку разработчиков PLL Не думаю, что разработчики IP блока альтеры так уж виноваты. Дело скорее всего именно в железе. А так как речь идет о Стратиксах 2-3, то любой баг был бы оперативно устранен альтерой в части железа. Видимо действительно не тянут кристаллы такие вещи. Цитата(Костян @ Jan 8 2013, 19:07)  Поясните подробнее, пожалуйста. Ничего не понятно, как инвертировать в данном случае клок, чем сдвигать частоты источника ? Если нужен действительно совет, то надо сперва понять, зачем необходима инверсия и какой порядок частот. Если частоты 100+ МГц, то необходимо схемотехническое решение. Гугл в помощь по источникам синхросигналов. Если инверсия всегда на 180 градусов, то можно в зависимости от задачи брать разные фронты частоты. Можно воспользоваться pll. Не рекомендую делать на логике, ибо со временем частота может подрасти и схема перестанет работать.
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|