zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Не пинайте слишком сильно если спрашиваю ерунду. Но, толи устал толи ... Проект на MAXII. Есть 20-ти разрядный двоичный счёчик с сигналами сброса, начальной загрузки и входом разрешения счёта. Нужно как-то реализовать возможность увеличения его значения на единицу или на два. В зависимости от некого внешнего сигнала. Как это реализовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Счётчик это сумматор с регистром. Вот что суммировать в принципе не сильно важно. Или x=x+1; или x=x+2 Соответственно мультиплексор выбирающий 1 или 2 + сумматор и регистр :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Не понял. Вот к примеру: 1. начальное значение счётчика =0, слагаемое =1 на каждом следующем такте получим 1,2,3,4... 2. начальное значение счётчика =0, слагаемое =2 на каждом следующем такте получим 2,3,4,5... Получается просто смещение начального значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба 15 минут назад, zombi сказал: Нужно как-то реализовать возможность увеличения его значения на единицу или на два. В зависимости от некого внешнего сигнала. Подаем внешний сигнал S = 1, если надо добавлять 2 или 0, если надо добавлять 1. И суммируем Х + 1 + S... Вот и все... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба 7 минут назад, zombi сказал: Не понял. Вот к примеру: 1. начальное значение счётчика =0, слагаемое =1 на каждом следующем такте получим 1,2,3,4... 2. начальное значение счётчика =0, слагаемое =2 на каждом следующем такте получим 2,3,4,5... Получается просто смещение начального значения. Dj втором случае x=x+2 т.е. 2, 4, 6, и пр... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Ага, т.е. счетчик как таковой не и нужен. Просто регистр выход которого через сумматор подключён к его же входу. Правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Так "регистр выход которого через сумматор подключён к его же входу." при слагаемом 1 это и есть синхронный счётчик :))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Ясно. Спасибо. А как же грузить этот счётчик начальным значением? Ещё один мультиплексор после сумматора ставить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Ну да :) Так и делается загрузка в обычном счётчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба http://iosifk.narod.ru/hdl_coding/hdl_coding_11_kit_1_09.pdf Только вместо "1" подаём или 1 или 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба 3 минуты назад, MegaVolt сказал: http://iosifk.narod.ru/hdl_coding/hdl_coding_11_kit_1_09.pdf Только вместо "1" подаём или 1 или 2 Спасибо, что не забываете... Ну а еще можно и так... Если 20 разрядов сильно тормозят проект, то можно сделать маленький автомат, аккумулятор, скажем на 4 бита + флаг переноса и к этому память на 5 ячеек по 4 бита... Ну и если на 20 разрядов синхронный перенос сожрет много ресурсов, то на 4 бита проект будет бегать быстро.. И счет делать по-тетрадно. Если точность счета "до последнего бита" не нужна, то можно учесть сколько тактов работает автомат, ну скажем 4 такта и это умножить на 4 ячейки. Получим 16 тактов на обработку счетчика... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 21 марта, 2019 Опубликовано 21 марта, 2019 · Жалоба 9 minutes ago, iosifk said: Если 20 разрядов сильно тормозят проект... Получим 16 тактов на обработку счетчика... На самом деле счетчик у меня 25-ти битный (на блок-схеме просто мегафункция LPM_COUNTER). На вход clk поступает частота 120MHz. Каждый третий такт формируется единица на входе разрешения счёта счетчика. Получается что счётчик должен увеличится на единицу за 2 такта (~16.6 нс). Сейчас вроде всё работает, успевает. Но вот захотелось мне его не на единицу а на два увеличивать. Завтра буду пробовать сумматор и регистр использовать вместо просто двоичного счётчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 22 марта, 2019 Опубликовано 22 марта, 2019 · Жалоба Приветствую! 9 hours ago, zombi said: Завтра буду пробовать сумматор и регистр использовать вместо просто двоичного счётчика. Простой синхронный двоичный счетчик это как раз комбинация сумматора и регистра. Поэтому без разницы какую константу вы будете суммировать 1,2 или -1. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 22 марта, 2019 Опубликовано 22 марта, 2019 · Жалоба Интересно было почитать. Если не сложно, извините что не совсем по теме. Почему в данном случае вы все общаетесь на языке электроники (сумматор, регистры...) Если проще было один раз написать на Verilog с одним If и простым инкрементом. В журнале Иосифа так же половину текста долго рассказывается на языке электроники и достаточно быстро выложено одним куском кода пересказанное. Это наверное идеология, которая мне, программисту, не понятна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться