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

Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!

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


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

Представьте себе, что такой вопрос (имеется в виду формулировка) задают вам. Как бы вы на него ответили?

Пытыался использовать Core Generator,но ничего толкового не получилось.
Телепаты в отпуске.

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


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

Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!

 

Читай datasheet на IP Core там все написано. Или как правильно заметили, поставьте коректно вопрос(ы).

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


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

Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Изменено пользователем Azatot

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


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

Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Вообще , как правило, Core Generator генерит тестовый проект в котором показано как вашей корой пользоваться в добавок там ещё скрипты для моделсима. А в папке DOC лежат PDFы почитайте их. Там расписано всё что нагенерили.

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


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

Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?Core Generator кучу файлов создает, я их и так и сяк крутил в ISE 9.1,но сконфигурировать файл для ПЛИС так и не получилось.

Запускайте core генератор непосредственно из своего проекта(new sourse -> ip core). Это облегчит в начале для вас понимание.

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


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

Прошу прощения за неточный вопрос. Как запихнуть получившийся проект в ПЛИС?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;

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


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

Всем огромное спасибо. Разобрался что к чему,оказалось,как всегда,все очень просто!

А теперь,уважаемые знатоки,еще один вопрос.Как пользоваться циклами в языке VHDL?

Организовал UART,гоню какие то байты на компьютер,и хочу,чтобы биты перебирались по циклу.Пишу,как в книжке показано или в хелпе ISE,но ничего не получается.С циклом вообще перестает что_либо работать!Как правильно сформировать цикл?

Изменено пользователем Azatot

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


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

С циклом вообще перестает что_либо работать!Как правильно сформировать цикл?

Цикл имеет в VHDL строго описательное значение.

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

 

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

 

Чтобы реализовать прием пакетов UART - создается сдвиговый регистр, в него загружается принятый байт, и по последнему биту складывается в FIFO. на другой стороне FIFO этот байт дешифрируется и выполняется та или иная команда автомата (FSM).

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


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

Цикл имеет в VHDL строго описательное значение.

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

 

Это кто это вам такое сказал?

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


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

Это кто это вам такое сказал?

А, в таком случае, как же правильно пользоваться циклами?

Вот, я, например пишу:

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;

А вместо ожидаемого результата херится вся схема и ничего не работает!

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


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

А вместо ожидаемого результата херится вся схема и ничего не работает!

 

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

 

 

 

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

 

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

 

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

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


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

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

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

 

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

 

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

Это просто пример, как я пытался использовать цикл. Он,пример,ничего не значит,просто от балды составлен. Хотелось бы примерно такой же пример,но с работающим циклом.

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


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

Это просто пример, как я пытался использовать цикл. Он,пример,ничего не значит,просто от балды составлен. Хотелось бы примерно такой же пример,но с работающим циклом.

 

Ищите на форуме, тема обсуждалась неоднократно, с примерами кода

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


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

Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен!

Есть очень хороший код для FFT бери книгу Секунов. и там есть исходник FFT без комплексной области.

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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