реклама на сайте
подробности

 
 
> fixed-point, matlab, fpga - помогите разобраться
_Ivan_33
сообщение Aug 28 2014, 11:47
Сообщение #1


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



Добрый день.

Требуется совет на следующую задачу.

У меня есть алгоритм расчета нескольких величин(алгоритм управления), где присутствуют синусы, косинусы, возведения в квадрат, извлечение корня, деление, а также функции заданные поточечно в том числе двух аргументов...
Мне нужно сделать этот алгоритм в плис, и ксайлинкса и альтеры. Использовать ядра библиотек производителей - лучше не надо...
Для начала мне нужно определиться fixed point или float point арифметику мне использовать. Я изначально выбрал первое, так как если самому все писать с нуля, то очень много времени пройдет.
Потом стал вопрос об ошибке расчета величин из-за погрешности перевода fixed-point из float. Для этих целей я хочу использовать матлаб, чтобы если что в некоторых местах изменять разрядность данных, дабы оптимизировать проект по площади. Допустим я делаю простую модель в симулинке, где есть из источника ramp и она расходится на 2 ветки - double и fixed и умножается на коэффициент усиления. Как мне найти ошибку между результатом double и fixed?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
syoma
сообщение Aug 29 2014, 09:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата
Если хочется инноваций, то можно и HDL Coderу скормить Но трудозатраты на подготовку модели для этого будут соизмеримы с описанием на яоа. Ну и конечно получившийся в результате код ни для какой серьезной дальнешей работы (sta, p&r и т.п.) не пригоден.

Ваши знания по HDL Coderу, как бы это по мягче сказать, слегка устарели, или Вы так и не поняли как пользоваться данным продуктом.
Мы уже 6 лет пользуемя автоматической генерацией HDL Кода. Прошли и Xilinx System Generator и сейчас юзаем HDL Coder вместе с ним. Трудозатраты несоизмеримые, а главное процесс самого кодинга на ЯОА отсутствует, что позволяет самому разработчику алгоритма без знаний HDL, а только со знанием принципов построения ПЛИСов, разрабатывать, проверять и запускать свои алгоритмы в реальном железе.
Ну а на счет серьезной дальнейшей работы - у нас не студенчиские проекты, а вполне реальные системы управления силовой электроникой на сотни мегават на Virtex-6 с гигабитными трансиверами. И все на матлабе.
Понятно, что если важна сильная оптимизация по ресурсам, то нужен ручной кодинг. Но сами по себе проекты, где используются такие ПЛИС обычно не требовательны к минимальной стоимости чипов - в случае чего берется просто больший чип.
Цитата
HDL-кодер тут также много обсуждали. Итог таков, что объем работы по подготовке сколь-либо серьезной модели для hdl-кодера соизмерим с объемом работы по описанию блока на яоа.

Что-то я не помню тут больших обсуждений и тем более такого итога.

Цитата
syoma, круто! А минимальные и максимальные значения мы задаем на входе первого элемента схемы или это делается где-то в свойствах системы? А где посмотреть про то, как добавлять задержки?(имеется ввиду ступени конвейера, регистровые).

Как говорил Fat Robot - это зависит от вашей модели. В случае с обратными связями может придется вводить разрядность вручную. Обычно задается для каждого входа индивидуально. Или создается Харнесс - генераторы сигналов нужной амплитуды, чтобы прогнать модель по всем возможным значениям, тогда FPD сам определит максимумы и минимумы.
По задержкам - можно задать вручную в свойствах блока, можно повставлять Delays. В этом HDL Coder немного проигрывает System Generator, так как в последнем задержки в блоках моделируются, а в HDL Codere нет - т.е. нет cycle true. Но зато в HDL Codere есть прикольная вешь, как автоматическия конвееризация - есть несколько каналов, задаешь задержку и шеринг фактор и оно генерит код, в котором один единственный умножитель апсемплируется и используется для всех каналов. А захотел - сгенерит несколько параллельных умножителей. Или что-то посередине.
Цитата
И получается есть какой-то другой способ перегона модели в hdl код, кроме code -> hdl code -> generate hdl?

Да этим способам уже скоро десяток лет будет вообще-то. Есть Xilinx System Generator. Для Альтеры есть свой тулбокс. Есть у альтиума помоему что-то. HDL Coder, конечно. Смысл в том, что модель можно перегнать в синтезируемый HDL код по клику мышкой.
Цитата
Я еще тут немного поигрался, получается все блоки типа синуса, корня и так далее этот генератор делает как экземпляры, а разработчик уже дальше вставляет свой код ядра для вычисления этих величин?

Нет. Для каждого блока генерится свой HDL код, либо используется IP библиотека от нужного производителя, которая выполняет данную функцию. Либо заменяется таблицей в BRAM. Все в зависимости от предпочтений. На выходе Вы получите полностью рабочий HDL код, который скармливаете синтезатору и P&R как он есть. Там уже все будет.
Свой код можно добавить если у Вас уже есть своя реализация какой либо функции на HDL либо вы хотите еще больше оптимизировать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Ivan_33   fixed-point, matlab, fpga - помогите разобраться   Aug 28 2014, 11:47
- - RHnd   Почему нельзя вычесть результат одной ветки из рез...   Aug 28 2014, 12:30
- - Fat Robot   В симулинке, когда у вас готова fxp-модель, то ее ...   Aug 28 2014, 13:40
|- - syoma   Цитата(Fat Robot @ Aug 28 2014, 15:40) В ...   Aug 28 2014, 15:20
|- - Fat Robot   Переход от FXP обратно к FLP нужен прежде всего дл...   Aug 28 2014, 16:01
- - _Ivan_33   RHnd, спасибо, что-то я завис. Можно еще тупо пост...   Aug 29 2014, 07:45
|- - Fat Robot   Речь шла про hdl-кодер, а не про симулинк в целом....   Aug 29 2014, 07:57
|- - Fat Robot   То что вы рассказываете, это прекрасно. Выводы для...   Aug 29 2014, 10:35
|- - syoma   Цитата(Fat Robot @ Aug 29 2014, 12:35) То...   Aug 29 2014, 11:15
|- - petrov   А откуда в силовой электронике такие полосы сигнал...   Aug 29 2014, 11:29
|- - Fat Robot   Т.е. я правильно понимаю, что включение в маршрут ...   Aug 29 2014, 12:36
|- - syoma   Цитата(Fat Robot @ Aug 29 2014, 14:36) Т....   Aug 29 2014, 14:43
|- - Fat Robot   Ясно. Если квалификация инженеров такая, как в это...   Aug 29 2014, 17:07
- - _Ivan_33   Я посмотрел вот это видео https://www.mathworks.co...   Sep 1 2014, 12:21
- - _Ivan_33   Я раньше игрался с кордиком в матлабе и увидел реа...   Sep 1 2014, 13:22
- - SemperAnte   Команда hdllib внутри Матлаба открывает библиотеку...   Sep 1 2014, 18:22
- - _Ivan_33   Все-таки остался висеть следующий вопрос: Вот я с...   Sep 2 2014, 13:37
- - SemperAnte   Блок Delay спокойно синтезируется и, в общем случа...   Sep 2 2014, 14:28
- - _Ivan_33   а вот еще вопрос - у меня получилось так, что длин...   Sep 4 2014, 08:12
- - SemperAnte   Просто динамический диапазон вашего числа меньше е...   Sep 4 2014, 08:28
- - _Ivan_33   спасибо!   Sep 4 2014, 08:35
- - _Ivan_33   Еще вопрос - что то не получается у меня сделать к...   Sep 5 2014, 07:28
- - SemperAnte   Вроде, все так и делается. Включается опция ...   Sep 5 2014, 08:17
- - _Ivan_33   CODE`timescale 1 ns / 1 ns module Calc_X4 ...   Sep 5 2014, 13:08
|- - des00   Цитата(_Ivan_33 @ Sep 5 2014, 20:08) CODE...   Sep 8 2014, 03:29
- - _Ivan_33   Ну хотелось бы 1 регистр на входе, 1 после умножен...   Sep 8 2014, 06:36
|- - des00   Цитата(_Ivan_33 @ Sep 8 2014, 13:36) Ну х...   Sep 8 2014, 06:46
- - _Ivan_33   Увы, saturation стоит осознанно. То что синтезом б...   Sep 8 2014, 06:51
|- - des00   Цитата(_Ivan_33 @ Sep 8 2014, 13:51) Увы,...   Sep 8 2014, 07:14
- - _Ivan_33   Спасибо за разъяснения, des00, но моя совесть долж...   Sep 8 2014, 08:20
- - syoma   Saturation обещали пофиксить в следующем релизе, к...   Sep 16 2014, 14:19
- - x736C   syoma, тенденция как раз такая, что чем более отве...   Sep 19 2014, 07:23
- - Fat Robot   А можно ли прочитать где-нибудь про эту практику A...   Sep 19 2014, 08:26
- - x736C   Цитата(Fat Robot @ Sep 19 2014, 12:26) А ...   Sep 19 2014, 10:05


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 09:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016