Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IP Core Generator Xilinx
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Azatot
Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!
andrew_b
Представьте себе, что такой вопрос (имеется в виду формулировка) задают вам. Как бы вы на него ответили?
Цитата
Пытыался использовать Core Generator,но ничего толкового не получилось.
Телепаты в отпуске.
Maverick
Цитата(Azatot @ Nov 25 2008, 22:08) *
Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!


Читай datasheet на IP Core там все написано. Или как правильно заметили, поставьте коректно вопрос(ы).
Azatot
Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.
tolik1
Цитата(Azatot @ Nov 26 2008, 20:26) *
Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Вообще , как правило, Core Generator генерит тестовый проект в котором показано как вашей корой пользоваться в добавок там ещё скрипты для моделсима. А в папке DOC лежат PDFы почитайте их. Там расписано всё что нагенерили.
KostyanPro
Цитата(Azatot @ Nov 26 2008, 19:26) *
Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Запускайте core генератор непосредственно из своего проекта(new sourse -> ip core). Это облегчит в начале для вас понимание.
Maverick
Цитата(Azatot @ Nov 26 2008, 21:26) *
Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Примено так (вставка корки фифо) для языка VHDL:
Код

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
entity window_2x2 is
generic ( vwidth: integer:=12 );
port (
Clk : in std_logic;
RSTn : in std_logic;
D : in std_logic_vector(vwidth-1 downto 0);
w1 : out std_logic_vector(vwidth -1 downto 0);
w2 : out std_logic_vector(vwidth -1 downto 0);
w3 : out std_logic_vector(vwidth -1 downto 0)  );
end window_2x2;
architecture window of window_2x2 is
component fifo1024x12
    port (
    din: IN std_logic_VECTOR(11 downto 0);
    wr_en: IN std_logic;
    wr_clk: IN std_logic;
    rd_en: IN std_logic;
    rd_clk: IN std_logic;
    ainit: IN std_logic;
    dout: OUT std_logic_VECTOR(11 downto 0);
    full: OUT std_logic;
    empty: OUT std_logic;
    wr_count: OUT std_logic_VECTOR(9 downto 0));
end component;

component fifo4096x12
    port (
    din: IN std_logic_VECTOR(11 downto 0);
    wr_en: IN std_logic;
    wr_clk: IN std_logic;
    rd_en: IN std_logic;
    rd_clk: IN std_logic;
    ainit: IN std_logic;
    dout: OUT std_logic_VECTOR(11 downto 0);
    full: OUT std_logic;
    empty: OUT std_logic;
    wr_count: OUT std_logic_VECTOR(11 downto 0));
end component;

-- FPGA Express Black Box declaration
--attribute fpga_dont_touch: string;
--attribute fpga_dont_touch of fifo1024x14: component is "true";

-- Synplicity black box declaration
--attribute syn_black_box : boolean;
--attribute syn_black_box of fifo1024x14: component is true;
signal a1 : std_logic_vector(vwidth-1 downto 0);
signal a2 : std_logic_vector(vwidth-1 downto 0);
signal a3 : std_logic_vector(vwidth-1 downto 0);

--fifo1 signals
signal clear1 : std_logic;
signal wrreq1 : std_logic:='1';
signal rdreq1 : std_logic:='0';
signal ofull1 : std_logic;
signal oempty1 : std_logic;
signal ofifo1 : std_logic_vector(vwidth-1 downto 0);
signal ousedw1 : std_logic_vector(9 downto 0);

--fifo2 signals
signal rdreq2 : std_logic:='0';
signal ofull2 : std_logic;
signal oempty2 : std_logic;
signal ofifo2 : std_logic_vector(vwidth-1 downto 0);
signal ousedw2 : std_logic_vector(11 downto 0);


--signal ousedwa_temp: integer:=0;
--signal ousedwb_temp: integer:=0;
begin
fifo1: fifo1024x12
port map (
din => a1,
wr_en => wrreq1,
wr_clk => Clk,
rd_en => rdreq1,
rd_clk => Clk,
ainit => clear1,
dout => ofifo1,
full => ofull1,
empty => oempty1,
wr_count => ousedw1 );

fifo2: fifo4096x12
port map (
din => a2,
wr_en => wrreq1,
wr_clk => Clk,
rd_en => rdreq2,
rd_clk => Clk,
ainit => clear1,
dout => ofifo2,
full => ofull2,
empty => oempty2,
wr_count => ousedw2 );

clear1 <= not(RSTn);


clock: process(Clk,RSTn)
begin
if RSTn = '0' then
a1 <= (others=>'0');
a2 <= (others=>'0');
a3 <= (others=>'0');

w1 <= (others=>'0');
w2 <= (others=>'0');
w3 <= (others=>'0');


wrreq1 <= '0';

elsif rising_edge(Clk) then
a1 <= D;
a2 <= ofifo1;
a3 <= ofifo2;

w1 <= a1;
w2 <= a2;
w3 <= a3;

wrreq1 <= '1';

end if;
end process;

req: process(Clk)
begin
if rising_edge(Clk) then
if ousedw1 = "1111101000" then
rdreq1 <= '1';
end if;
if ousedw2 = "111110110110" then
rdreq2 <= '1';
end if;

end if;

end process;

end window;
Azatot
Всем огромное спасибо. Разобрался что к чему,оказалось,как всегда,все очень просто!
А теперь,уважаемые знатоки,еще один вопрос.Как пользоваться циклами в языке VHDL?
Организовал UART,гоню какие то байты на компьютер,и хочу,чтобы биты перебирались по циклу.Пишу,как в книжке показано или в хелпе ISE,но ничего не получается.С циклом вообще перестает что_либо работать!Как правильно сформировать цикл?
SFx
Цитата(Azatot @ Nov 27 2008, 20:41) *
С циклом вообще перестает что_либо работать!Как правильно сформировать цикл?

Цикл имеет в VHDL строго описательное значение.
Его допустимо использовать только для моделирования и для размножения сигналов в исходнике.

Забудьте про программирование, если пишете на HDL! 1111493779.gif

Чтобы реализовать прием пакетов UART - создается сдвиговый регистр, в него загружается принятый байт, и по последнему биту складывается в FIFO. на другой стороне FIFO этот байт дешифрируется и выполняется та или иная команда автомата (FSM).
Михаил_K
Цитата(SFx @ Nov 27 2008, 21:36) *
Цикл имеет в VHDL строго описательное значение.
Его допустимо использовать только для моделирования и для размножения сигналов в исходнике.


Это кто это вам такое сказал?
Azatot
Цитата(Михаил_K @ Nov 28 2008, 09:20) *
Это кто это вам такое сказал?

А, в таком случае, как же правильно пользоваться циклами?
Вот, я, например пишу:
process(clk)
variable i:integer range 0 to 10;
variable count:integer;
if(clk'event and clk='1')then
while( i<10 )loop
fft_out<=conv_std_logic_vector(count(i),8);
i:=i+1;
end loop;
end if;
end process;
А вместо ожидаемого результата херится вся схема и ничего не работает!
des00
Цитата(Azatot @ Dec 4 2008, 13:13) *
А вместо ожидаемого результата херится вся схема и ничего не работает!


дали девочке 2 яблока, потом дали еще одно. Вопрос : сколько у девочки яблок ?



ЗЫ. Ответ а сколько у нее было изначально ? Вывод : всегда инициализируйте свои переменные!! (с) Библия программиста

ЗЗЫ. А count то у вас чему равен ?

ЗЗЗЫ И что вы вообще хотели сделать своей логикой ?
Azatot
Цитата(des00 @ Dec 5 2008, 08:02) *
дали девочке 2 яблока, потом дали еще одно. Вопрос : сколько у девочки яблок ?
ЗЫ. Ответ а сколько у нее было изначально ? Вывод : всегда инициализируйте свои переменные!! (с) Библия программиста

ЗЗЫ. А count то у вас чему равен ?

ЗЗЗЫ И что вы вообще хотели сделать своей логикой ?

Это просто пример, как я пытался использовать цикл. Он,пример,ничего не значит,просто от балды составлен. Хотелось бы примерно такой же пример,но с работающим циклом.
des00
Цитата(Azatot @ Dec 7 2008, 14:51) *
Это просто пример, как я пытался использовать цикл. Он,пример,ничего не значит,просто от балды составлен. Хотелось бы примерно такой же пример,но с работающим циклом.


Ищите на форуме, тема обсуждалась неоднократно, с примерами кода
nicks80
Цитата(Azatot @ Nov 25 2008, 21:08) *
Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!

Есть очень хороший код для FFT бери книгу Секунов. и там есть исходник FFT без комплексной области.
очень мало кол-во умножений. Везде использую. даже синус генерю тейлором. и таблица перестановок с пред вычислением. я его когда-то портировал под целочисленное.
Victor®
Цитата(nicks80 @ Dec 11 2008, 19:19) *
Есть очень хороший код для FFT бери книгу Секунов. и там есть исходник FFT без комплексной области.
очень мало кол-во умножений. Везде использую. даже синус генерю тейлором. и таблица перестановок с пред вычислением. я его когда-то портировал под целочисленное.


А что за книга? Где поискать?
nicks80
Цитата(Victor® @ Dec 12 2008, 11:17) *
А что за книга? Где поискать?


Книги / Н. Секунов - Обработка звука на РС

Есть класс с ффт.
я его переделал на целочисленное.
Azatot
Цитата(nicks80 @ Dec 12 2008, 20:18) *
Книги / Н. Секунов - Обработка звука на РС

Есть класс с ффт.
я его переделал на целочисленное.

Спасибо за совет. А может поделишся исходниками уже под целочисленные данные? smile.gif
Azatot
Хочу задать еще один вопрос. Может кто-нибудь объяснить как пользоваться fft ядром, сформированным IP Core generator'ом? Прочитал datasheet на него, вроде все сделал, согласно временным диаграммам, ядро работает, но не правильно- результаты не соответствуют правильным. Есть ли кто -нибудь, кто пользовался этим ядром и может объяснить что к чему, а еще лучше -выложить код на VHDL, где ядро используется? Был бы безмерно благодарен!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.