megarazor 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Помогите найти библиотеку для работы с числами с фиксированной запятой на языке VERILOG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Помогите найти библиотеку для работы с числами с фиксированной запятой на языке VERILOG. Вы сами-то хоть поняли что спрашиваете? Я - не понял, что именно Вам нужно. Если Вы студент - сходите спросите у тех кто на лекции ходил. ЗЫ: если я всё-же понял вопрос правильно, то эта библиотека содержится в самом Verilog. Если-же я понял не правильно - ну так спрашивать нужно правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Вы сами-то хоть поняли что спрашиваете? Я - не понял, что именно Вам нужно. Если Вы студент - сходите спросите у тех кто на лекции ходил. ЗЫ: если я всё-же понял вопрос правильно, то эта библиотека содержится в самом Verilog. Если-же я понял не правильно - ну так спрашивать нужно правильно. Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog. прежде чем растопыривать пальцы рекомендую сильно подумать. если под VHDL либами вы понимаете библиотеку math_real, то это не значит что она синтезируемая. Эта библиотека используется для моделирования. Верилог в таком не нуждается т.к. все функции с вещественными числами у него встроены, но опять же это работает только для моделирования. Хотите синтезировать логику работающую с вещественными числами пишите математику в ручную и/или пользуйте корки от производителей ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Мда ... это будет проблемно. У меня почти везде числа real. ( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Для тех кто не ходил на лекции объясняю: синтезатор Synplify не поддерживает тип real языка Verilog. Для использования чисел с запятой надо использовать специальные библиотеки в которых используются только допустимые типы данных. Для VHDL я такие нашел, но мне надо для Verilog. Ну, в иходном посте Вы спрашивали всё-же фиксированную точку, а не плавающую. А это всё-же мягко говоря 2 большие разницы. Про корку, уже сказали, ищите или пишите. У той-же альтеры кажись есть. Что-то еть на http://opencores.org/projects Но правучка занимает много места. И ели у Вас её много, а чип на гипер большой, то начинайте сначала- пересмотрите алгоритм, возможно на фикированной точке можно выкрутится. Плавучку в ПЛИС без особой надобноти не принято использовать. И ещё, а какие операции из плавучки нужны? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Мда ... это будет проблемно. У меня почти везде числа real. ( А к чему тогда исходный вопрос про фиксированную точку? Переделывайте тогда с real на эту самую фиксированную, как правило проблем в этом никаких, немного математики, и все. А если без real никак (не верю, чудеса), то см. последний совет Builder и ориентируйтесь на жирную фпга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 (изменено) · Жалоба Извиняюсь немного всех запутал. Использовал real потому, что так было проще при тестировании проги. А мне нужно щас на фиксед все реализовать. Надо будет математику всю переделывать что не так просто. Про библиотеку я подумал потому что рядом с библиотекой для float для VHDL рядом лежала fixed и я подумал что наверное для Verilog есть что то аналогичное. Ведь все равно же удобнее не переписывать все вычисления а воспользоваться готовыми типами. Вот код если кому интересно. 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 Изменено 13 ноября, 2009 пользователем MegaFPGA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Использовал real потому, что так было проще при тестировании проги. А мне нужно щас на фиксед все реализовать. Все операции с fixed определены внутри самого верилога без каких либо внешних библиотек. А так, на будущее, отлаживать математику лучше в том же матлабе, и переход делать float->fixed там же. Так как там есть все необходимые средства анализа, и прочие удобства. HDL для этой задачи, пожалуй, наихудшее решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Вот код если кому интересно. жесть, и вы хотели ЭТО по мановению волшебной палочки собрать? Такие времена еще не скоро настанут, по крайней мере с верилога :). Сюда проситься жесткая модификация алгоритма с возможными заменами точных вычислений разными аппроксимациями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megarazor 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба жесть, и вы хотели ЭТО по мановению волшебной палочки собрать? Такие времена еще не скоро настанут, по крайней мере с верилога :). Сюда проситься жесткая модификация алгоритма с возможными заменами точных вычислений разными аппроксимациями. можно по подробнее что не так ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба можно по подробнее что не так ? Не так - подход к решению поставленной задачи. При помощи простого использования какой-то библиотеки и средств синтеза на сегодняшний день это не реально. Тут много ручной работы по переписыванию исходного текста с real на обычные signed/unsigned wire/reg, которой, должна предшествовать работа по моделированию последствий такого перехода и рассчету необходимых разрядностей в математической среде (ну или на бумаге). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба можно по подробнее что не так ?Verilog & VHDL != C. Это не языки ПРОГРАМИРОВАНИЯ, а языки ОПИСАНИЯ АППАРАТУРЫ. Нельзя произвольную программу засунуть в железо (если конечно это железо не компьютер) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба можно по подробнее что не так ? Тут куча работы по переводу алгоритма на фиксед точку. По сути, у Вас следана только половина работы, да и то не факт что большая. С ходу: 1) выбор разрядностей (целая/дробная часть), которых хватит для Вашего динамического диапазона; Да, что-б небыло вопросов, если возникнет вопрос, что за целая/дробная часть в фиксет поинте - отсылаю к докам на целочисленные процы, помнится у AnalogDevice на 218х было неплохое описание целочисленной математики. Думаю что то-же самое есть и у техаса. 2) проработкой алгоритма, что-бе небыло переполнений. Ну или анализ, может хватит просто насыщения. 3) выбор типов и методов апроксимации того-же синуса. 4) Проработка блок схемы всего этого добра, что-б работало быстро и как надо. Так-что берите матлаб, как говорил SM, и вперёд.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба 3) выбор типов и методов апроксимации того-же синуса. 4) Проработка блок схемы всего этого добра, что-б работало быстро и как надо. во-во. Вдоконку, автору. Еще раз хочу напомнить - на надо забывать, что Вы пишете не программу, а разрабатываете схему устройства, которое реализует заданную функциональность, методом описания этой схемы на языке описания аппаратуры. И надо себе четко представлять, какая функция реализуется какими вариантами схемных решений, прежде чем выбрать тот или иной подход к реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться