|
IP ядро целочисленного деления от Альтеры, lpm_div |
|
|
|
Nov 29 2016, 06:05
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Сколько я его не пытался использовать, все какие то заморочки. Утыкаюсь в ограничение по частоте. Нужно например поделить два числа (64 бит на 32 бит) на частоте 300МГц. Компилю проект, таймквест репортует - отрицательные слаки. Считаю, вроде тактов 10 не хватает. В мегавизарде можно выставить latency, ставлю 14 тактов ( запасом). Компилю проект, таймквест репортует - отрицательные слаки. Ставлю 24 такта. Компилю проект, таймквест репортует - отрицательные слаки. Сколько ему тактов то надо?
Зашел с другой стороны. Завел пониженную частоту 30МГц. Данные с 300мгц перекидываю на частоту 30мгц. Результат с 30мгц перевожу на 300мгц, все это делаю через всякие там защелки-синхронизаторы . Таймквест весь изнылся, что куча переходов с 30 мгц на 300мгц и обратно. Все надо описывать в sdc. Час на это потратил, устал, уже под ночь было, и так не доделал все.
Есть нормальный способ целочисленно поделить в ПЛИС?
Сморю сейчас на корки с opencores, может кто что использовал от туда?
|
|
|
|
|
Nov 29 2016, 06:15
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(novartis @ Nov 29 2016, 08:05)  Сколько я его не пытался использовать, все какие то заморочки. Утыкаюсь в ограничение по частоте. Нужно например поделить два числа (64 бит на 32 бит) на частоте 300МГц. Компилю проект, таймквест репортует - отрицательные слаки. Считаю, вроде тактов 10 не хватает. В мегавизарде можно выставить latency, ставлю 14 тактов ( запасом). Компилю проект, таймквест репортует - отрицательные слаки. Ставлю 24 такта. Компилю проект, таймквест репортует - отрицательные слаки. Сколько ему тактов то надо?
Зашел с другой стороны. Завел пониженную частоту 30МГц. Данные с 300мгц перекидываю на частоту 30мгц. Результат с 30мгц перевожу на 300мгц, все это делаю через всякие там защелки-синхронизаторы . Таймквест весь изнылся, что куча переходов с 30 мгц на 300мгц и обратно. Все надо описывать в sdc. Час на это потратил, устал, уже под ночь было, и так не доделал все.
Есть нормальный способ целочисленно поделить в ПЛИС?
Сморю сейчас на корки с opencores, может кто что использовал от туда? какая FPGA? Альтера предлагает следующее описание... попробуйте добавить "врукопашную" регистры
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Nov 29 2016, 07:06
|
Частый гость
 
Группа: Участник
Сообщений: 136
Регистрация: 3-09-09
Пользователь №: 52 178

|
Цитата(novartis @ Nov 29 2016, 09:17)  Сейчас Arria 10 (speed grade 1) В какой версии квартуса работаете? Попробую у себя собрать ради спортивного интереса.
|
|
|
|
|
Nov 29 2016, 07:12
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Цитата(goodsoul @ Nov 29 2016, 12:06)  В какой версии квартуса работаете? Попробую у себя собрать ради спортивного интереса. кристалл 10AX115N2F45E1SG. квартус 16.0.2 Build 222 07/20/2016 SJ Standard Edition Но то же самое было с циклоном 4, квартус не помню, наверно 13.1 Цитата(Maverick) Альтера предлагает следующее описание... попробуйте добавить "врукопашную" регистры Спасибо, посмотрю
|
|
|
|
|
Apr 21 2017, 06:32
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Цитата(Maverick @ Nov 30 2016, 01:29)  попробуйте такое описание
Попытался поделить 37 на 10, этот модуль выдал 2 и 1. Еще делил 57 на 10, там результат был 4 (остаток не помню). Что-то не верно он считает. Пока не когда с ним дальше разбираться.
|
|
|
|
|
Apr 21 2017, 08:18
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 20-07-16
Пользователь №: 92 633

|
У меня на Cyclone IV делит нормально (Квартус 16), но и частота относительно вашей маленькая...
|
|
|
|
|
Apr 21 2017, 14:58
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Цитата(x736C @ Apr 21 2017, 16:57)  У меня тоже есть вопрос по делению, задам тут. Существует ли какой-нибудь оптимальный способ целочисленного деления на 2^n-1 ? Или только предложенными выше универсальными делителями? Если цель - уменьшить разрядность, а результаты потом используются для пост-обработки, то можно делить на 2^n, а уже после полученный результаты домножать на 2^n / 2^n - 1. В общем случае это, конечно, не годится, но вдруг.
|
|
|
|
|
Apr 21 2017, 16:33
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Цитата(x736C @ Apr 21 2017, 16:57)  Существует ли какой-нибудь оптимальный способ целочисленного деления на 2^n-1 ? Или только предложенными выше универсальными делителями? Да, такой "оптимальный" способ существует. Чтобы его "найти", нужно вспомнить школьную формулу для суммы геометрической прогрессии: 2 -n + 2 -2n + 2 -3n + ... + 2 -mn = (1 - 2 -mn)/(2 n - 1). Из этого следует, что: a*(1 - 2 -mn)/(2 n - 1) = a/(2 n - 1) - a*2 -mn/(2 n - 1) = a*(2 -n + 2 -2n + 2 -3n + ... + 2 -mn), или: a/(2 n - 1) = a*(2 -n + 2 -2n + 2 -3n + ... + 2 -mn) + a*2 -mn/(2 n - 1), или: a/(2 n - 1) = (a >>> n) + (a >>> 2n) + (a >>> 3n) + ... + (a >>> mn) + a*2 -mn/(2 n - 1). Из этой формулы видно, что с точностью до слагаемого: Δ = b*2 -mn, частное от деления "a" на (2 n - 1) равно: b == a/(2 n - 1) ≈ (a >>> n) + (a >>> 2n) + (a >>> 3n) + ... + (a >>> mn).
|
|
|
|
|
Apr 23 2017, 11:56
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 21-09-13
Из: Санкт-Петербург
Пользователь №: 78 418

|
Цитата(novartis @ Nov 29 2016, 09:05)  В мегавизарде можно выставить latency, ставлю 14 тактов ( запасом). Компилю проект, таймквест репортует - отрицательные слаки. Ставлю 24 такта. Компилю проект, таймквест репортует - отрицательные слаки. Сколько ему тактов то надо? А в настройких фиттера опция Perform Register Retiming у вас используется?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|