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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ACTEL:VERILOG:Synplify: числа с фиксир. запятой
MegaFPGA
сообщение Nov 12 2009, 08:41
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567



Помогите найти библиотеку для работы с числами с фиксированной запятой на языке VERILOG.
Go to the top of the page
 
+Quote Post
Builder
сообщение Nov 13 2009, 00:56
Сообщение #2


iBuilder©
****

Группа: Свой
Сообщений: 508
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(MegaFPGA @ Nov 12 2009, 12:41) *
Помогите найти библиотеку для работы с числами с фиксированной запятой на языке VERILOG.

Вы сами-то хоть поняли что спрашиваете? Я - не понял, что именно Вам нужно.
Если Вы студент - сходите спросите у тех кто на лекции ходил.
ЗЫ: если я всё-же понял вопрос правильно, то эта библиотека содержится в самом Verilog.
Если-же я понял не правильно - ну так спрашивать нужно правильно.
Go to the top of the page
 
+Quote Post
MegaFPGA
сообщение Nov 13 2009, 03:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567



Цитата(Builder @ Nov 13 2009, 04:56) *
Вы сами-то хоть поняли что спрашиваете? Я - не понял, что именно Вам нужно.
Если Вы студент - сходите спросите у тех кто на лекции ходил.
ЗЫ: если я всё-же понял вопрос правильно, то эта библиотека содержится в самом Verilog.
Если-же я понял не правильно - ну так спрашивать нужно правильно.

Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 13 2009, 05:34
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(MegaFPGA @ Nov 12 2009, 21:40) *
Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog.


прежде чем растопыривать пальцы рекомендую сильно подумать. если под VHDL либами вы понимаете библиотеку math_real, то это не значит что она синтезируемая. Эта библиотека используется для моделирования. Верилог в таком не нуждается т.к. все функции с вещественными числами у него встроены, но опять же это работает только для моделирования. Хотите синтезировать логику работающую с вещественными числами пишите математику в ручную и/или пользуйте корки от производителей ПЛИС.


--------------------
Go to the top of the page
 
+Quote Post
MegaFPGA
сообщение Nov 13 2009, 06:01
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567



Мда ... это будет проблемно. У меня почти везде числа real. (
Go to the top of the page
 
+Quote Post
Builder
сообщение Nov 13 2009, 07:34
Сообщение #6


iBuilder©
****

Группа: Свой
Сообщений: 508
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(MegaFPGA @ Nov 13 2009, 06:40) *
Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog.

Ну, в иходном посте Вы спрашивали всё-же фиксированную точку, а не плавающую.
А это всё-же мягко говоря 2 большие разницы.
Про корку, уже сказали, ищите или пишите. У той-же альтеры кажись есть.
Что-то еть на http://opencores.org/projects
Но правучка занимает много места. И ели у Вас её много, а чип на гипер большой, то начинайте сначала-
пересмотрите алгоритм, возможно на фикированной точке можно выкрутится.
Плавучку в ПЛИС без особой надобноти не принято использовать.
И ещё, а какие операции из плавучки нужны?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 13 2009, 07:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(MegaFPGA @ Nov 13 2009, 09:01) *
Мда ... это будет проблемно. У меня почти везде числа real. (

А к чему тогда исходный вопрос про фиксированную точку? Переделывайте тогда с real на эту самую фиксированную, как правило проблем в этом никаких, немного математики, и все. А если без real никак (не верю, чудеса), то см. последний совет Builder и ориентируйтесь на жирную фпга.
Go to the top of the page
 
+Quote Post
MegaFPGA
сообщение Nov 13 2009, 08:47
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567



Извиняюсь немного всех запутал. Использовал real потому, что так было проще при тестировании проги. А мне нужно щас на фиксед все реализовать. Надо будет математику всю переделывать что не так просто.
Про библиотеку я подумал потому что рядом с библиотекой для float для VHDL рядом лежала fixed и я подумал что наверное для Verilog есть что то аналогичное. Ведь все равно же удобнее не переписывать все вычисления а воспользоваться готовыми типами.
Вот код если кому интересно.

CODE
integer i=0,k=0,magcnt=0,Fsig;
wire [0:31999]data; // тестовый массив
real w=0, cosine=0, sine=0,coeff=0, Q0=0, Q1=0, Q2=0,magn=0;
real magnitude[0:31];
parameter Fsamp = 8000;
parameter N =4000;//размер выборки

always @ (posedge nxt_block)
begin
for(Fsig=2585;Fsig<2616;Fsig=Fsig+1)
begin
k=0.5+((N*Fsig)/Fsamp);
w=((2*3.14159265)/N)*k;
cosine = cos(w);
coeff = 2*cosine;

for(i=0;i<N+1;i=i+1)
begin
Q0=coeff*Q1-Q2+{data[i*8], data[i*8+1], data[i*8+2], data[i*8+3], data[i*8+4], data[i*8+5], data[i*8+6], data[i*8+7]};
//Q0=coeff*Q1-Q2+{data[i*8+7], data[i*8+6], data[i*8+5], data[i*8+4], data[i*8+3], data[i*8+2], data[i*8+1], data[i*8]};
Q2=Q1;
Q1=Q0;

end
magnitude[magcnt]=Q1*Q1+Q2*Q2-Q1*Q2*coeff; // мощность в квадрате
magcnt=magcnt+1;
Q1=0;Q2=0;Q0=0;i=0;
end
magn=magnitude[magcnt];
while(magcnt>0)
begin
if (magn<magnitude[magcnt-1])
begin
magn=magnitude[magcnt-1];
end
magcnt=magcnt-1;
end
end

function real sin;
input x;
integer x;
real x1,y,y2,y3,y5,y7,sum,sign;
begin
sign = 1.0;
x1 = x;
if (x1<0)
begin
x1 = -x1;
sign = -1.0;
end
while (x1 > 3.14159265/2.0)
begin
x1 = x1 - 3.14159265;
sign = -1.0*sign;
end
y = x1*2/3.14159265;
y2 = y*y;
y3 = y*y2;
y5 = y3*y2;
y7 = y5*y2;
sum = 1.570794*y - 0.645962*y3 + 0.079692*y5 - 0.004681712*y7;
sin = sign*sum;
end
endfunction

function real cos;
input x;
real x;
begin
cos = sin(x + 3.14159265/2.0);
end
endfunction
endmodule



Сообщение отредактировал MegaFPGA - Nov 13 2009, 08:51
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 13 2009, 09:08
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(MegaFPGA @ Nov 13 2009, 11:47) *
Использовал real потому, что так было проще при тестировании проги. А мне нужно щас на фиксед все реализовать.


Все операции с fixed определены внутри самого верилога без каких либо внешних библиотек.

А так, на будущее, отлаживать математику лучше в том же матлабе, и переход делать float->fixed там же. Так как там есть все необходимые средства анализа, и прочие удобства. HDL для этой задачи, пожалуй, наихудшее решение.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 13 2009, 09:12
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(MegaFPGA @ Nov 13 2009, 02:47) *
Вот код если кому интересно.


жесть, и вы хотели ЭТО по мановению волшебной палочки собрать? Такие времена еще не скоро настанут, по крайней мере с верилога smile.gif. Сюда проситься жесткая модификация алгоритма с возможными заменами точных вычислений разными аппроксимациями.


--------------------
Go to the top of the page
 
+Quote Post
MegaFPGA
сообщение Nov 13 2009, 09:39
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 12-11-09
Из: Уфа
Пользователь №: 53 567



Цитата(des00 @ Nov 13 2009, 13:12) *
жесть, и вы хотели ЭТО по мановению волшебной палочки собрать? Такие времена еще не скоро настанут, по крайней мере с верилога smile.gif. Сюда проситься жесткая модификация алгоритма с возможными заменами точных вычислений разными аппроксимациями.

можно по подробнее что не так ?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 13 2009, 10:01
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(MegaFPGA @ Nov 13 2009, 12:39) *
можно по подробнее что не так ?

Не так - подход к решению поставленной задачи. При помощи простого использования какой-то библиотеки и средств синтеза на сегодняшний день это не реально. Тут много ручной работы по переписыванию исходного текста с real на обычные signed/unsigned wire/reg, которой, должна предшествовать работа по моделированию последствий такого перехода и рассчету необходимых разрядностей в математической среде (ну или на бумаге).
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 13 2009, 10:29
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 001
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MegaFPGA @ Nov 13 2009, 12:39) *
можно по подробнее что не так ?
Verilog & VHDL != C. Это не языки ПРОГРАМИРОВАНИЯ, а языки ОПИСАНИЯ АППАРАТУРЫ. Нельзя произвольную программу засунуть в железо (если конечно это железо не компьютер)
Go to the top of the page
 
+Quote Post
Builder
сообщение Nov 13 2009, 10:49
Сообщение #14


iBuilder©
****

Группа: Свой
Сообщений: 508
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(MegaFPGA @ Nov 13 2009, 13:39) *
можно по подробнее что не так ?

Тут куча работы по переводу алгоритма на фиксед точку. По сути, у Вас следана только половина работы, да и то не факт что большая.
С ходу:
1) выбор разрядностей (целая/дробная часть), которых хватит для Вашего динамического диапазона;
Да, что-б небыло вопросов, если возникнет вопрос, что за целая/дробная часть в фиксет поинте - отсылаю к докам на целочисленные процы, помнится у AnalogDevice на 218х было неплохое описание целочисленной математики. Думаю что то-же самое есть и у техаса.
2) проработкой алгоритма, что-бе небыло переполнений. Ну или анализ, может хватит просто насыщения.
3) выбор типов и методов апроксимации того-же синуса.
4) Проработка блок схемы всего этого добра, что-б работало быстро и как надо.

Так-что берите матлаб, как говорил SM, и вперёд....
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 13 2009, 10:56
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Builder @ Nov 13 2009, 13:49) *
3) выбор типов и методов апроксимации того-же синуса.
4) Проработка блок схемы всего этого добра, что-б работало быстро и как надо.


во-во.

Вдоконку, автору. Еще раз хочу напомнить - на надо забывать, что Вы пишете не программу, а разрабатываете схему устройства, которое реализует заданную функциональность, методом описания этой схемы на языке описания аппаратуры. И надо себе четко представлять, какая функция реализуется какими вариантами схемных решений, прежде чем выбрать тот или иной подход к реализации.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd September 2017 - 02:46
Рейтинг@Mail.ru


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