Перейти к содержанию
    

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

В рекомндациях он не настолько велик, кстати.

 

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

Изменено пользователем skkap

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Успехов!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем снова привет!

Появилась новая "проблема", на этот раз с 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), что сжирает пол экрана места (мне критично, т.к. потом буду оформлять отчет с этой блок-схемой)

 

Подскажите!:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал схемный файл, добавил инпуты/аутпуты, добавил реализацию логикой, сохранил. А пункта Create Symbol files for Current File в контекстном меню схемного файла нет!

 

А куда он может деться.

File - create/update

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде сделал прошивку для CPLD! :)

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

 

Итак проект (Quartus II): clock.rar

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

post-53297-1258231178_thumb.jpg

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

 

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

Изменено пользователем skkap

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным.

 

У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта?

Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс.

Ставьте 74LVC1G14, гарантировано решит все проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде сделал прошивку для CPLD! :)

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

 

Итак проект (Quartus II): clock.rar

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

post-53297-1258231178_thumb.jpg

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

 

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

 

Есть у Вас в проекте асинхронные ("gated") клоки.

Например, в триггере для ALARM., cnt6bit, cnt5bit....

Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой.

Будет полностью синхронный проект, что есть гуд.

 

-- Успехов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс.

Ставьте 74LVC1G14, гарантировано решит все проблемы.

 

Спасибо!:)

 

Есть у Вас в проекте асинхронные ("gated") клоки.

Например, в триггере для ALARM., cnt6bit, cnt5bit....

Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой.

Будет полностью синхронный проект, что есть гуд.

 

Хм.. Поясните плз, я похоже совсем в клоках не соображаю.

Как это асинхронные клоки? Асинхронные от чего?

Как изменить cnt5bit и cnt6bit? Они ведь затактированны от предыдущих элементов (минуты от секунд, часы от минут)?

Это сама логика часов, или я чего-то не понимаю?

Поясните пожалуйста!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!:)

Как изменить 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!:)

Ага, только я на порядок ошибся. Правда на двоичный :) Не global clock period делить надо, а minimum pulse width. т.е. оценка фронта 1.25 нс max

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Посмотрите предупреждения при раводке проекта. (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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. будет лучше, если счетчик минут будет считать секунды и счетчик часов будет считать секунды (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

Получаем полностью синхронный проект.

 

И какое отношение к этому имеет триггер на alarm?

 

Он тактируется "gated clock", как и остальные части в проекте.

Кстати, а индикацию сделали-бы динамическую - сэкономили-бы на пинах (11 против 28)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...