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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> программа для генерации фильтров в плис
Lmx2315
сообщение Dec 6 2008, 11:26
Сообщение #1


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Приветствую уважаемые .


Я новичёк в плисоведении .

Cижу разбираюсь с ПЛИС и т.д. , не подскажете какую-либо прогу чтоб могла фильтры генерить для плис Vertex .

Встроенный в ICE генератор делает только FIR и требует файл коэффициентов , руками набить нельзя . В матлабе можно поучить коэффициенты , но некуда их сунуть . Файл в формате ice (coef) не генерится .

Пробовал сгенерировать на verilog - не транслируется в прошивку ( может потому что там разрядность 64 битная ?? не знаю ) - это речь идёт о fdatool .

Пытаюсь сунуть в плис демодулятор на схеме Костоса , в симулинке вроде работает , а в плис то фильтр сделать толком не могу , то функцию sign (x) ( если кто знает - тоже подскажите , плиз ) .

Простите за косноязычность - так всегда бывает когда немного не в теме и одни эмоции .


Не стесняйтесь пинать , но тока советы давайте посодержательней ...я цифровой техникой раньше не занимался вовсе , тока линейной частью и всё.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
AsJohnAs
сообщение Dec 6 2008, 11:33
Сообщение #2


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

Группа: Свой
Сообщений: 125
Регистрация: 14-07-05
Из: Санкт-Петербург
Пользователь №: 6 793



Цитата
Встроенный в ICE генератор делает только FIR и требует файл коэффициентов , руками набить нельзя . В матлабе можно поучить коэффициенты , но некуда их сунуть . Файл в формате ice (coef) не генерится .

Ну это не правда - в fdatool можно сделать генерацию .coe файла. И при этом сделать фильтр для нужной разрядности. В принципе fdatool может генерировать VHDL код для КИХ и БИХ фильтров, но эти фильтры не будут работать на высоких частотах.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 6 2008, 11:38
Сообщение #3


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(AsJohnAs @ Dec 6 2008, 14:33) *
Ну это не правда - в fdatool можно сделать генерацию .coe файла. И при этом сделать фильтр для нужной разрядности. В принципе fdatool может генерировать VHDL код для КИХ и БИХ фильтров, но эти фильтры не будут работать на высоких частотах.

вы меня не поняли , в fdatool есть возможность сгенерить файл коэффициентов - тока он не генерится , выдаёт непонятные предупреждения и всё , уже всё перебрал .

Потому и прошу у людей - может есть какие сторонние програмки для генерации корок для плис .


На верилоге генерил и vhdl-е - в ice всё суётся но не транслируется и всё , хоть ты тресни . Причём если сделать на верилоге - то вход и выход всегда 64 битный , а если на vhdl - то всегда однобитный !
...какая-то ерунда , конечно скроее всего у меня руки кривые - но честно уже устал . Еаверняка есть что-то попроще.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
AsJohnAs
сообщение Dec 6 2008, 12:00
Сообщение #4


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

Группа: Свой
Сообщений: 125
Регистрация: 14-07-05
Из: Санкт-Петербург
Пользователь №: 6 793



Ну вообще фильтр это свертка т.е. сумма произведений коэффициентов фильтра на линию задержки.
А вообще тогда совет - переустановите матлаб. Или еще проще расчитайте фильтр - округлиде занчения и напишите в тектовом редакторе так как сказано в PDF на ту корку ISE которую вы планируете использовать. COE файл можно очень легко ручками написать
Go to the top of the page
 
+Quote Post
taurus
сообщение Dec 6 2008, 16:23
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 8-03-08
Из: Украина, Чернигов
Пользователь №: 35 743



Можно еще в MatLab, там тулбокс есть, знакомый делал, поищите. На выходе HDL-описание.

Сообщение отредактировал taurus - Dec 6 2008, 16:23


--------------------
Думать - мое хобби :)
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 6 2008, 17:53
Сообщение #6


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

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Lmx2315, coe-файл у вас не генерируется по той же причине, по которой vhdl/verilog коды фильтров, полученные в fdatool, не синтезируются. Причина - у вас все в двойной точности. Зайдите во вкладку "квантование". Отквантуйте ваш фильтр в фиксированную точку и будет вам счастье.

Цитата(taurus @ Dec 6 2008, 19:23) *
Можно еще в MatLab, там тулбокс есть, знакомый делал, поищите. На выходе HDL-описание.

taurus, о чем вы ?
Go to the top of the page
 
+Quote Post
hitower1
сообщение Dec 6 2008, 19:24
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 16-12-05
Пользователь №: 12 301



Lmx2315:
Если Вам нужны готовые реализации фильтров в качестве примера посмотрите на www.opencores.org
И учите матчасть без нее никуда, есть хорошая книга возможно Вам пригодится
Digital Signal Processing with Field Programmable Gate Arrays
автор: Dr. Uwe Meyer-Baese
http://www.dsp-book.narod.ru/books.html
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 6 2008, 19:52
Сообщение #8


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(Tue @ Dec 6 2008, 20:53) *
Lmx2315, coe-файл у вас не генерируется по той же причине, по которой vhdl/verilog коды фильтров, полученные в fdatool, не синтезируются. Причина - у вас все в двойной точности. Зайдите во вкладку "квантование". Отквантуйте ваш фильтр в фиксированную точку и будет вам счастье.


вот спасибо smile.gif , попробую на работе - дома матлаба нет ...да и айса тоже нет . Надеюсь поможет , если найду вкладку квантование .

Цитата(hitower1 @ Dec 6 2008, 22:24) *
Lmx2315:
Если Вам нужны готовые реализации фильтров в качестве примера посмотрите на www.opencores.org
И учите матчасть без нее никуда, есть хорошая книга возможно Вам пригодится
Digital Signal Processing with Field Programmable Gate Arrays
автор: Dr. Uwe Meyer-Baese
http://www.dsp-book.narod.ru/books.html



за книжку спасибо , про теорию оно понятно что изучать надо ..тока вот натура человеческая такая - хочется всего и сразу как говорится по мановению в.п. .

а на www.opencores.org я был , там теперь доступ получать нужно , я вроде постучался к ним - но не пишут , видать не поразил талантами , жаль там много чего интересного .

..по моему тут где-то у кого-то совет видел - вот чем пользуюсь в гугле набрать строку - поиск кода и первой строчкой в результатах идёт их сервис http://www.google.ru/codesearch

а в нём набираю lang:verilog fir - например , или что нужно .

Тока так я долго нужное искать буду , потому просьба продолжается к умным людям - на предмет есть у кого проги как фильтры цифровые генерить .


И не забудте подсказать как функцию sign(x) из блоков в айсе соорудить . Я пробовал делать из компаратора и сумматора , типа если число меньше нуля - то сумматор вычитает из 0 еденицу , если число больше нуля то сумматор складывает еденицу и ноль ...но по моему получается бред.

...подскажите люди добрые .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 7 2008, 13:12
Сообщение #9


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

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Lmx2315, вы бы хоть описали что вы подразумеваете под функцией sign(x). Если судить из названия, то смею предпложить, что на входе этой функции должно быть знаковое число, на выходе - знак числа. Если так, то что мешает вам брать самый старший разряд, являющийся знаковым разрядом, и выдавать его наружу ?
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 7 2008, 21:00
Сообщение #10


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(Tue @ Dec 7 2008, 16:12) *
Lmx2315, вы бы хоть описали что вы подразумеваете под функцией sign(x). Если судить из названия, то смею предпложить, что на входе этой функции должно быть знаковое число, на выходе - знак числа. Если так, то что мешает вам брать самый старший разряд, являющийся знаковым разрядом, и выдавать его наружу ?



правильно мне нужен знак числа или ноль если число - ноль .

Ну возьму я зтарший знак числа а как мне на него умножить следующее число ?

у меня после этой функции - перемножитель на другое число .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 8 2008, 04:30
Сообщение #11


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

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



Цитата(Lmx2315 @ Dec 7 2008, 16:00) *
Ну возьму я зтарший знак числа а как мне на него умножить следующее число ?


хмм, самый простой вариант

Код
  assign sign = b[$high(b)];
  assign res  = sign ? -a : a;


правда есть вариант лучше, но думаю сами догадаетесь.

Насчет FIR : Господа а что ручками уже делать FIR не модно ? На написание с нуля уходит минуты 2-3, а на создание конфигурируемого чуть больше.


--------------------
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 8 2008, 08:22
Сообщение #12


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

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Цитата(Lmx2315 @ Dec 8 2008, 00:00) *
правильно мне нужен знак числа или ноль если число - ноль .

Ну возьму я зтарший знак числа а как мне на него умножить следующее число ?

у меня после этой функции - перемножитель на другое число .

Ну допустим знак вы получили - однобитовое число: '0' - число положительное, '1' - число отрицательное. Далее вы можете превратить это однобитовое число в знаковое число, у которого старший бит - знак, остальная часть представляет коэффициент и умножать на второе множимое. В данном случае достаточно всего 2-х битов.
Но можно поступить умнее и ничего не умножать. Анализируя значения знака, переводить ваше второе множимое в знаковое число и выдавать либо его положительное, либо отрицательное значение

Ниже приведен примерный код на VHDL вашего "перемножителя". Предполагается, что "siggn" - знак числа, "m" - беззнаковое 13-битное входное число, "outp" - знаковое выходное 14-битное число.
Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;

ENTITY make_signed_out IS
    PORT (
        siggn : IN std_logic;
        m : IN std_logic_vector(12 DOWNTO 0);
        outp : OUT std_logic_vector(13 DOWNTO 0));
END make_signed_out;


ARCHITECTURE fsm_SFHDL OF make_signed_out IS


BEGIN
    make_signed_out : PROCESS (siggn, m)
        VARIABLE a_s : signed(13 DOWNTO 0);
        VARIABLE a_s_0 : signed(14 DOWNTO 0);
    BEGIN
        a_s := signed(resize(unsigned(m), 14));

        IF siggn /= '0' THEN
            a_s_0 :=  - (resize(a_s, 15));
            outp <= std_logic_vector(a_s_0(13 DOWNTO 0));
        ELSE
            outp <= std_logic_vector(a_s);
        END IF;

    END PROCESS make_signed_out;

END fsm_SFHDL;


Сообщение отредактировал Tue - Dec 8 2008, 08:28
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 8 2008, 18:57
Сообщение #13


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Спасибо за помощь smile.gif .


К сати в матлабе в тулсе фильтровом - нашёл как сделать чтоб всё в айс транслировалось хоть на верилоге хоть как таблица коэффициентов , жаль только что всё равно не работают . Я эти получившиеся фильтры на 160 Мгц - тактовой запустил , хотел фильтровать выход петли Костоса .

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


...если у кого мысли есть и просто что хотят уточнить - я всегда рад , даже пинкам smile.gif .


попробую по книжке фильтр сбацать ручками .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2008, 03:46
Сообщение #14


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

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



Цитата(Lmx2315 @ Dec 8 2008, 13:57) *
попробую по книжке фильтр сбацать ручками .


4 схемы построения FIR фильтров в атаче

Удачи!!!
Прикрепленные файлы
Прикрепленный файл  fir.zip ( 3.71 килобайт ) Кол-во скачиваний: 98
 


--------------------
Go to the top of the page
 
+Quote Post
Tue
сообщение Dec 9 2008, 07:06
Сообщение #15


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

Группа: Свой
Сообщений: 166
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Lmx2315, что конкретно у вас не работает ? Вы проверяли отдельно сгенеренный матлабом фильтр на работоспособность ? Про то, что на вход "clk_enable" надо подать "1" и в начале сбросить фильтр, подав на "reset" единицу хотя бы в течение одного периода сlk не забыли ?
Go to the top of the page
 
+Quote Post

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

 


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


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