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

Fixed-point library на VHDL

Не могу ни как найти готовую библиотеку или пакет для работы с fixed-point на VHDL.

Нужны простые вычисления: *,/,+,-

Может есть у кого?

 

Спасибо.

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


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

Не могу ни как найти готовую библиотеку или пакет для работы с fixed-point на VHDL.

Нужны простые вычисления: *,/,+,-

Может есть у кого?

 

Спасибо.

 

Вам для синтеза или так?

 

Здесь посмотрите .

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


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

Для синтеза.

 

Ее как раз сейчас и тестирую.

Но Active-HDL ругается при компиляции. Убрал все что ему не нравится. Вроде работает. Работает она без ошибок или как? Вы ее пользовали?

 

Спасибо.

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


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

Не синтезируется этот пакет.

 

=========================================================================

* HDL Analysis *

=========================================================================

Analyzing Entity <test> (Architecture <test_arch>).

ERROR:Xst:1548 - "C:/My_Designs/fixedpoint/fixedpoint/synthesis/./../src/test.vhd" line 19: Negative range in type of signal <v2> is not supported.

 

где v2 объявлен:

signal v2: sfixed(3 downto -4);

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


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

Для синтеза.

 

Это вы так шутите видимо?

Хотя в плисах логики много, но не стоит этим злоупотреблять.

Я больше чем уверен, что ваша система может быть реализована на обычной арифметике(после синтеза такое и получается).

Если вы используете * и /, то следует более детально подходить к системе и выбирать необходимую степень конвейеризации.

На мой взгляд использование * и / в rtl коде к хорошим результатам не приведет, хотя если быстродействие не критично, то может и прокатить.

 

ЗЫ:

У меня synplifyем засинтезировалось. Весь код ~ на 750-800 altera lut.

library ieee;
use ieee.std_logic_1164.all;
library work;
use work.fixed_pkg.all;

entity fp_test is
    port
    (
    a,b  : in sfixed(3 downto -4);
    c  : in sfixed(11 downto -4);
    q,q1  : out sfixed(4 downto -4);
    q2  : out sfixed(11 downto -4);
    q3  : out sfixed(19 downto -4)
    );
end fp_test;

architecture kukaziaba of fp_test is
begin
q<=a+b;
q1<=a-b;
q2<=a*b;
q3<=c/b;
end kukaziaba;

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


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

synplifyем синтезируется это я проверил конечно, спасибо. Но вот XST не берет, а я работаю с ним.

 

А как быть, к примеру простой алгоритм:

Берем данный с АЦП, умножаем на какой-то гейн (который может задавать юзер) и выдаем в ЦАП. Если возникает переполнение при умножении, то на вход ЦАП надо выставить максимальное значение (для отрицательных минимальное).

С АЦП приходят данные допустим в формате 0.0000 (+-1 макс).

Гейн в формате 000.00 (+-3.75 макс).

А ЦАП результат в формате 0.0000 (+-1 макс).

Для единственного случая можно сделать самим логику котрая будет следить за переполнением для конкретного случая. Но это не единственный проект.

Или, захотелось поминять формат гейна. Тогда опять весь код править и проверять?

В связи с этим и был задан вопрос. Наверника каждый сталкивается с подобным и было бы не плохо иметь синтезируемую библиотеку.

 

И что интерестно не могу найти внятного описания как работать с fixed-point включая переполнения. Если посоветуете что почитать по этому поводу, а лучше бы ссылку, то большое спасибо от меня.

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


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

С АЦП приходят данные допустим в формате 0.0000 (+-1 макс).

Гейн в формате 000.00 (+-3.75 макс).

А ЦАП результат в формате 0.0000 (+-1 макс).

 

хмм может быть скажу глупость, но по опыту не желания связываться с плавучкой на МК, а что если гейн отнормировать к уровню 1 ?

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


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

eteP ваша задача решается при помощи стандартной арифметики.

Проведите нормирование данных, все имеющиеся величины приведите к одному порядку.

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


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

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

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

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

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

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

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

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

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

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