LordVader 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 (изменено) · Жалоба Задача: Имеем 2 независимых клока (скажем, 20 и 24 МГц), требуется сделать переключататель, который на выходе даёт 20,10,24,12 МГц (выбор - 2 асинхронными сигналами). Требуется, чтобы на выходе не появлялось импульсов короче, чем полупериод самого быстрого входного клока. Родил вот такую схему (нарисовано в квартусе) , насколько она корректна? PS: вполне понимаю, что схема асинхронная и на очень быстрых клоках всё равно возможны глюки. Но макс. частота такая, как указана выше, а моделирование вроде бы не выявляет глитчей (целевой чип - epm3032). Изменено 14 февраля, 2007 пользователем LordVader Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Вот корректная схема (делать было нечего, нарисовал со своего верилог-описания :) ) А у вас что-то монстр какой-то родился. Да, левая половина это клок-селектор для несвязанных клоков, если надо, по образу и подобию расширеятся хоть до опупения, вторая (зная, что деленный клок вполне определено связан по фазе с неделенным) просто переключатель. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Задача: Имеем 2 независимых клока (скажем, 20 и 24 МГц), требуется сделать переключататель, который на выходе даёт 20,10,24,12 МГц (выбор - 2 асинхронными сигналами). Требуется, чтобы на выходе не появлялось импульсов короче, чем полупериод самого быстрого входного клока. Родил вот такую схему (нарисовано в квартусе) , насколько она корректна? PS: вполне понимаю, что схема асинхронная и на очень быстрых клоках всё равно возможны глюки. Но макс. частота такая, как указана выше, а моделирование вроде бы не выявляет глитчей (целевой чип - epm3032). Здрв! посмотрите - может это поможет http://www.us.design-reuse.com/articles/article5827.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Спасибо всем! Насколько я понял, обе схемы переключения клоков функционально аналогичны моей (часть схемы не ниже 4 триггеров ряд): не дают глитчей. Но зато выглядят изящней :) Насчёт предложенного переключающегося делителя пополам - промоделил сейчас в квартусе, он к сожалению укорачивает 1 клок при переключении с медленной частоты на быструю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Вот эта статья не поможет - вроде проще: http://www.eetimes.com/story/OEG20030626S0035 И еще у ксайлинкса был апнот по безглитчевому переключению клоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба еще у ксайлинкса был апнот по безглитчевому переключению клоков ///////////////////////////////////////////////////////////////////// Он весь гличевый. Потому что все по одному фронту работает. Если по обоим фронтам, как в предложенной статье, то гличей нет. Зато "пустоты" есть. Может можно обойтись без переключения частот. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба Насколько я понял, обе схемы переключения клоков функционально аналогичны моей (часть схемы не ниже 4 триггеров ряд): не дают глитчей. Но зато выглядят изящней :) 4 триггера в ряд это лишнее. Достаточно 2 триггера в ряд, тактируемых каждым клоком для независимых клоков, и одного триггера для зависимых. 4 это как три презерватива одевать. Метастабильность не пройдет в clock-tree уже через второй триггер. Что касается укорочения импульса при переключении делителя - если такое укорочение криминально, то надо повторить переключатель для асинхронных клоков, только убрать по одному триггеру из каждого плеча, так как клоки все таки синхронизированы и метастабильности априори не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба Вот что получилось. Слева - переключатель клоков, справа (3 триггера) - переключатель F - F/2 безглитчевый... вроде бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба справа (3 триггера) - переключатель F - F/2 безглитчевый... вроде бы. Только вот укорочение импульса осталось - оно ведь произрастает из того, что клок, генерируемый делителем, запаздывает на Tco триггера относительно неделенного клока, и при переключении с быстрого на медленный получается первый период на это самое Tco меньше остальных. Так что глобальной проблемы не решает :) :) - возможно просто так случайно получилось, что путь через триггер-делитель оказался таким же, как и путь мимо него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба Только вот укорочение импульса осталось - оно ведь произрастает из того, что клок, генерируемый делителем, запаздывает на Tco триггера относительно неделенного клока, и при переключении с быстрого на медленный получается первый период на это самое Tco меньше остальных. Ну да, укорочение медленного клока осталось - но главное, что не быстрого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 15 февраля, 2007 Опубликовано 15 февраля, 2007 · Жалоба переключатель F - F/2 безглитчевый... вроде бы //////////////////////////////////////////// В этом вроде бы все и заложено. Вы выносите на обсуждение схему, анализ которой требует больших временных затрат. У кого они есть. При этом игнорируете схемные решения с приличным анализом. Главное отличие Вашей и другой схем это в тактировании триггеров. Но самое главное, такая схема некорректна по определению. Без констрейнов по всем путям Вы долны получить сплошные clock skew, некорректные clock hold. Я в лоб первел. Если хотите посмотрите module switch_clocks ( input clock1, input clock0, input select, input delitel, output out_clock_end ); reg reg_clock1_a, reg_clock1_b; reg reg_clock0_a, reg_clock0_b; reg reg_clock1_aa, reg_clock1_bb; reg reg_clock0_aa, reg_clock0_bb; reg reg_del; wire clock0a; wire a, b, c, d; wire aa, bb, cc, dd; always @(posedge clock1) begin reg_clock1_a <= a; end always @(negedge clock1) begin reg_clock1_b <= reg_clock1_a; end always @(posedge clock0) begin reg_clock0_a <= b; end always @(negedge clock0) begin reg_clock0_b <= reg_clock0_a; end assign a = ~reg_clock0_b & select; assign b = ~reg_clock1_b & ~select; assign c = reg_clock1_b & clock1; assign d = reg_clock0_b & clock0; assign clock1a = c | d; always @(posedge clock1a) begin reg_del <= ~reg_del; end assign clock0a = reg_del; always @(posedge clock1a) begin reg_clock1_aa <= aa; end always @(negedge clock1a) begin reg_clock1_bb <= reg_clock1_aa; end always @(posedge clock0a) begin reg_clock0_aa <= bb; end always @(negedge clock0a) begin reg_clock0_bb <= reg_clock0_aa; end assign aa = ~reg_clock0_bb & delitel; assign bb = ~reg_clock1_bb & ~delitel; assign cc = reg_clock1_bb & clock1a; assign dd = reg_clock0_bb & clock0a; assign out_clock_end = cc | dd; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 18 февраля, 2007 Опубликовано 18 февраля, 2007 · Жалоба В этом вроде бы все и заложено. Вы выносите на обсуждение схему, анализ которой требует больших временных затрат. У кого они есть. При этом игнорируете схемные решения с приличным анализом. Главное отличие Вашей и другой схем это в тактировании триггеров. Но самое главное, такая схема некорректна по определению. Без констрейнов по всем путям Вы долны получить сплошные clock skew, некорректные clock hold. Ну я в принципе согласен, что некорректная. Но дело в том, что у меня все сигналы выбора - асинхронные, а насколько я понял, в таком случае надо использовать схему переключения для 'unrelated' клоков, даже если сами клоки 'related'. Ведь надо асинхронный сигнал через цепочку из 2 триггеров пропускать. Я в лоб первел. Если хотите посмотрите Спасибо! Вопрос - почему у вас always @(posedge clock1) begin reg_clock1_a <= a; end always @(negedge clock1) begin reg_clock1_b <= reg_clock1_a; end то posedge, то negedge? В этом какой-то глубинный смысл именно для данной схемы, или просто, чтоб быстрее проходило? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 18 февраля, 2007 Опубликовано 18 февраля, 2007 · Жалоба Я не вникал вглубинный смысл этой схемы. Сходил по ссылке, графику перевел в текст и размножил на блока. Получил неудовлетворительный результат. Обычно сначала ставиться задача. И под нее выбирается кристалл. Например с pll. Там можно и свитчер организовать, и любой делитель в разумных пределах. А если речь идет о переходе из одного клокового домена в другой (глобаьный), то и переключатели не нужны. В конференции об этом подробно расписано. Наберте в поисковике слово метастабильность. 310388.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 19 февраля, 2007 Опубликовано 19 февраля, 2007 · Жалоба Обычно сначала ставиться задача. И под нее выбирается кристалл. Например с pll. Там можно и свитчер организовать, и любой делитель в разумных пределах. Ну задача глобально уже поставлена и кристалл выбран (ацекс1к), + макс3000 для бута, ну заодно и для переключения частот. Схема существенно 5-вольтовая, потому и ацекс. А если речь идет о переходе из одного клокового домена в другой (глобаьный), то и переключатели не нужны. В конференции об этом подробно расписано. Наберте в поисковике слово метастабильность. С этим более-менее всё ясно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 19 февраля, 2007 Опубликовано 19 февраля, 2007 · Жалоба Ну задача глобально уже поставлена и кристалл выбран (ацекс1к), + макс3000 для бута, ну заодно и для переключения частот. Схема существенно 5-вольтовая, потому и ацекс. //////////////////////////////////////////////////////////////////// Что значит схема пятивольтовая. ТТЛ или МОП уровни. Любой циклон, циклон2 с загрузочным ПЗУ EPCS в разы дешевле той связки, которую Вы выбрали. Добавить сюда 10 рублей на преобразователи уровней или буфера, терпимые к уровням 5В(Здесь море рекомендаций по фирмам и сериям), и все дела. Ну просто неограниченные возможности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться