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

 
 
> Тестбенч FFT в Quartus8, Как запустить тестбенч fft в Q8?
Acvarif
сообщение Jan 13 2010, 14:29
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Откликнитесь please те кому приходилось симулировать мегафункцию fft в Q8.

Интересует последовательность действий как подключить fft_tb.vhd для симуляции.

Что я уже сделал:

1. В матлабе создал два текстовых файла для мнимой и действительной частей входных данных.
Правда не уверен в формате данных в этих текстовых файлах.
Если можно, подкиньте пожалуйста пример этих текстовых файлов для сравнения.
2. Перенес текстовые файлы в папку с откомпилированным проэктом мегафункции fft.

А дальше заклинило...

Подскажите пожалуйста что делать дальше.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novartis
сообщение Jan 24 2010, 17:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Добрый вечер, уже замучился разбираться с магафункцией fft, в quartus и vhdl новичок. Использую quartus 8.0 (нечистоплотный), пробовал запускать свой проект в Quartus 9.1 web-edition, результат аналогичный. Сгенерировал мегафункцию с параметрами 64 точки, 8 бит разрядность, Streaming.
Подаю на вход в родном симуляторе квартуса все необходимые сигналы, с выхода имеются сигналы начала кадра, конца кадра, валидности выходных данных, а сами данные нули. Пробовал и в симуляторе, и в железе (Cyclone III EP3C25F324C6, Cyclone III FPGA Starter Kit). В железе данные брал из встроенной памяти, которую инициализировал заранее подготовленным файлом .mif, выходные данные складывал в эту же память, потом просматривал это дело In System Memory Content Editor, на выходе все равно нули. Предполагаю, что всему виной мой кривой код:
Код
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;

entity tmp is
    generic
    (
        N : natural := 63
    );
    port
    (
        freq : in std_logic;
                
        xreal : in std_logic_vector (7 downto 0);
        ximag : in std_logic_vector (7 downto 0);

        sinks : out std_logic;
        sinke : out std_logic;
        sinkv : out std_logic;
        sinkr : out std_logic;
        
        sources : out std_logic;
        sourcee : out std_logic;
        sourcev : out std_logic;
        sourceerr : out    std_logic_vector (1 downto 0);
        sourceexpp    : out STD_LOGIC_VECTOR (5 DOWNTO 0);
        
        yreal : out std_logic_vector (7 downto 0);
        yimag : out std_logic_vector (7 downto 0);
        
        
        
        sstate : out std_logic_vector (1 downto 0);
        scount : out std_logic_vector (31 downto 0)
        
    );
end entity tmp;

architecture rtl of tmp is
    
component fft
    PORT (
        clk                : IN STD_LOGIC;
        reset_n            : IN STD_LOGIC;
        inverse            : IN STD_LOGIC;
        sink_valid        : IN STD_LOGIC;
        sink_sop        : IN STD_LOGIC;
        sink_eop        : IN STD_LOGIC;
        sink_real        : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
        sink_imag        : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
        sink_error        : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
        source_ready    : IN STD_LOGIC;
        sink_ready        : OUT STD_LOGIC;
        source_error    : OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
        source_sop        : OUT STD_LOGIC;
        source_eop        : OUT STD_LOGIC;
        source_valid    : OUT STD_LOGIC;
        source_exp        : OUT STD_LOGIC_VECTOR (5 DOWNTO 0);
        source_real        : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
        source_imag        : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
    );
end component;

type control_state is (init, stop, go, eop);

signal currentstate : control_state := init;

signal sinksop : std_logic; -- строб начала входного кадра
signal sinkeop : std_logic; -- строб конца входного кадра
signal sinkvalid : std_logic; -- сигнал верности входного кадра
signal sinkready : std_logic; -- сигнал готовности приема данных блоком БПФ

signal count : integer range 0 to N := N; -- счетчик

signal sourcesop    : std_logic; -- строб начала выходного кадра
signal sourceeop    : std_logic; -- строб конца выходного кадра
signal sourcevalid    : std_logic; -- сигнал верности выходного кадра
signal sourceerror    : std_logic_vector (1 downto 0); -- сигнал ошибки выходного кадра
signal sourceexp    : STD_LOGIC_VECTOR (5 DOWNTO 0); --

signal sinkreal, sinkimag, sourcereal, sourceimag : std_logic_vector (7 downto 0);

begin

sinks <= sinksop;
sinke <= sinkeop;
sinkv <= sinkvalid;
sinkr <= sinkready;
scount <= STD_LOGIC_VECTOR(TO_UNSIGNED(count,32));

sources <= sourcesop;
sourcee <= sourceeop;
sourcev <= sourcevalid;
sourceerr <= sourceerror;
sourceexpp <= sourceexp;

sinkreal <= xreal;
sinkimag <= ximag;

yreal <= sourcereal;
yimag <= sourceimag;

    process (freq)
    begin
    if (rising_edge(freq)) then
        case (currentstate) is
            when init => -- инициализация
                sinksop <= '0';
                sinkeop <= '0';
                sinkvalid <= '0';
                count <= 0;
                if (sinkready='1') then
                    currentstate <= go;
                else
                    currentstate <= init;
                end if;
                sstate <= "01";
            when go => -- работа
                sinkeop <= '0';
                if (count=0) then
                    sinksop <= '1'; -- если первый отчет, выставляем начало кадра
                    sinkvalid <= '1'; -- выставляем, что данные на входе верны
                else
                    sinksop <= '0'; -- если уже не первый отчет, снимаем строб начала кадра
                    sinkvalid <= '1'; -- данные на входе верны
                end if;
                if (count < N-1) then
                    currentstate <= go; -- обработаны еще не все отчеты
                    count <= count + 1;
                else
                    currentstate <= eop; -- обработаны N-1 отчет, переходим к обработке последнего отчета
                    count <= count + 1;
                end if;
                sstate <= "10";
            when eop => -- последний отсчет
                sinksop <= '0'; -- строб начала кадра обнулен
                sinkeop <= '1';     -- выставляем строб конца кадра
                sinkvalid <= '1'; -- данные на входе верны
                count <= 0;
                currentstate <= stop; -- останавливаем подачу данных на вход
                sstate <= "11";
            when stop => -- стоп
                -- данные на вход неподаются
                -- программа молотит сама по себе, а на выходе должны появиться выходные данные
                sinksop <= '0';
                sinkvalid <= '0';
                sinkeop <= '0';
                count <= 0;
                currentstate <= stop;
                sstate <= "00";
            end case;
    end if;
    end process;
    
    fft_inst : fft PORT MAP
    (
        clk                => freq,
        reset_n            => '1',
        inverse            => '0',
        sink_valid        => sinkvalid,
        sink_sop        => sinksop,
        sink_eop        => sinkeop,
        sink_real        => sinkreal,
        sink_imag        => sinkimag,
        sink_error        => "00",
        source_ready    => '1',
        sink_ready         => sinkready,
        source_error    => sourceerror,
        source_sop        => sourcesop,
        source_eop        => sourceeop,
        source_valid    => sourcevalid,
        source_exp        => sourceexp,        
        source_real        => sourcereal,
        source_imag        => sourceimag
    );
    
end rtl;


Вот циклограмма:
http://electronix.ru/forum/style_images/1/...e_types/gif.gif

Помогите разобраться. Заранее благодарен за любые ответы.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Acvarif   Тестбенч FFT в Quartus8   Jan 13 2010, 14:29
- - Builder   Цитата(Acvarif @ Jan 13 2010, 16:29) Инте...   Jan 13 2010, 16:03
|- - Acvarif   Цитата(Builder @ Jan 13 2010, 19:03) Я не...   Jan 14 2010, 08:15
|- - Builder   Цитата(Acvarif @ Jan 14 2010, 10:15) Неуж...   Jan 14 2010, 09:09
|- - Acvarif   Цитата(Builder @ Jan 14 2010, 12:09) Оста...   Jan 14 2010, 09:46
|- - Builder   Цитата(Acvarif @ Jan 14 2010, 11:46) На т...   Jan 14 2010, 15:29
|- - Acvarif   Цитата(Builder @ Jan 14 2010, 19:29) Стра...   Jan 15 2010, 07:24
- - IL-76   Поставьте Modelsim Altera Starter Edition. Он бесп...   Jan 14 2010, 09:56
- - Prusak   Цитата(Acvarif @ Jan 13 2010, 17:29) Откл...   Jan 15 2010, 08:59
|- - Acvarif   Цитата(Prusak @ Jan 15 2010, 12:59) Удало...   Jan 15 2010, 09:25
- - Prusak   Цитата(Acvarif @ Jan 15 2010, 12:25) Пока...   Jan 15 2010, 09:45
|- - Acvarif   Цитата(Prusak @ Jan 15 2010, 13:45) Это о...   Jan 15 2010, 11:28
|- - Builder   Цитата(Acvarif @ Jan 15 2010, 13:28) Mode...   Jan 15 2010, 11:53
|- - Acvarif   Цитата(Builder @ Jan 15 2010, 15:53) А чт...   Jan 15 2010, 12:42
|- - Acvarif   Цитата(Acvarif @ Jan 15 2010, 16:42) Моде...   Jan 15 2010, 14:02
|- - Stewart Little   Цитата(Acvarif @ Jan 15 2010, 17:02) Посо...   Jan 15 2010, 15:06
|- - Acvarif   Надеюсь все же добить симуляцию fft. Буду пробоват...   Jan 15 2010, 17:10
|- - Acvarif   Помогите пожалуйста правильно составить скрипт для...   Jan 16 2010, 08:35
|- - Prusak   Цитата(Acvarif @ Jan 16 2010, 11:35) Врод...   Jan 16 2010, 19:17
|- - Acvarif   Цитата(Prusak @ Jan 16 2010, 23:17) Вот, ...   Jan 18 2010, 08:14
|- - Prusak   Цитата(Acvarif @ Jan 18 2010, 11:14) Спас...   Jan 18 2010, 08:52
|- - Acvarif   Цитата(Prusak @ Jan 18 2010, 12:52) На вх...   Jan 18 2010, 09:19
|- - Prusak   Цитата(Acvarif @ Jan 18 2010, 12:19) Если...   Jan 18 2010, 10:05
|- - Acvarif   Спасибо. Смысл понятен. Пропустил через симулятор...   Jan 18 2010, 13:17
|- - Acvarif   Вобщем после немного подумать пришол к выводу: Ме...   Jan 22 2010, 06:50
|- - Prusak   Цитата(Acvarif @ Jan 22 2010, 09:50) Вобщ...   Feb 2 2010, 07:38
|- - novartis   Цитата(Prusak @ Feb 2 2010, 10:38) novart...   Feb 3 2010, 15:58
- - Prusak   Цитата(Acvarif @ Jan 15 2010, 14:28) Mode...   Jan 15 2010, 12:06


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

 


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


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