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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> CPLD Clock, вопросы по разработке
skkap
сообщение Nov 2 2009, 19:03
Сообщение #31


Участник
*

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



Цитата
Уменьшите R2 до нескольких кил - думаю быстрее будет запускаться :-)
В рекомндациях он не настолько велик, кстати.


А про него просто написать забыл smile.gif При его уменьшении как бы это сказать.. фронты задние болтаются туда-сюда, а это я так понимаю значит что частота немного колеблется, что есть плохо. Тем более время запуска около секунды - нормально, учитывая что в часах питание должно будет присутствовать постоянно, иначе в них нет смысла) Спасибо еще зраз за советы и доки! Уверен что еще появятя вопросы, озвучу в этой теме

Сообщение отредактировал skkap - Nov 2 2009, 19:10
Go to the top of the page
 
+Quote Post
Victor®
сообщение Nov 2 2009, 20:05
Сообщение #32


Lazy
******

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



Цитата(skkap @ Nov 2 2009, 23:03) *
А про него просто написать забыл smile.gif При его уменьшении как бы это сказать.. фронты задние болтаются туда-сюда, а это я так понимаю значит что частота немного колеблется, что есть плохо. Тем более время запуска около секунды - нормально, учитывая что в часах питание должно будет присутствовать постоянно, иначе в них нет смысла) Спасибо еще зраз за советы и доки! Уверен что еще появятя вопросы, озвучу в этой теме


Успехов!


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 14 2009, 08:32
Сообщение #33


Участник
*

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



Всем снова привет!
Появилась новая "проблема", на этот раз с QuartusII.
На самом деле не совсем проблема, а просто некоторая непонятка, итак ситуация:

Создал проект, в нем схемный файл для общей блок схемы, назначил его Сущностью верхнего уровня (Top-level Entity).
В нем создаю основные функциональные блоки часов и реализовываю на VHDL. Это делаю таким методом: Создаю новый VHDL файл, затем пишу логику работы, потом правый клик на файл в дереве проекта и создаю файлы символа (Create Symbol files for Current File).
После этого данный символ появляется в списке символов для добавления в схемный файл. Таким образом все отлично работает, но один блок захотелось реализовать также схемой, а не на VHDL. Создал схемный файл, добавил инпуты/аутпуты, добавил реализацию логикой, сохранил. А пункта Create Symbol files for Current File в контекстном меню схемного файла нет! Каким образом создать символ (такой же как при реализации на VHDL) для этого файла? Я это раньше делал в MAX PLUS, поэтому я думаю это должно быть возможно, я просто что-то упускаю.

Знаю один способ сделать то что я описал с помощью Block Tool, но этот метод мне совсем не нравится. В этом случае блок получается огромный с таблицей входов-выходов + еще каждый вход-выход приходится выводить в отдельный прямоугольник (Port Mapping), что сжирает пол экрана места (мне критично, т.к. потом буду оформлять отчет с этой блок-схемой)

Подскажите!:)
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 14 2009, 08:48
Сообщение #34


Гуру
******

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



Цитата(skkap @ Nov 14 2009, 11:32) *
Создал схемный файл, добавил инпуты/аутпуты, добавил реализацию логикой, сохранил. А пункта Create Symbol files for Current File в контекстном меню схемного файла нет!


А куда он может деться.
File - create/update
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 14 2009, 09:28
Сообщение #35


Участник
*

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



Цитата(sazh @ Nov 14 2009, 14:48) *
А куда он может деться.
File - create/update


Почти час искал) Спасибо!
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 14 2009, 20:36
Сообщение #36


Участник
*

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



Вроде сделал прошивку для CPLD! smile.gif
Прошу указать на ошибки или неоптимальности (особенно в коде VHDL), т.к. это мой первый проект для ПЛИС.

Итак проект (Quartus II): Прикрепленный файл  clock.rar ( 562.34 килобайт ) Кол-во скачиваний: 222

Главная схема (скрин):

Прикрепленное изображение

Все блоки кроме логики кнопок реализованы на VHDL, CLK_1HZ_SIM сделан для удобства симуляции, вообще такт должен идти от блока 32768Hz_to_1Hz.

В основном выкладываю из-за наличия кучи варнингов и боязни что в самой схеме или в коде VHDL есть грубые ошибки, надеюсь кто-нить из знающих посмотрит smile.gif

Сообщение отредактировал skkap - Nov 14 2009, 20:39
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 14 2009, 20:52
Сообщение #37


Гуру
******

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



Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным.
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 14 2009, 21:20
Сообщение #38


Участник
*

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



Цитата(SM @ Nov 15 2009, 02:52) *
Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным.


У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 14 2009, 21:49
Сообщение #39


Гуру
******

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



Цитата(skkap @ Nov 15 2009, 00:20) *
У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта?

Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс.
Ставьте 74LVC1G14, гарантировано решит все проблемы.
Go to the top of the page
 
+Quote Post
Victor®
сообщение Nov 15 2009, 09:12
Сообщение #40


Lazy
******

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



Цитата(skkap @ Nov 15 2009, 00:36) *
Вроде сделал прошивку для CPLD! smile.gif
Прошу указать на ошибки или неоптимальности (особенно в коде VHDL), т.к. это мой первый проект для ПЛИС.

Итак проект (Quartus II): Прикрепленный файл  clock.rar ( 562.34 килобайт ) Кол-во скачиваний: 222

Главная схема (скрин):

Прикрепленное изображение

Все блоки кроме логики кнопок реализованы на VHDL, CLK_1HZ_SIM сделан для удобства симуляции, вообще такт должен идти от блока 32768Hz_to_1Hz.

В основном выкладываю из-за наличия кучи варнингов и боязни что в самой схеме или в коде VHDL есть грубые ошибки, надеюсь кто-нить из знающих посмотрит smile.gif


Есть у Вас в проекте асинхронные ("gated") клоки.
Например, в триггере для ALARM., cnt6bit, cnt5bit....
Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой.
Будет полностью синхронный проект, что есть гуд.

-- Успехов


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 15 2009, 09:49
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 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? Они ведь затактированны от предыдущих элементов (минуты от секунд, часы от минут)?
Это сама логика часов, или я чего-то не понимаю?
Поясните пожалуйста!
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 15 2009, 11:09
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 15 2009, 11:25
Сообщение #43


Гуру
******

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



Цитата(skkap @ Nov 15 2009, 12:49) *
Спасибо!:)

Ага, только я на порядок ошибся. Правда на двоичный smile.gif Не global clock period делить надо, а minimum pulse width. т.е. оценка фронта 1.25 нс max
Go to the top of the page
 
+Quote Post
skkap
сообщение Nov 15 2009, 11:52
Сообщение #44


Участник
*

Группа: Участник
Сообщений: 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)? Это я так понимаю сожрет еще макроячеек, а какой будет выигрыш? я так и не понялsmile.gif
И какое отношение к этому имеет триггер на alarm?
Go to the top of the page
 
+Quote Post
Victor®
сообщение Nov 15 2009, 16:46
Сообщение #45


Lazy
******

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



Цитата(skkap @ Nov 15 2009, 15:52) *
Т.е. будет лучше, если счетчик минут будет считать секунды и счетчик часов будет считать секунды (3600)? Это я так понимаю сожрет еще макроячеек, а какой будет выигрыш? я так и не понялsmile.gif


Имеем тактовую частоту 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
Go to the top of the page
 
+Quote Post

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

 


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


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