|
CPLD Clock, вопросы по разработке |
|
|
|
Oct 29 2009, 19:35
|

Участник

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297

|
Вечер добрый! Возникла задача сделать часы на программируемой логике, по количеству входов выбрал CPLD от Altera - EPM3032. Понимаю что задача совсем не для CPLD/FPGA, а для простенького МК, но такое уж задание (учебное). Итак, время вопросов. Первый вопрос возник по тактированию. Мы имеем 2 входа: GCLK1 и GCLK2, в моей задаче нужен всего один вход тактирования, возьмем GCLK1. Как показал поиск по форуму - в основном используют кварцевые генераторы, но таковых на 32,768кГц не нашлось. Зато нашлись резонаторы. Внимание вопрос: корректно ли будет работать EPM3032 затактированная столь мало частотой? Если да, то какую схему подключения CLK вы бы посоветовали? В данный момент пытаюсь собрать что-то из этого: http://cxem.net/beginner/beginner26.php (внизу станицы) на макетке, но часовой кварц не заводится, наверное из-за не точного соответствия номиналов деталек(просто не все нужные номиналы в наличии), или из за того что микросхема TTL а не CMOS (скоро попробую и КМОП, пока нету нужной). Заранее спасибо за советы!
|
|
|
|
|
 |
Ответов
|
Nov 15 2009, 09:49
|

Участник

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297

|
Цитата Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс. Ставьте 74LVC1G14, гарантировано решит все проблемы. Спасибо!:) Цитата Есть у Вас в проекте асинхронные ("gated") клоки. Например, в триггере для ALARM., cnt6bit, cnt5bit.... Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой. Будет полностью синхронный проект, что есть гуд. Хм.. Поясните плз, я похоже совсем в клоках не соображаю. Как это асинхронные клоки? Асинхронные от чего? Как изменить cnt5bit и cnt6bit? Они ведь затактированны от предыдущих элементов (минуты от секунд, часы от минут)? Это сама логика часов, или я чего-то не понимаю? Поясните пожалуйста!
|
|
|
|
|
Nov 15 2009, 11:09
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(skkap @ Nov 15 2009, 12:49)  Спасибо!:) Как изменить cnt5bit и cnt6bit? Они ведь затактированны от предыдущих элементов (минуты от секунд, часы от минут)? имеется ввиду, что можно работать на одноклоковой синхронизации, т.е анализировать весь временной интервал работы в разах периода секунд. Посмотрите предупреждения при раводке проекта. (F1) Посмотрите анализ клоков во временном анализаторе. Во пример, посмотрите в RTL просмотрщике, промоделируйте. Предупреждения исследуйте. Код module ct_r ( input clk, output out_clk_a, out_clk_b );
reg [1:0] cnt; reg del_2a, del_2b;
always @(posedge clk) begin cnt <= cnt + 1'b1; if (cnt == 2'b11) del_2a <= ~del_2a; end
always @(posedge cnt[1]) begin del_2b <= ~del_2b; end
assign out_clk_a = del_2a, out_clk_b = del_2b;
endmodule
|
|
|
|
|
Nov 15 2009, 11:52
|

Участник

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297

|
Цитата(sazh @ Nov 15 2009, 17:09)  имеется ввиду, что можно работать на одноклоковой синхронизации, т.е анализировать весь временной интервал работы в разах периода секунд. Посмотрите предупреждения при раводке проекта. (F1) Посмотрите анализ клоков во временном анализаторе. Во пример, посмотрите в RTL просмотрщике, промоделируйте. Предупреждения исследуйте. Код module ct_r ( input clk, output out_clk_a, out_clk_b );
reg [1:0] cnt; reg del_2a, del_2b;
always @(posedge clk) begin cnt <= cnt + 1'b1; if (cnt == 2'b11) del_2a <= ~del_2a; end
always @(posedge cnt[1]) begin del_2b <= ~del_2b; end
assign out_clk_a = del_2a, out_clk_b = del_2b;
endmodule Т.е. будет лучше, если счетчик минут будет считать секунды и счетчик часов будет считать секунды (3600)? Это я так понимаю сожрет еще макроячеек, а какой будет выигрыш? я так и не понял  И какое отношение к этому имеет триггер на alarm?
|
|
|
|
|
Nov 15 2009, 16:46
|

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

|
Цитата(skkap @ Nov 15 2009, 15:52)  Т.е. будет лучше, если счетчик минут будет считать секунды и счетчик часов будет считать секунды (3600)? Это я так понимаю сожрет еще макроячеек, а какой будет выигрыш? я так и не понял  Имеем тактовую частоту 1 Hz - clk_1hz, подаем ее на счетчик секунд ( sec_cnt по модулю 60). Формируем сигнал munute_ena, равный "1" при значении счетчика 59. Этот сигнал подаем на вход разрешения счета следующего счетчика ( minute_cnt, также по модулю 60). Тактируется minute_cnt также сигналом clk_1hz. Делаем сигнал разрешения hour_ena аналогичный minute_ena и подаем его на последний счетчик ( hour_cnt - по модулю 24), который тактируется clk_1hzПолучаем полностью синхронный проект. Цитата(skkap @ Nov 15 2009, 15:52)  И какое отношение к этому имеет триггер на alarm? Он тактируется "gated clock", как и остальные части в проекте. Кстати, а индикацию сделали-бы динамическую - сэкономили-бы на пинах (11 против 28)
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 15 2009, 17:52
|

Участник

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297

|
Цитата(Victor® @ Nov 15 2009, 22:46)  Имеем тактовую частоту 1 Hz - clk_1hz, подаем ее на счетчик секунд (sec_cnt по модулю 60). Формируем сигнал munute_ena, равный "1" при значении счетчика 59. Этот сигнал подаем на вход разрешения счета следующего счетчика (minute_cnt, также по модулю 60). Тактируется minute_cnt также сигналом clk_1hz.
Делаем сигнал разрешения hour_ena аналогичный minute_ena и подаем его на последний счетчик (hour_cnt - по модулю 24), который тактируется clk_1hz Получаем полностью синхронный проект.
Он тактируется "gated clock", как и остальные части в проекте. Кстати, а индикацию сделали-бы динамическую - сэкономили-бы на пинах (11 против 28) Очень понятно пояснили, спасибо! Значит триггер тактируется Gated Clock, если его тактовый вход подключен к пину, отличному от одного из глобальных тактовых сигналов, верно? Значит необходимо каждый блок, содержащий триггеры тактировать исходным тактовым сигналом. Остались непонятны две вещи: 1. Зачем оно надо вообще? Чем плохо gated clock? 2. Как описанная вами ситуация будет работать? Вот рисунок:
Ведь схема счета секунд дает задержку, из-за которой я так понимаю не сработает счет минут? что я не так понял? : /
|
|
|
|
|
Nov 15 2009, 20:07
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(skkap @ Nov 15 2009, 20:52)  Значит триггер тактируется Gated Clock, если его тактовый вход подключен к пину, отличному от одного из глобальных тактовых сигналов, верно? Да. Gated clock это тактовый сигнал, пропущенный через логический элемент, и используемый далее для тактирования. Для ПЛИС это не самое лучшее решение, если используется обратная связь из домена, тактируемого gated clock, в домен, тактируемый любым другим клоком. Ежели обратных связей нет (и зависимостей реакции внешних устройств от синхронности вывода данных на выходы из разных доменов), то не важно, чем что тактируется. Цитата(skkap @ Nov 15 2009, 20:52)  Значит необходимо каждый блок, содержащий триггеры тактировать исходным тактовым сигналом. ... 1. Зачем оно надо вообще? Чем плохо gated clock? С точки зрения ПЛИС плох тем, что для достижения синхронности при использовании нескольких разных путей тактовых сигналов приодится жертвовать ресурсами. В основном для обеспечения выдерживания hold time (времени удержания). Опять же, если есть обратные связи... ну и т.д., см. выше.
|
|
|
|
Сообщений в этой теме
skkap CPLD Clock Oct 29 2009, 19:35 sazh Цитата(skkap @ Oct 29 2009, 22:35) Вечер ... Oct 29 2009, 19:41 skkap Цитата(sazh @ Oct 30 2009, 01:41) Если уч... Oct 29 2009, 20:13  sazh Цитата(skkap @ Oct 29 2009, 23:13) Вот ка... Oct 29 2009, 20:30 Shtirlits Цитата(skkap @ Oct 29 2009, 22:35) Понима... Oct 29 2009, 20:18 skkap Т.е. схему по типу этой
Нельзя использовать? Не... Oct 29 2009, 20:42 aaarrr Цитата(skkap @ Oct 29 2009, 23:42) Т.е. с... Oct 29 2009, 21:07  alevnew Цитата(aaarrr @ Oct 30 2009, 03:07) Для т... Oct 30 2009, 04:03 Shtirlits Недавно была тема про генератор http://electronix.... Oct 29 2009, 21:18  andrey_s Часы с питанием от сети или от батарейки? Если пер... Oct 29 2009, 22:55 rv3dll(lex) даю код vhdl
правда я не отлаживал - только напис... Oct 30 2009, 09:10 skkap Всм большое спасибо за ответы! Итак, по порядк... Oct 30 2009, 18:47 aaarrr Цитата(skkap @ Oct 30 2009, 21:47) Такие ... Oct 30 2009, 19:53 Джеймс Цитата(skkap @ Oct 30 2009, 22:47) Такие ... Oct 30 2009, 19:55 SLDM Кварцованые генераторы на рассыпухе(равно как и на... Oct 30 2009, 20:11 Victor® Цитата(SLDM @ Oct 30 2009, 23:11) Кварцов... Oct 31 2009, 13:12  aaarrr Цитата(Victor® @ Oct 31 2009, 16:12) И то... Oct 31 2009, 17:11   Victor® Цитата(aaarrr @ Oct 31 2009, 21:11) А Вы ... Oct 31 2009, 17:39    aaarrr Цитата(Victor® @ Oct 31 2009, 20:39) Поче... Oct 31 2009, 18:00     Victor® Цитата(aaarrr @ Oct 31 2009, 21:00) Счита... Oct 31 2009, 20:39      aaarrr Цитата(Victor® @ Oct 31 2009, 23:39) 1-го... Oct 31 2009, 21:08 Евгений Николаев ЦитатаПитание от сети, а в случае отсутствия - от ... Oct 31 2009, 06:14 skkap Всем спасибо за ответы!
ЦитатаНедолго же прож... Oct 31 2009, 21:12 aaarrr Цитата(skkap @ Nov 1 2009, 00:12) Имеет л... Oct 31 2009, 21:34 Victor® Цитата(skkap @ Nov 1 2009, 00:12) Имеет л... Nov 1 2009, 10:24 rv3dll(lex) а забыл написать - проект уместился в 72 сплд кса... Nov 2 2009, 07:15 skkap Цитата(aaarrr @ Nov 1 2009, 03:34) Имеет.... Nov 2 2009, 14:21 Victor® Цитата(skkap @ Nov 2 2009, 17:21) Спасибо... Nov 2 2009, 14:55 skkap ЦитатаВот подумал, что подозрительно громадное зна... Nov 2 2009, 18:34 Victor® Цитата(skkap @ Nov 2 2009, 21:34) Попробо... Nov 2 2009, 18:43 skkap ЦитатаУменьшите R2 до нескольких кил - думаю быстр... Nov 2 2009, 19:03 Victor® Цитата(skkap @ Nov 2 2009, 23:03) А про н... Nov 2 2009, 20:05 skkap Всем снова привет!
Появилась новая "пробл... Nov 14 2009, 08:32 sazh Цитата(skkap @ Nov 14 2009, 11:32) Создал... Nov 14 2009, 08:48  skkap Цитата(sazh @ Nov 14 2009, 14:48) А куда ... Nov 14 2009, 09:28 skkap Вроде сделал прошивку для CPLD!
Прошу указать... Nov 14 2009, 20:36 Victor® Цитата(skkap @ Nov 15 2009, 00:36) Вроде ... Nov 15 2009, 09:12 SM Что-то просматривая все ответы, не заметил главног... Nov 14 2009, 20:52 skkap Цитата(SM @ Nov 15 2009, 02:52) Что-то пр... Nov 14 2009, 21:20  SM Цитата(skkap @ Nov 15 2009, 00:20) У меня... Nov 14 2009, 21:49     sazh Цитата(skkap @ Nov 15 2009, 20:52) Ведь с... Nov 15 2009, 19:37     Victor® Цитата(skkap @ Nov 15 2009, 20:52) Очень ... Nov 15 2009, 19:49 SM Цитата(skkap @ Nov 15 2009, 12:49) Спасиб... Nov 15 2009, 11:25 dvladim Цитата(SM @ Nov 16 2009, 00:07) Для ПЛИС ... Nov 15 2009, 20:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|