реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Переключатель двух независимых клоков, Насколько корректная реализация?
LordVader
сообщение Feb 14 2007, 01:25
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Задача:
Имеем 2 независимых клока (скажем, 20 и 24 МГц), требуется сделать переключататель, который на выходе даёт 20,10,24,12 МГц (выбор - 2 асинхронными сигналами). Требуется, чтобы на выходе не появлялось импульсов короче, чем полупериод самого быстрого входного клока.

Родил вот такую схему (нарисовано в квартусе) , насколько она корректна?

PS: вполне понимаю, что схема асинхронная и на очень быстрых клоках всё равно возможны глюки. Но макс. частота такая, как указана выше, а моделирование вроде бы не выявляет глитчей (целевой чип - epm3032).

Сообщение отредактировал LordVader - Feb 14 2007, 01:27
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 14 2007, 03:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Вот корректная схема (делать было нечего, нарисовал со своего верилог-описания smile.gif ) А у вас что-то монстр какой-то родился.

Да, левая половина это клок-селектор для несвязанных клоков, если надо, по образу и подобию расширеятся хоть до опупения, вторая (зная, что деленный клок вполне определено связан по фазе с неделенным) просто переключатель.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Victor®
сообщение Feb 14 2007, 09:55
Сообщение #3


Lazy
******

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



Цитата(LordVader @ Feb 14 2007, 02:25) *
Задача:
Имеем 2 независимых клока (скажем, 20 и 24 МГц), требуется сделать переключататель, который на выходе даёт 20,10,24,12 МГц (выбор - 2 асинхронными сигналами). Требуется, чтобы на выходе не появлялось импульсов короче, чем полупериод самого быстрого входного клока.

Родил вот такую схему (нарисовано в квартусе) , насколько она корректна?

PS: вполне понимаю, что схема асинхронная и на очень быстрых клоках всё равно возможны глюки. Но макс. частота такая, как указана выше, а моделирование вроде бы не выявляет глитчей (целевой чип - epm3032).


Здрв!
посмотрите - может это поможет
http://www.us.design-reuse.com/articles/article5827.html


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
LordVader
сообщение Feb 14 2007, 14:58
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Спасибо всем!

Насколько я понял, обе схемы переключения клоков функционально аналогичны моей (часть схемы не ниже 4 триггеров ряд): не дают глитчей. Но зато выглядят изящней smile.gif

Насчёт предложенного переключающегося делителя пополам - промоделил сейчас в квартусе, он к сожалению укорачивает 1 клок при переключении с медленной частоты на быструю.
Go to the top of the page
 
+Quote Post
Gate
сообщение Feb 14 2007, 16:16
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Вот эта статья не поможет - вроде проще: http://www.eetimes.com/story/OEG20030626S0035
И еще у ксайлинкса был апнот по безглитчевому переключению клоков.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 14 2007, 16:53
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



еще у ксайлинкса был апнот по безглитчевому переключению клоков
/////////////////////////////////////////////////////////////////////
Он весь гличевый. Потому что все по одному фронту работает.
Если по обоим фронтам, как в предложенной статье, то гличей нет. Зато "пустоты" есть.
Может можно обойтись без переключения частот.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 14 2007, 17:42
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(LordVader @ Feb 14 2007, 14:58) *
Насколько я понял, обе схемы переключения клоков функционально аналогичны моей (часть схемы не ниже 4 триггеров ряд): не дают глитчей. Но зато выглядят изящней smile.gif


4 триггера в ряд это лишнее. Достаточно 2 триггера в ряд, тактируемых каждым клоком для независимых клоков, и одного триггера для зависимых. 4 это как три презерватива одевать. Метастабильность не пройдет в clock-tree уже через второй триггер.

Что касается укорочения импульса при переключении делителя - если такое укорочение криминально, то надо повторить переключатель для асинхронных клоков, только убрать по одному триггеру из каждого плеча, так как клоки все таки синхронизированы и метастабильности априори не будет.
Go to the top of the page
 
+Quote Post
LordVader
сообщение Feb 15 2007, 01:29
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Вот что получилось.
Слева - переключатель клоков, справа (3 триггера) - переключатель F - F/2 безглитчевый... вроде бы.

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 15 2007, 03:04
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(LordVader @ Feb 15 2007, 01:29) *
справа (3 триггера) - переключатель F - F/2 безглитчевый... вроде бы.


Только вот укорочение импульса осталось - оно ведь произрастает из того, что клок, генерируемый делителем, запаздывает на Tco триггера относительно неделенного клока, и при переключении с быстрого на медленный получается первый период на это самое Tco меньше остальных. Так что глобальной проблемы не решает smile.gif smile.gif - возможно просто так случайно получилось, что путь через триггер-делитель оказался таким же, как и путь мимо него.
Go to the top of the page
 
+Quote Post
LordVader
сообщение Feb 15 2007, 09:02
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(SM @ Feb 15 2007, 03:04) *
Только вот укорочение импульса осталось - оно ведь произрастает из того, что клок, генерируемый делителем, запаздывает на Tco триггера относительно неделенного клока, и при переключении с быстрого на медленный получается первый период на это самое Tco меньше остальных.


Ну да, укорочение медленного клока осталось - но главное, что не быстрого.
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 15 2007, 09:57
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



переключатель 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
Go to the top of the page
 
+Quote Post
LordVader
сообщение Feb 18 2007, 10:56
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(sazh @ Feb 15 2007, 09:57) *
В этом вроде бы все и заложено. Вы выносите на обсуждение схему, анализ которой требует больших временных затрат. У кого они есть. При этом игнорируете схемные решения с приличным анализом.
Главное отличие Вашей и другой схем это в тактировании триггеров.
Но самое главное, такая схема некорректна по определению. Без констрейнов по всем путям Вы долны получить сплошные 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?
В этом какой-то глубинный смысл именно для данной схемы, или просто, чтоб быстрее проходило?
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 18 2007, 11:34
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Я не вникал вглубинный смысл этой схемы. Сходил по ссылке, графику перевел в текст и размножил на блока. Получил неудовлетворительный результат.
Обычно сначала ставиться задача. И под нее выбирается кристалл. Например с pll. Там можно и свитчер организовать, и любой делитель в разумных пределах.
А если речь идет о переходе из одного клокового домена в другой (глобаьный), то и переключатели не нужны. В конференции об этом подробно расписано. Наберте в поисковике слово метастабильность.
Прикрепленные файлы
Прикрепленный файл  310388.zip ( 96.46 килобайт ) Кол-во скачиваний: 57
 
Go to the top of the page
 
+Quote Post
LordVader
сообщение Feb 19 2007, 13:58
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(sazh @ Feb 18 2007, 11:34) *
Обычно сначала ставиться задача. И под нее выбирается кристалл. Например с pll. Там можно и свитчер организовать, и любой делитель в разумных пределах.

Ну задача глобально уже поставлена и кристалл выбран (ацекс1к), + макс3000 для бута, ну заодно и для переключения частот. Схема существенно 5-вольтовая, потому и ацекс.

Цитата
А если речь идет о переходе из одного клокового домена в другой (глобаьный), то и переключатели не нужны. В конференции об этом подробно расписано. Наберте в поисковике слово метастабильность.

С этим более-менее всё ясно.
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 19 2007, 20:13
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Ну задача глобально уже поставлена и кристалл выбран (ацекс1к), + макс3000 для бута, ну заодно и для переключения частот. Схема существенно 5-вольтовая, потому и ацекс.
////////////////////////////////////////////////////////////////////
Что значит схема пятивольтовая. ТТЛ или МОП уровни.
Любой циклон, циклон2 с загрузочным ПЗУ EPCS в разы дешевле той связки, которую Вы выбрали.
Добавить сюда 10 рублей на преобразователи уровней или буфера, терпимые к уровням 5В(Здесь море рекомендаций по фирмам и сериям), и все дела. Ну просто неограниченные возможности.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01539 секунд с 7
ELECTRONIX ©2004-2016