skkap 0 2 ноября, 2009 Опубликовано 2 ноября, 2009 (изменено) · Жалоба Уменьшите R2 до нескольких кил - думаю быстрее будет запускаться :-) В рекомндациях он не настолько велик, кстати. А про него просто написать забыл :) При его уменьшении как бы это сказать.. фронты задние болтаются туда-сюда, а это я так понимаю значит что частота немного колеблется, что есть плохо. Тем более время запуска около секунды - нормально, учитывая что в часах питание должно будет присутствовать постоянно, иначе в них нет смысла) Спасибо еще зраз за советы и доки! Уверен что еще появятя вопросы, озвучу в этой теме Изменено 2 ноября, 2009 пользователем skkap Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 ноября, 2009 Опубликовано 2 ноября, 2009 · Жалоба А про него просто написать забыл :) При его уменьшении как бы это сказать.. фронты задние болтаются туда-сюда, а это я так понимаю значит что частота немного колеблется, что есть плохо. Тем более время запуска около секунды - нормально, учитывая что в часах питание должно будет присутствовать постоянно, иначе в них нет смысла) Спасибо еще зраз за советы и доки! Уверен что еще появятя вопросы, озвучу в этой теме Успехов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Всем снова привет! Появилась новая "проблема", на этот раз с 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), что сжирает пол экрана места (мне критично, т.к. потом буду оформлять отчет с этой блок-схемой) Подскажите!:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 7 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Создал схемный файл, добавил инпуты/аутпуты, добавил реализацию логикой, сохранил. А пункта Create Symbol files for Current File в контекстном меню схемного файла нет! А куда он может деться. File - create/update Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба А куда он может деться. File - create/update Почти час искал) Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 (изменено) · Жалоба Вроде сделал прошивку для CPLD! :) Прошу указать на ошибки или неоптимальности (особенно в коде VHDL), т.к. это мой первый проект для ПЛИС. Итак проект (Quartus II): clock.rar Главная схема (скрин): Все блоки кроме логики кнопок реализованы на VHDL, CLK_1HZ_SIM сделан для удобства симуляции, вообще такт должен идти от блока 32768Hz_to_1Hz. В основном выкладываю из-за наличия кучи варнингов и боязни что в самой схеме или в коде VHDL есть грубые ошибки, надеюсь кто-нить из знающих посмотрит :) Изменено 14 ноября, 2009 пользователем skkap Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба Что-то просматривая все ответы, не заметил главного. Может пропустил, но на всякий случай - частота тактирования на работу ПЛИС влияния не оказывает, а вот крутизна фронтов - еще как. При тактирования от 32768 эта проблема возникает во всей красе, и необходим быстрый триггер шмитта между генератором и ПЛИСой. Иначе во время медленного перепада счетчики начнут насчитывать вместо единицы десяток-другой, ну т.п., вплоть до совершенно неодуплимых глюков от метастабильности. Нарывался когда-то давно при прототипировании первой своей микросхемы с двумя генераторами - высокочастотным и лов-поверным. У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 14 ноября, 2009 Опубликовано 14 ноября, 2009 · Жалоба У меня фронты такта около 100 нс, имеет смысл ставить триггер Шмитта? Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс. Ставьте 74LVC1G14, гарантировано решит все проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Вроде сделал прошивку для CPLD! :) Прошу указать на ошибки или неоптимальности (особенно в коде VHDL), т.к. это мой первый проект для ПЛИС. Итак проект (Quartus II): clock.rar Главная схема (скрин): Все блоки кроме логики кнопок реализованы на VHDL, CLK_1HZ_SIM сделан для удобства симуляции, вообще такт должен идти от блока 32768Hz_to_1Hz. В основном выкладываю из-за наличия кучи варнингов и боязни что в самой схеме или в коде VHDL есть грубые ошибки, надеюсь кто-нить из знающих посмотрит :) Есть у Вас в проекте асинхронные ("gated") клоки. Например, в триггере для ALARM., cnt6bit, cnt5bit.... Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой. Будет полностью синхронный проект, что есть гуд. -- Успехов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Просто необходимо. Этот параметр напрямую вроде не документируется ("input rise/fall time" в даташите в <=40 нс относится не к клоку, а к любому фронту входного сигнала вообще). Я бы оценил его как "Minimum global clock period", поделенный на 3..4, т.е. для спидгрейда "-10" где-то 2.5 нс. Ставьте 74LVC1G14, гарантировано решит все проблемы. Спасибо!:) Есть у Вас в проекте асинхронные ("gated") клоки. Например, в триггере для ALARM., cnt6bit, cnt5bit.... Лучше сделать с помощью триггеров с разрешением (DFFE), и все затактировать нужной частотой. Будет полностью синхронный проект, что есть гуд. Хм.. Поясните плз, я похоже совсем в клоках не соображаю. Как это асинхронные клоки? Асинхронные от чего? Как изменить cnt5bit и cnt6bit? Они ведь затактированны от предыдущих элементов (минуты от секунд, часы от минут)? Это сама логика часов, или я чего-то не понимаю? Поясните пожалуйста! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 7 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Спасибо!:) Как изменить 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Спасибо!:) Ага, только я на порядок ошибся. Правда на двоичный :) Не global clock period делить надо, а minimum pulse width. т.е. оценка фронта 1.25 нс max Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба имеется ввиду, что можно работать на одноклоковой синхронизации, т.е анализировать весь временной интервал работы в разах периода секунд. Посмотрите предупреждения при раводке проекта. (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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 15 ноября, 2009 Опубликовано 15 ноября, 2009 · Жалоба Т.е. будет лучше, если счетчик минут будет считать секунды и счетчик часов будет считать секунды (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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться