|
IP Core Generator Xilinx |
|
|
|
Nov 26 2008, 06:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Представьте себе, что такой вопрос (имеется в виду формулировка) задают вам. Как бы вы на него ответили? Цитата Пытыался использовать Core Generator,но ничего толкового не получилось. Телепаты в отпуске.
|
|
|
|
|
Nov 26 2008, 08:05
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(Azatot @ Nov 25 2008, 22:08)  Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен! Читай datasheet на IP Core там все написано. Или как правильно заметили, поставьте коректно вопрос(ы).
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Nov 27 2008, 07:32
|
Частый гость
 
Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016

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

Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 30-01-07
Из: Minsk
Пользователь №: 24 870

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

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(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;
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Nov 27 2008, 17:41
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 31-01-08
Из: Москва
Пользователь №: 34 633

|
Всем огромное спасибо. Разобрался что к чему,оказалось,как всегда,все очень просто! А теперь,уважаемые знатоки,еще один вопрос.Как пользоваться циклами в языке VHDL? Организовал UART,гоню какие то байты на компьютер,и хочу,чтобы биты перебирались по циклу.Пишу,как в книжке показано или в хелпе ISE,но ничего не получается.С циклом вообще перестает что_либо работать!Как правильно сформировать цикл?
Сообщение отредактировал Azatot - Nov 27 2008, 17:42
|
|
|
|
|
Nov 27 2008, 18:36
|
Знающий
   
Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688

|
Цитата(Azatot @ Nov 27 2008, 20:41)  С циклом вообще перестает что_либо работать!Как правильно сформировать цикл? Цикл имеет в VHDL строго описательное значение.Его допустимо использовать только для моделирования и для размножения сигналов в исходнике. Забудьте про программирование, если пишете на HDL! Чтобы реализовать прием пакетов UART - создается сдвиговый регистр, в него загружается принятый байт, и по последнему биту складывается в FIFO. на другой стороне FIFO этот байт дешифрируется и выполняется та или иная команда автомата (FSM).
|
|
|
|
|
Dec 4 2008, 18:13
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 31-01-08
Из: Москва
Пользователь №: 34 633

|
Цитата(Михаил_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; А вместо ожидаемого результата херится вся схема и ничего не работает!
|
|
|
|
|
Dec 5 2008, 04:02
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Azatot @ Dec 4 2008, 13:13)  А вместо ожидаемого результата херится вся схема и ничего не работает! дали девочке 2 яблока, потом дали еще одно. Вопрос : сколько у девочки яблок ? ЗЫ. Ответ а сколько у нее было изначально ? Вывод : всегда инициализируйте свои переменные!! (с) Библия программиста ЗЗЫ. А count то у вас чему равен ? ЗЗЗЫ И что вы вообще хотели сделать своей логикой ?
--------------------
|
|
|
|
|
Dec 7 2008, 19:51
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 31-01-08
Из: Москва
Пользователь №: 34 633

|
Цитата(des00 @ Dec 5 2008, 08:02)  дали девочке 2 яблока, потом дали еще одно. Вопрос : сколько у девочки яблок ? ЗЫ. Ответ а сколько у нее было изначально ? Вывод : всегда инициализируйте свои переменные!! (с) Библия программиста
ЗЗЫ. А count то у вас чему равен ?
ЗЗЗЫ И что вы вообще хотели сделать своей логикой ? Это просто пример, как я пытался использовать цикл. Он,пример,ничего не значит,просто от балды составлен. Хотелось бы примерно такой же пример,но с работающим циклом.
|
|
|
|
|
Dec 11 2008, 15:19
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485

|
Цитата(Azatot @ Nov 25 2008, 21:08)  Здравствуйте,есть задача:получить на вход ПЛИС Xilinx какие-то сигналы,провести их обработку, а затем сотворить быстрое преобразование Фурье на 1024 точки. Как быть с преобразованием?Пытыался использовать Core Generator,но ничего толкового не получилось.Может кто-нибудь подскажет как правильно пользоваться Core Generator'ом или другой вариант?Заранее благодарен! Есть очень хороший код для FFT бери книгу Секунов. и там есть исходник FFT без комплексной области. очень мало кол-во умножений. Везде использую. даже синус генерю тейлором. и таблица перестановок с пред вычислением. я его когда-то портировал под целочисленное.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|