|
Проблема с клоками, Сбой тактовой |
|
|
|
Nov 7 2007, 13:43
|

Участник

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839

|
Возникли проблемы при работе ПЛИС. Сам проект компилится, шьется, все нормально. Используется Циклон 2. Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки. Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит. Все шьется, только работает непонятно как. В проекте сделано фифо и идет анализ данных на выходе. На вход идут нормальные сигналы, с выхода снимаем сигналы, которые не поддаются логическому объяснению. Убираешь добавленную логику все работает, как часы. Есть ли какие тонкости при работе с глобальными клоками, с D-тригерами или еще что? Все неиспользуемые ножки сделаны как выходы и подтянуты к земле. Кто поможет разобраться с проблемой?  Что может влиять на тактовую? Я понимаю, что все зависит от добавленной логики. Но в симуляторе отдельно все работает. Вместе вот не получается пока!
|
|
|
|
|
Nov 7 2007, 14:11
|

Участник

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839

|
Для тех кто в танке, что такое констрейны?  Цитата(I.S.A. @ Nov 7 2007, 16:59)  Читайте даташит, там написано, что глобальные тактовые частоты могут идти только на тактовые входы элементов (clk у триггера, счетчика и т.п.) и на инвертер, но с выхода инвертера опять только на тактовые входы и все! Иначе используются не глобальные треки для разводки частоты по кристаллу, а общие! Это относится и к глобальному сбросу. Ну да логично. Я так и делаю. Только сбой то происходит.
|
|
|
|
|
Nov 7 2007, 14:30
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583

|
Цитата(Kenav @ Nov 7 2007, 17:11)  Ну да логично. Я так и делаю. Только сбой то происходит. Тогда поясните этот пункт: Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит.
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
|
Nov 8 2007, 07:14
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583

|
Цитата(Kenav @ Nov 8 2007, 09:00)  Т.е. Если мне тактовая нужна, которая идет на глобальный пин, мне ее для другого использования заводить на другую ножку. Т.е с глобального клока я подаю только на тригера и счетчики, а с другой ножки на всю остальную логику. В точку!
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
|
Nov 8 2007, 07:29
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 5-03-05
Пользователь №: 3 092

|
Цитата Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки. Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable.
|
|
|
|
|
Nov 8 2007, 08:06
|

Участник

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839

|
Цитата(ig_d @ Nov 8 2007, 10:29)  Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable. Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты. Тогда вообще смысл всей плис пропадает. Непонятно как сделать делитель на enable? Цитата(I.S.A. @ Nov 8 2007, 10:14)  В точку! Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы.
|
|
|
|
|
Nov 8 2007, 08:30
|

Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 6-08-07
Из: Москва
Пользователь №: 29 583

|
Делитель на Enable... я тоже не понял что это. Цитата(Kenav @ Nov 8 2007, 11:06)  Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы. Глобальный клок - эсть глобальный клок. Внутри кристалла у него своя разводка и задержка распространения сигнала по кристалу - минимальная, так что все счетчики и триггеры будут срабатывать "одновременно". Клоки после счетчиков можете использовать как душе угодно! У управлять этими синхронными элементами надо через enable. Поищите документацию на Altera.com/ru и в даташите есть информация как раз о синхронных и асинхронных схемах. А если вы используете клок как обычный сигнал, то он и разводится как обычный сигнал и нет гарантии через какое время куда он дойдет - отсюда и сбои. Либо синхронная схема, либо нет.
Сообщение отредактировал I.S.A. - Nov 8 2007, 08:31
--------------------
Зачем все делать просто, когда все можно усложнить?
|
|
|
|
|
Nov 8 2007, 08:33
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты. Сигналы с выхода D триггеров можно использовать в качестве тактовых, только об этом нужно сказать сапру и указать на сколько вы поделили. Цитата Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы. Если вы вспомните, что у триггеров есть сигнал clock enable, то сможете реализовать нужную логику без использования асинхронных схем. Для этого у вас есть целых 2 входа триггера D и CE.
|
|
|
|
|
Nov 8 2007, 10:28
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 5-03-05
Пользователь №: 3 092

|
Цитата Делитель на Enable... я тоже не понял что это. Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения.
|
|
|
|
|
Nov 8 2007, 14:01
|

Участник

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839

|
Цитата(ig_d @ Nov 8 2007, 13:28)  Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения. Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем.
|
|
|
|
|
Nov 8 2007, 14:20
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(Kenav @ Nov 8 2007, 17:01)  Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем.  Если я правильно понял, о чем речь, то: Это счетчик: Код 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 - хорошо.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|