Надо посчитать например Ln, корень и тригонометрические функции, как это делать через таблицы? Как забить уже посчитанные значения в ПЗУ?
Например: есть сигнал A std_logic_vector (7 downto 0), от него надо посчитать ln.
Прочитал, что можно посчитать все значения, а можно таблица+интерполяция (если таблица редкая)
Мои проедположения- это что-то вроде дешифратора.
Хотелось бы пример,любой функции, что бы въехать. Таблица забивается в отдельный файл (если да, то как)?
Табличный метод расчета функций (Vhdl)
-
Rotor.h1kobra
- Родился
- Сообщения: 11
- Зарегистрирован: Пн дек 03, 2012 15:15:58
- Реклама
Re: Табличный метод расчета функций (Vhdl)
Ну, например в библиотеке DSP от STM32 используется метод: таблица + линейная аппроксимация между табличными точками. Количество точек выбирается исходя из необходимой точности вычислений. Для периодических функций аргумент вначале приводится в диапазон первого периода.
Как забить массив констант во flash – зависит от архитектуры МК. В AVR – через макрос «PROGMEM», в STM32 достаточно указать компилятору классификатор «const».
Как забить массив констант во flash – зависит от архитектуры МК. В AVR – через макрос «PROGMEM», в STM32 достаточно указать компилятору классификатор «const».
Re: Табличный метод расчета функций (Vhdl)
Код: Выделить всё
with arg(7 downto 0) select
data <= 123 when "00000000",
234 when "00000001",
...
(others => '-') when others;Re: Табличный метод расчета функций (Vhdl)
Всем привет. Вставлю свои 5 копеек )))
Для вывода заранее посчитанных значений из таблицы, я бы заюзал ROM ресурсы ПЛИСины. Записать их туда через функцию. В Квартусе есть примеры описания памяти.
Т.е. выделяем количество памяти в соответствии с количеством значений входных данных. Данные используем как адрес для памяти, а в ячейки записать (предварительно через функцию) рассчитанные значения для этих же входных данных.
А вообще, табличный способ наиболее простой, и его стоит использовать что ли для тригонометрических функций. Логарифм и корень квадратный можно посчитать, находил в нете описание алгоритмов расчётов этих функций.
Для вывода заранее посчитанных значений из таблицы, я бы заюзал ROM ресурсы ПЛИСины. Записать их туда через функцию. В Квартусе есть примеры описания памяти.
Т.е. выделяем количество памяти в соответствии с количеством значений входных данных. Данные используем как адрес для памяти, а в ячейки записать (предварительно через функцию) рассчитанные значения для этих же входных данных.
А вообще, табличный способ наиболее простой, и его стоит использовать что ли для тригонометрических функций. Логарифм и корень квадратный можно посчитать, находил в нете описание алгоритмов расчётов этих функций.
В нашем мире нет ничего не возможного.
[url=http://www.radikal.ru][img]http://s004.radikal.ru/i206/1005/da/ce8bca35df46.gif[/img][/url] [url=http://www.radikal.ru][img]http://s59.radikal.ru/i163/1005/57/158b685f800d.gif[/img][/url]
[url=http://www.radikal.ru][img]http://s004.radikal.ru/i206/1005/da/ce8bca35df46.gif[/img][/url] [url=http://www.radikal.ru][img]http://s59.radikal.ru/i163/1005/57/158b685f800d.gif[/img][/url]

