Pull to refresh

Comments 17

Отличная работа! Не так много на Хабре топиков по программированию ПЛИС, но благодаря таким, как вы, ситуация меняется к лучшему.
Уйдите сради кала! Мои бедные глазки тошнит от этой кучи рекламы :(
Да!!! Мультиплексер с гамбургерами — это сильно!
А на сколько ваши часы будут убегать в сутки? В статье вы указали «нам нужен точный источник», но далее никак не раскрыли, что за кварц используется на плате.
большинство (ширпотребных) кварцевых резонаторов имеют разброс около ±100ppm (peak-per-minut).

число тактов (peaks) в минуту кварца 50МГц= 50 000 000 х 60 = 3 000 000 000

значит если 3 000 000 100 тактов за минуту, а за сутки 4 320 000 144 000 ( в сутках 1440 минут)

коэффициент деления у нас постоянный. сначала на 50 в PLL и потом 1 000 000 в счетчике.

получаем что сутки максимум секунд будет = 86400,00288 что означает что примерно 2.88 милисекунды (!) в сутки.

через год часы уйдут где-то на 1,0512 секунды.

выше рассмотрен случай если +100ppm.

А эта нестабильность может меняться от температуры напряжения питания и множества других факторов.

PPM — это не «peak-per-minut», а parts per million — частей на миллион. То есть, если точность кварца 100ppm, значит частота гуляет от заявленной на 1/10000, то есть на 0,01%
Таким образом, если в сутках 24*3600=86400 секунд, часы будут убегать (или отставать) на 86400/10000=8,64 секунды.
А вообще для кварца ±100ppm — это много, обычно постоянное отклонение ±10...20ppm (и от него можно избавиться один раз подстройкой генератора), плюс температурное 1...5ppm/°C.
Вы правы, кто то меня давно еще не верно информировал.
Вот только собственно Verilog'a то тут совсем чуть-чуть и настолько примитивного, что дальше собственно то и некуда…
Предлагаю дальнейшее направление для деятельности: научить часы устанавливать текущее время и создать будильник ;)
> научить часы устанавливать текущее время
Так они умеют устанавливать, кнопочками. Или вы предлагаете NTP прикрутить?
Вообще говоря, у меня лежит дисплей от автомагнитолы Сони. Хороший дисплей, вполне пойдет, чтобы выводить инфу с ПК. Загрузка процессора, текущий трек в плеере и все такое.
Вот хочу его как-нить прикрутить ;-)
Для этого ПЛИС не особо и нужна. Был бы рад увидеть статью про какую-нибудь задачу, где ПЛИС уместна: обработку видеосигнала, например, или что-нибудь со скоростными интерфейсами.
Ну да, я понимаю. Просто у меня будет, куда плату девать, когда она не задействована ))))
Хотя переделаю на МК. Но мне надо просто раскурить, как точно с ним общаться.
Когда-то читал. Хороший топик — все расписано подробно.
У меня как было — сначала сделал часики, потом подумал, а почему бы не заделать статейку куда.
Думал вот о том, что у меня может получиться дубль вашей статьи. Но, например, у вас с использованием VHDL, я вот предпочел Verilog. Он мне куда больше нравится, хотя вот VHDL приходится изучать, так как без него никак.
Хотя у меня все равно большая часть на стандартных мегафункциях.
Про сами часы давно читал в какой-то книге по электронике… Старая книжка, там еще все на дискретной логике. Вот додумал сам установку и все, что из башки вылетело. Не спорю, возможно, не самый лучший вариант применил. Зато свой )))
А про перевод из bin в bcd… Нашел вот вариант мгновенного преобразования, в комбинационной схеме. Видел ваш вариант, но он мне не понравился… Наверно, за счет деления в коде. Надо будет посмотреть, во что квартус этот вариант синтезирует. Деление — дорогая операция, ее не так просто сделать. Не думаю, что квартус так лихо оптимизирует данный код.
Sign up to leave a comment.

Articles