Novi4ok 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Возникли проблемы при работе ПЛИС. Сам проект компилится, шьется, все нормально. Используется Циклон 2. Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки. Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит. Все шьется, только работает непонятно как. В проекте сделано фифо и идет анализ данных на выходе. На вход идут нормальные сигналы, с выхода снимаем сигналы, которые не поддаются логическому объяснению. Убираешь добавленную логику все работает, как часы. Есть ли какие тонкости при работе с глобальными клоками, с D-тригерами или еще что? Все неиспользуемые ножки сделаны как выходы и подтянуты к земле. Кто поможет разобраться с проблемой? :bb-offtopic: Что может влиять на тактовую? Я понимаю, что все зависит от добавленной логики. Но в симуляторе отдельно все работает. Вместе вот не получается пока! :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Стандартный в таких случаях вопрос: констрейны прописаны? Как минимум -- частоты основного и порождённых клоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I.S.A. 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Читайте даташит, там написано, что глобальные тактовые частоты могут идти только на тактовые входы элементов (clk у триггера, счетчика и т.п.) и на инвертер, но с выхода инвертера опять только на тактовые входы и все! Иначе используются не глобальные треки для разводки частоты по кристаллу, а общие! Это относится и к глобальному сбросу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Novi4ok 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Для тех кто в танке, что такое констрейны? :( Читайте даташит, там написано, что глобальные тактовые частоты могут идти только на тактовые входы элементов (clk у триггера, счетчика и т.п.) и на инвертер, но с выхода инвертера опять только на тактовые входы и все! Иначе используются не глобальные треки для разводки частоты по кристаллу, а общие! Это относится и к глобальному сбросу. Ну да логично. Я так и делаю. Только сбой то происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I.S.A. 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Ну да логично. Я так и делаю. Только сбой то происходит. Тогда поясните этот пункт: Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rv3dll 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба ** Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит. ** глобальные клоки должны оставаться глобальными настолько, что ни в коем случае не проходить через дополнительные схемы - только на входы клока триггеров всё остальное управление надо делать только через CE триггеров - в этом случае никакие констрейны не нужны. это касается и получения других частот из глобального клока Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Novi4ok 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба глобальные клоки должны оставаться глобальными настолько, что ни в коем случае не проходить через дополнительные схемы - только на входы клока триггеров всё остальное управление надо делать только через CE триггеров - в этом случае никакие констрейны не нужны. это касается и получения других частот из глобального клока Т.е. Если мне тактовая нужна, которая идет на глобальный пин, мне ее для другого использования заводить на другую ножку. Т.е с глобального клока я подаю только на тригера и счетчики, а с другой ножки на всю остальную логику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I.S.A. 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Т.е. Если мне тактовая нужна, которая идет на глобальный пин, мне ее для другого использования заводить на другую ножку. Т.е с глобального клока я подаю только на тригера и счетчики, а с другой ножки на всю остальную логику. В точку! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_d 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки. Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Novi4ok 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable. Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты. Тогда вообще смысл всей плис пропадает. Непонятно как сделать делитель на enable? В точку! Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
I.S.A. 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 (изменено) · Жалоба Делитель на Enable... я тоже не понял что это. Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы. Глобальный клок - эсть глобальный клок. Внутри кристалла у него своя разводка и задержка распространения сигнала по кристалу - минимальная, так что все счетчики и триггеры будут срабатывать "одновременно". Клоки после счетчиков можете использовать как душе угодно! У управлять этими синхронными элементами надо через enable. Поищите документацию на Altera.com/ru и в даташите есть информация как раз о синхронных и асинхронных схемах. А если вы используете клок как обычный сигнал, то он и разводится как обычный сигнал и нет гарантии через какое время куда он дойдет - отсюда и сбои. Либо синхронная схема, либо нет. Изменено 8 ноября, 2007 пользователем I.S.A. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты. Сигналы с выхода D триггеров можно использовать в качестве тактовых, только об этом нужно сказать сапру и указать на сколько вы поделили. Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы. Если вы вспомните, что у триггеров есть сигнал clock enable, то сможете реализовать нужную логику без использования асинхронных схем. Для этого у вас есть целых 2 входа триггера D и CE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_d 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Делитель на Enable... я тоже не понял что это. Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Novi4ok 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения. Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем. :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RHnd 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем. :crying: Если я правильно понял, о чем речь, то: Это счетчик: reg [1:0] Counter; wire Counter_Output; always @(posedge clk) begin Counter=Counter+2'b01; if (Counter==2'b11) Counter_Output=1'b1; else Counter_Output=1'b1; end Далее два варианта: Вариант 1 always @(posedge Counter_Output) begin //Do something end Вариант 2 always @(posedge clk) begin if (Counter_Output) begin //Do something end end Вариант 1 использует выход счетчика как клок - плохо. Вариант 2 использует общий глобальный клок, а выход счетчика как сигнал разрешения Enable - хорошо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться