Krod 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Добрый день Подскажите как можно реализовать Делитель на 7 на Verilog не прибегая к оператору / Так же интересует делитель на 28. Правильно ли будет сначала делить сигнал на 7, а затем на 4? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dima_spb 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Добрый день Подскажите как можно реализовать Делитель на 7 на Verilog не прибегая к оператору / Так же интересует делитель на 28. Правильно ли будет сначала делить сигнал на 7, а затем на 4? Приветствую! Первая мысль - это на основе обычного счетчика. Считаете до 7(28) и сбрасываете счетчик. Гугл не помог? Вот что на глаза попадалось... примеры Verilog Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksim.maneyev 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба x/7 = x/(8-1) = (x shr 3) - x Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба а на 28 это еще на 2 разряда сдвинуть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба x/7 = x/(8-1) = (x shr 3) - x Это что, какая-то новая математика? Если x/7 = x/(8-1) = (x shr 3) - x = x/8 - x, тогда: x/7 + x = x/8 или 8x/7 = x/8 или 8/7 = 1/8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Добрый день Подскажите как можно реализовать Делитель на 7 на Verilog не прибегая к оператору / Так же интересует делитель на 28. Правильно ли будет сначала делить сигнал на 7, а затем на 4? а чем обычное деление не устраивает? PS на форуме модуль целочисленного деления уже выкладывали... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Добрый день Подскажите как можно реализовать Делитель на 7 на Verilog не прибегая к оператору / Так же интересует делитель на 28. Правильно ли будет сначала делить сигнал на 7, а затем на 4? Если время исполнения операции позволяет - можно реализовать деление вычитанием. Это самый простой способ. Имеет свои недостатки. Есть ещё вариант реализовать деление "столбиком" - чуть посложнее и побыстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
semperante 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Можете рассмотреть еще такой способ: Разделить на 7 - это все равно что умножить на 1/7, что примерно равно 0.142857142 или 37449/(2^18). То есть умножаете свое число на 37449 и сдвигаете на 18 разрядов. Меняя числа в делителе и делимом, подстраивая их под особенности умножителей конкретного кристалла, можно варьировать точность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба То есть умножаете свое число на 37449 и сдвигаете на 18 разрядов. Меняя числа в делителе и делимом, подстраивая их под особенности умножителей конкретного кристалла, можно варьировать точность. Обобщая - делим на калькуляторе 1 на 7, получаем 0.1428... Последовательно умножаем результат на 2, пока целая часть не достигнет нужной точности: 0.28, 0.57, 1.14, 2.28, ... 73.14 (ошибка 0.2%) ... Так получаем: x 73 / 512 (сдвигом) = 1 / 7.014. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dworfik 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба если всё делается для FPGA (где умножители/делители являются дифицитным товаром) то используем умножение на константу (сумматоры+сдвигатели) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Точно, представляем как cумму двух сдвинутых чисел (мы например сдвигами получаем 1/8 и 1/64). 1/7-(1/8+1/64)=0.00223 это ошибка этого решения. Точнее 1/7-(1/8+1/64+1/512)=0.000279. И так далее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Точно, представляем как cумму двух сдвинутых чисел (мы например сдвигами получаем 1/8 и 1/64). ... И так далее. Еще можно попытаться использовать не только сумму сдвинутых чисел, но и вычитать некоторые из них: 1/K + 1/L - 1/M + 1/N Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 13 декабря, 2013 Опубликовано 13 декабря, 2013 · Жалоба Еще можно попытаться использовать не только сумму сдвинутых чисел, но и вычитать некоторые из них: 1/K + 1/L - 1/M + 1/N Да, и фактически это оптимизированное умножение на константу, близкую к 1/7. Можно даже использовать корегенератор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 14 декабря, 2013 Опубликовано 14 декабря, 2013 · Жалоба Подскажите как можно реализовать Делитель на 7 на Verilog не прибегая к оператору / Оконкретили бы вопрос, что надо делить входную частоту или значение на семерку? В первом случае счетчик, а по второму уже накидали решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krod 0 17 декабря, 2013 Опубликовано 17 декабря, 2013 · Жалоба Оконкретили бы вопрос, что надо делить входную частоту или значение на семерку? Делить частоту принимаемого сигнала, причем затрачивая на это минимальное количество ресурсов ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться