Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с клоками
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Kenav
Возникли проблемы при работе ПЛИС. Сам проект компилится, шьется, все нормально. Используется Циклон 2. Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки. Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит. Все шьется, только работает непонятно как. В проекте сделано фифо и идет анализ данных на выходе. На вход идут нормальные сигналы, с выхода снимаем сигналы, которые не поддаются логическому объяснению. Убираешь добавленную логику все работает, как часы.
Есть ли какие тонкости при работе с глобальными клоками, с D-тригерами или еще что? Все неиспользуемые ножки сделаны как выходы и подтянуты к земле. Кто поможет разобраться с проблемой? bb-offtopic.gif Что может влиять на тактовую?

Я понимаю, что все зависит от добавленной логики. Но в симуляторе отдельно все работает. Вместе вот не получается пока! sad.gif
andrew_b
Стандартный в таких случаях вопрос: констрейны прописаны? Как минимум -- частоты основного и порождённых клоков.
I.S.A.
Читайте даташит, там написано, что глобальные тактовые частоты могут идти только на тактовые входы элементов (clk у триггера, счетчика и т.п.) и на инвертер, но с выхода инвертера опять только на тактовые входы и все! Иначе используются не глобальные треки для разводки частоты по кристаллу, а общие! Это относится и к глобальному сбросу.
Kenav
Для тех кто в танке, что такое констрейны? sad.gif


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

Ну да логично. Я так и делаю. Только сбой то происходит.
I.S.A.
Цитата(Kenav @ Nov 7 2007, 17:11) *
Ну да логично. Я так и делаю. Только сбой то происходит.

Тогда поясните этот пункт:

Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит.
rv3dll(lex)
**
Если подсоединять другую логику на глобальный клок ну например (схемка на и, или, или-не, искл. или в сочетании с глобальным клоком), то где то сбиваются счетчики или что то не понятное происходит.
**

глобальные клоки должны оставаться глобальными настолько, что ни в коем случае не проходить через дополнительные схемы - только на входы клока триггеров

всё остальное управление надо делать только через CE триггеров - в этом случае никакие констрейны не нужны.

это касается и получения других частот из глобального клока
Kenav
глобальные клоки должны оставаться глобальными настолько, что ни в коем случае не проходить через дополнительные схемы - только на входы клока триггеров

всё остальное управление надо делать только через CE триггеров - в этом случае никакие констрейны не нужны.

это касается и получения других частот из глобального клока
[/quote]

Т.е. Если мне тактовая нужна, которая идет на глобальный пин, мне ее для другого использования заводить на другую ножку. Т.е с глобального клока я подаю только на тригера и счетчики, а с другой ножки на всю остальную логику.
I.S.A.
Цитата(Kenav @ Nov 8 2007, 09:00) *
Т.е. Если мне тактовая нужна, которая идет на глобальный пин, мне ее для другого использования заводить на другую ножку. Т.е с глобального клока я подаю только на тригера и счетчики, а с другой ножки на всю остальную логику.


В точку!
ig_d
Цитата
Используется один глобальный клок(на него заведена тактовая) и от него делителями сделаны другие клоки.


Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable.
Kenav
Цитата(ig_d @ Nov 8 2007, 10:29) *
Скоре всего проблема не в глобальных клоках, а в этих других после делителей. Такие клоки по возможности надо избегать. На вход clk тригеров подовать глобальный клок, а деление делать за счет enable.

Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты. Тогда вообще смысл всей плис пропадает.
Непонятно как сделать делитель на enable?

Цитата(I.S.A. @ Nov 8 2007, 10:14) *
В точку!

Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы.
I.S.A.
Делитель на Enable... я тоже не понял что это.

Цитата(Kenav @ Nov 8 2007, 11:06) *
Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы.

Глобальный клок - эсть глобальный клок. Внутри кристалла у него своя разводка и задержка распространения сигнала по кристалу - минимальная, так что все счетчики и триггеры будут срабатывать "одновременно". Клоки после счетчиков можете использовать как душе угодно! У управлять этими синхронными элементами надо через enable. Поищите документацию на Altera.com/ru и в даташите есть информация как раз о синхронных и асинхронных схемах.
А если вы используете клок как обычный сигнал, то он и разводится как обычный сигнал и нет гарантии через какое время куда он дойдет - отсюда и сбои.
Либо синхронная схема, либо нет.
vetal
Цитата
Предположим мы сделали несколько разных делителей на разные частоты на D тригерах. На вход clk подали глобальный клок. Т. е . получается с выхода делителей мы не имеем право использовать эти частоты.

Сигналы с выхода D триггеров можно использовать в качестве тактовых, только об этом нужно сказать сапру и указать на сколько вы поделили.

Цитата
Не понятно тогда зачем вообще глобальный клок? Т.е связывать глобальный клок с логикой нельзя. Тогда часть схемы работает от глобального клока, а другая от той же частоты, но не глобального, а как тогда синхронизировать выходы.

Если вы вспомните, что у триггеров есть сигнал clock enable, то сможете реализовать нужную логику без использования асинхронных схем. Для этого у вас есть целых 2 входа триггера D и CE.
ig_d
Цитата
Делитель на Enable... я тоже не понял что это.

Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения.
Kenav
Цитата(ig_d @ Nov 8 2007, 13:28) *
Я не писал на enable, а за счет enable. Подаете на clk глобальный клок а на вход разрешения(enable) сформираваный импульс нужной частоты. Допустим если нужно разделить на 4 то на каждые 4 клока формируете один импульс на вход разрешения.

Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем. crying.gif
RHnd
Цитата(Kenav @ Nov 8 2007, 17:01) *
Только логика формирования импульсов зависит от глобального клока. Тактовую то все равно берем и от нее пляшем. crying.gif

Если я правильно понял, о чем речь, то:
Это счетчик:
Код
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 - хорошо.
ig_d
Совершено верно. И имено потому что импульс разрешения формируется по глобольному клоку сбоев в счетчиках и сдвиговых регистрах(а имено в них и проявляется проблема) не происходит, так как и фронт и срез импульса разрешения придут на тригеры гарантировано после фронта клок.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.