Перейти к содержанию
    

Возведение в степень в FPGAе ?

На одном из этапов проэкта будет операции возведения в степень входных данных, степень дробная.

(Это гамма-коррекция 8 bit RGB потока).

Как такое реализуется в FPGA ? Можно предположить что FPGA дает несколько встроенных multipliers 18х18.

Как кодируется (VHDL) и как оно выполняется в железе ? Нужно понять насколько трудоемкая эта операция и сколько времени отнимает. Данные, входной поток идет со скоростью примерно 12 MHz т.е. примерно 12 MB/sec. Нужно понять какая должна быть скорость FPGA перемножения что-б попытаться уложиться в реальное время, т..е без согласующего буфера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На одном из этапов проэкта будет операции возведения в степень входных данных, степень дробная.

(Это гамма-коррекция 8 bit RGB потока).

Как такое реализуется в FPGA ? Можно предположить что FPGA дает несколько встроенных multipliers 18х18.

Как кодируется (VHDL) и как оно выполняется в железе ? Нужно понять насколько трудоемкая эта операция и сколько времени отнимает. Данные, входной поток идет со скоростью примерно 12 MHz т.е. примерно 12 MB/sec. Нужно понять какая должна быть скорость FPGA перемножения что-б попытаться уложиться в реальное время, т..е без согласующего буфера.

 

Умножитель тут не сильно помогает, но 8 бит это 256 значений в таблице. Считается заранее и пишется в BRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Умножитель тут не сильно помогает, но 8 бит это 256 значений в таблице. Считается заранее и пишется в BRAM.

 

Аа, т.е. считаем заранее гамма-коррекцию на каждое возможное значение входа из 256 возможных и храним их в LUTе ? Затем, делаем что-то типа декодера который читает из таблицы LUTа согласно входному данному в качестве адреса в таблице ?

Хорошая идея, спасибо.

 

А что такое BRAM ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аа, т.е. считаем заранее гамма-коррекцию на каждое возможное значение входа из 256 возможных и храним их в LUTе ? Затем, делаем что-то типа декодера который читает из таблицы LUTа согласно входному данному в качестве адреса в таблице ?

Хорошая идея, спасибо.

 

А что такое BRAM ?

BRAM - накристальная блочная память, каждый блок такой памяти может содержать если я не ошибаюсь, 18 кбит информации (для Вёртексов). Всего блоков на кристалле может быть до нескольких сотен. Из такой памяти можно считывать-записывать 2 адреса за такт (она двухпортовая).

Вобще, возведение в произвольную дробную степень на FPGA довольно таки муторная задача, т.е. реализовать можно в академических целях, но нужно ли? Так что поддерживаю идею насчет таблицы.

Изменено пользователем Singer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аа, т.е. считаем заранее гамма-коррекцию на каждое возможное значение входа из 256 возможных и храним их в LUTе ? Затем, делаем что-то типа декодера который читает из таблицы LUTа согласно входному данному в качестве адреса в таблице ?

Хорошая идея, спасибо.

 

А что такое BRAM ?

 

Храним не в LUT, а в встроенных блоках памяти типа M4K, M512, MRAM (для Altera).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, спасибо всем. Хорошее решение, да и экономит кучу времени написания кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только не забывайте что BRAM нужно заполнять значениями после старта ПЛИС так как она после старта содержит по идее мусор.

 

А вообще перемножать с помощью таблицы ИМХО можно до 16-17 разрядного входного операнда. Правда если все же разрядность будет существенно больше можно дойти до такого момента когда от подсчета степени через вычисление ряда уже будет не отвертеться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только не забывайте что BRAM нужно заполнять значениями после старта ПЛИС так как она после старта содержит по идее мусор.

 

А вообще перемножать с помощью таблицы ИМХО можно до 16-17 разрядного входного операнда. Правда если все же разрядность будет существенно больше можно дойти до такого момента когда от подсчета степени через вычисление ряда уже будет не отвертеться.

 

Ну в моем случае все проще: на входе 6 бит на данное, выход тоже ожидает 6 бит. Правда тут уже кажется погрешность будет немалая после возведения в степень...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только не забывайте что BRAM нужно заполнять значениями после старта ПЛИС так как она после старта содержит по идее мусор.

 

А вообще перемножать с помощью таблицы ИМХО можно до 16-17 разрядного входного операнда. Правда если все же разрядность будет существенно больше можно дойти до такого момента когда от подсчета степени через вычисление ряда уже будет не отвертеться.

 

На этапе разработки делается файл заполнения блока памяти, ставится мегафункция ROM (Quartus II)и "после старта ПЛИС" блок памяти будет проинициализирован нужными значениями...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На этапе разработки делается файл заполнения блока памяти, ставится мегафункция ROM (Quartus II)и "после старта ПЛИС" блок памяти будет проинициализирован нужными значениями...

 

Хмм, сорри за ламеркий вопрос, что за файл заполнения блока памяти ?

Да и я работаю с Latticeом, не с Альтерой...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте еще один метод - "цифра за цифрой", он же "digit by digit", а также Cordic.

Там используется x^y = exp(y ln x). Зато можно получить длинные (приемлемые) разрядности результата. Книг много, одна из них здесь: http://electronix.ru/forum/index.php?showtopic=17849

Там есть сравнение разных методов, в том числе с табличными.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...