|
Тестбенч FFT в Quartus8, Как запустить тестбенч fft в Q8? |
|
|
|
Jan 14 2010, 08:15
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Builder @ Jan 13 2010, 19:03)  Я не делал этого, но название fft_tb.vhd говорит о том, что в квартусе вы это не отсимуляете, Active-HDL или ModelSim (что ближе) Вам в руки. Неужели симулятор Q не может работать с тестбенчами vhd? В Xilinx тестбенч vhd работает проямо в среде. В хелпе Q8 действительно речь идет об экспорте ваеформ в EDA tol... Что такое EDA? Если это действительно так, то буду признателен за лекарство для Modelsim 6.1g который у меня установился вместе с Q8 или любой другой (может подойдет). Спасибо.
|
|
|
|
|
Jan 14 2010, 09:09
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(Acvarif @ Jan 14 2010, 10:15)  Неужели симулятор Q не может работать с тестбенчами vhd? В Xilinx тестбенч vhd работает проямо в среде. В хелпе Q8 действительно речь идет об экспорте ваеформ в EDA tol... Что такое EDA?
Если это действительно так, то буду признателен за лекарство для Modelsim 6.1g который у меня установился вместе с Q8 или любой другой (может подойдет).
Спасибо. Так уж сложилось, что альтера не делала полноценный симулятор для тест бенчей, только симулятор того, что в самой микрухе. IMHO, учитывая что есть в комплекте ModelSim, не велика потеря. EDA tol... - имеется ввиду собственно внешние проги. Остальное - есть на ФТП и на торрентах. IMHO: Active-HDL легче осваивать и использовать, а MidelSim мощнее в наворотах симулятора и поддержке новых стандартов. Сам использую и то и другое. Поищите в поиском, несколько раз на форуме сравнивали.
Сообщение отредактировал Builder - Jan 14 2010, 09:28
|
|
|
|
|
Jan 14 2010, 09:46
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Builder @ Jan 14 2010, 12:09)  Остальное - есть на ФТП и на торрентах. На торренте есть. Но вот правильного лекарства для Модельсима почему то найти не удается. Не запускается он и все... Буду признателен за лекарство хоть для какого нибудь Модельсима.
|
|
|
|
|
Jan 15 2010, 07:24
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Builder @ Jan 14 2010, 19:29)  Странно, может Вы неправильно его постаавили? Куда кидать, брошу то, чем сам пользуюсь. ygusin@gmail.com Пытался запустить 6.1g Altera. Не принимает лицензию. Затем ставил 6.5 от Ментора в надежде на то, что потом подключу альтеровские библиотеки. То же самое - не принимает лицензию. При установке последнего он спрашивал о установке какого то драйвера и ключа (там еще были 3 чекбокса с птичками). Я дал отмену. Может не стоило? Буду признателен за правильное лекарство и совет как правильнол все установить. Спасибо.
|
|
|
|
|
Jan 15 2010, 08:59
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 13 2010, 17:29)  Откликнитесь please те кому приходилось симулировать мегафункцию fft в Q8.
Интересует последовательность действий как подключить fft_tb.vhd для симуляции. Ага, симулировал. Все симулруется на ура. Цитата(Acvarif @ Jan 13 2010, 17:29)  Что я уже сделал:
1. В матлабе создал два текстовых файла для мнимой и действительной частей входных данных. Правда не уверен в формате данных в этих текстовых файлах. Если можно, подкиньте пожалуйста пример этих текстовых файлов для сравнения. Визард мегафункции сам создает файлы с входными данными, называются real_input.txt и imag_input.txt, должны быть в папке с проектом. Там и формат посмотрите - целые числа, соответствующие разрядности входных данных. Цитата(Acvarif @ Jan 13 2010, 17:29)  2. Перенес текстовые файлы в папку с откомпилированным проэктом мегафункции fft.
А дальше заклинило...
Подскажите пожалуйста что делать дальше. Итак, вы хотите подать данные из текстовых файлов на вход корки БПФ и посмотреть результат на выходе. И все это в ModelSim я правильно понимаю?? Цитата(Acvarif @ Jan 15 2010, 10:24)  ygusin@gmail.com
Пытался запустить 6.1g Altera. Не принимает лицензию. Затем ставил 6.5 от Ментора в надежде на то, что потом подключу альтеровские библиотеки. То же самое - не принимает лицензию. При установке последнего он спрашивал о установке какого то драйвера и ключа (там еще были 3 чекбокса с птичками). Я дал отмену. Может не стоило?
Буду признателен за правильное лекарство и совет как правильнол все установить.
Спасибо. Удалось поставить ModelSim??
|
|
|
|
|
Jan 15 2010, 09:25
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Prusak @ Jan 15 2010, 12:59)  Удалось поставить ModelSim?? Спасибо, что откликнулись. ModelSim пока не удалось. Но буду пытаться запустить. Основной вопрос!! Пока до конца не понял, неужели для симуляции fft в Q8 нужен ModelSim? По документации получается, что нужен, поскольку мегафункция создает .vhd тест бенч файл в котором какраз и читаются текстовые файлы мнимой и действительной частей входных данных. А тест бенч .vhd я так понял может запуститься только в ModelSim. Цитата Визард мегафункции сам создает файлы с входными данными, называются real_input.txt и imag_input.txt, должны быть в папке с проектом. Там и формат посмотрите - целые числа, соответствующие разрядности входных данных У меня почему то эти файлы визард не создал. Может настроил его не так? Вобщем пришлось их создать в Матлабе и поместить в папку с проектом. Попытаюсь запустить ModelSim. Дальше, если можно, опять к Вам за помощью.
|
|
|
|
|
Jan 15 2010, 09:45
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 15 2010, 12:25)  Пока до конца не понял, неужели для симуляции fft в Q8 нужен ModelSim? По документации получается, что нужен, поскольку мегафункция создает .vhd тест бенч файл в котором какраз и читаются текстовые файлы мнимой и действительной частей входных данных. А тест бенч .vhd я так понял может запуститься только в ModelSim. Если до этого вы обходились симулятором, встроенным в Квартус, то, видимо, пришла пора осваивать более продвинутые системы моделирования. Можно ли в Квартусе запускать тестбенчи я не знаю, никогда им не пользовался. Цитата(Acvarif @ Jan 15 2010, 12:25)  У меня почему то эти файлы визард не создал. Может настроил его не так? Вобщем пришлось их создать в Матлабе и поместить в папку с проектом. Это очень странно, а в отчете о созданных файлах они есть?? Надо бы разобраться, а то может он корку не сгенерировал.
|
|
|
|
|
Jan 15 2010, 12:06
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 15 2010, 14:28)  Model Sim запустил. Теперь запущу по новой мегафункцию. Посмотрю какие файлы она создает. Отлично. До успешного результата осталось немного. Ладно я тут опишу как я моделился. 1. Надо подключить библиотеки от альтеры, если их еще нет (altera,altera_mf,lpm,sgate). Для этого заходим в Квартусе по адресу Tools->Launch EDA Simulator library compiler. Там выбираем среду - Modelsim, семейство ПЛИСа, языки VHDL,verilog и выходную папку. Можно скомпилировать их в папку с ModelSim, и далее прописать их в файле modelsim.ini, чтобы они всегда подгружались при запуске. 2. Написать нехитрый скрипт для компиляции и запуска FFT корки. Назвать его например fft.do Пути к файлам прописать свои естественно. Потом можно будет все это получше автоматизировать, но для того, чтобы посмотреть работу кора хватит. Код ## Компиляция vcom -work work -93 -explicit -quiet -source -O0 -cover s -novopt D:/altera/work/fft/fft_tb.vhd vcom -work work -93 -explicit -quiet -source -O0 -cover s -novopt D:/altera/work/fft/fft.vho
## Запуск проекта на моделирование vsim -t 1ps -title FFT work.fft_tb ## view wave Сама модель корки для функционального моделирования в файле fft.vho, в тестбенче ее entity уже подключен. Поэтому больше ничего делать не надо. 3. Запустить моделсим и перейти в папку с проектом с помощью команды cd <путь к проекту> 4. Запустить скипт командой do fft.do Все должно скомпилироваться, останется нажать только кнопку run -all и любовать результатом.
|
|
|
|
|
Jan 15 2010, 12:42
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Builder @ Jan 15 2010, 15:53)  А что было? Сделали как было по ссылке, которую в личку бросал? Большое спасибо. Хорошая ссылка. Надеюсь запустить МS 6.5 На данный момент получилось запустиь MS от Альтеры (который 6.1 под Q8). Прогнал по новой мегафункцию (он действительно создал текстовые файлы мнимой и действительной частей входных данных), в качестве симулятора указал внешний Модель Сим. Запустил еще раз компилер, который в свою очередь после завершения запустил Модель сим (он по моему запустился скриптом созданным самой коркой). Модель Сим загрузил необходимые библиотеки, что-то откомпилировал и сейчас крутится...Жду результат...
|
|
|
|
|
Jan 15 2010, 14:02
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Acvarif @ Jan 15 2010, 16:42)  Модель Сим загрузил необходимые библиотеки, что-то откомпилировал и сейчас крутится...Жду результат... Не получается. Вот что происходит в Q8 Info: Running Quartus II EDA Netlist Writer Info: Command: quartus_eda --read_settings_files=off --write_settings_files=off fft -c fft Info: Generated files "fft.vho" and "fft_vhd.sdo" in directory "D:/Altera/Quartus80/quartus/test/" for EDA simulation tool Info: Quartus II EDA Netlist Writer was successful. 0 errors, 0 warnings Info: Running Quartus II Shell Info: Command: quartus_sh -t d:/altera/quartus80/quartus/common/tcl/internal/nativelink/qnativesim.tcl fft fft Info: Quartus(args): fft fft Info: Start Nativelink Simulation process Info: Starting NativeLink simulation with ModelSim-Altera software Info: Generated ModelSim script file D:/Altera/Quartus80/quartus/test/fft_run_msim_gate_vhdl.do На этом все застряло. Посмотел, что Модель Сим создал файл (в другой директории) D:\Altera\Quartus80\quartus\test\simulation\modelsim\fft_run_msim_gate_vhdl.do Его содержимое: transcript on if {[file exists gate_work]} { vdel -lib gate_work -all } vlib gate_work vmap work gate_work vcom -93 -work work {fft.vho} Пробую как Вы советовали через Модель Сим (через скрипт fft.do, который разместил в папке проекта) Пока запустить его не получается. Команду перехода (cd D:\Altera\Quartus80\quartus\test\) на директорию где он находится Model Sim выполняет. А на команде do fft.do выдает ошибку. Посоветуйте пожалуйста как быть
|
|
|
|
|
Jan 15 2010, 15:06
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Acvarif @ Jan 15 2010, 17:02)  Посоветуйте пожалуйста как быть А попробуйте не использовать NativeLink, если опыта маловато (т.е. не запускайте ModelSim из-под квартуса). Запустите ModelSim отдельно и скормите ему результаты работы квартусовского нетлист райтера (они в папке <имя_проекта>_sim, если мне склероз не изменяет, находятся - там и vho, и тестбенч, и скрипты). Отокмпилируйте hdl-файлы в соответствии с иерархией, потом запускайте моделирование. Даже если не сразу получится, то так быстрее разберетесь, имхо.
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jan 16 2010, 08:35
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Помогите пожалуйста правильно составить скрипт для симуляции по Model Sim Altera Скрипт: Код ## Компиляция vcom -work work -93 -explicit -quiet -source -O0 -cover s -novopt D:/altera/work/fft/fft_tb.vhd vcom -work work -93 -explicit -quiet -source -O0 -cover s -novopt D:/altera/work/fft/fft.vho
## Запуск проекта на моделирование vsim -t 1ps -title FFT work.fft_tb ## view wave ругается на -cover s -novopt Попробовал сделать так: Код ## Компиляция vcom -93 -work work {D:/altera/work/fft/fft_tb.vhd} vcom -93 -work work {D:/altera/work/fft/fft.vho}
## Запуск проекта на моделирование vsim -t 1ps -title FFT work.fft_tb ## view wave Вроде откомпилировалось все без предупреждений и появилась пустая диаграмма и сигналы. Далее при нажатии на "run All" запустились проходы с кучей варнингсов...все остановилось но результат не высветился (диаграмма так и осталась пустая)
|
|
|
|
|
Jan 16 2010, 19:17
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 16 2010, 11:35)  Вроде откомпилировалось все без предупреждений и появилась пустая диаграмма и сигналы. Далее при нажатии на "run All" запустились проходы с кучей варнингсов...все остановилось но результат не высветился (диаграмма так и осталась пустая) Вот, все так и должно быть. А на диаграмме ничего нет, потому что вы не добавили в нее сигналы из проекта. Попробуйте так: перед нажатием run -all в консоли написать add wave /fft/* или перенести мышкой из левой части, где список сигналов и процессов. Моделсима нет под рукой, не помню как окно называется...
|
|
|
|
|
Jan 18 2010, 08:14
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Prusak @ Jan 16 2010, 23:17)  Вот, все так и должно быть. А на диаграмме ничего нет, потому что вы не добавили в нее сигналы из проекта. Попробуйте так: перед нажатием run -all в консоли написать add wave /fft/* или перенести мышкой из левой части, где список сигналов и процессов. Моделсима нет под рукой, не помню как окно называется... Спасибо. Все!!! Диаграмма получилась. Теперь, как предлагает толмуд по Мегафункции необходимо проделать то же но в Матлабе, который создаст те же выходные файлы мнимой и действительной частей + файл експоненты. И я так понял, что после этого можно сравнить то, что создано Модель симом и Матлабом. Оно должно быть одинаково. Поскольку по умолчанию входные данные мегафункция создает на базе случайного процесса, то мне ради еще одной проверки придется входные файлы мнимой и действительной частей попробовать сделать на базе гармонической функции. Далее все отсимулировать и увидеть одну гармонику. Чем сейчас и займусь.. Еще вопрос: Как эта мегафункция роаботает непосредственно в железе? Был ли у Вас опыт? Нет ли там каких-то проблем?
|
|
|
|
|
Jan 18 2010, 08:52
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 18 2010, 11:14)  Спасибо. Все!!! Диаграмма получилась. Поздравляю :-) Цитата(Acvarif @ Jan 18 2010, 11:14)  Еще вопрос: Как эта мегафункция роаботает непосредственно в железе? Был ли у Вас опыт? Нет ли там каких-то проблем? Да, я столкнулся с проблемами и тоже хочу здесь спросить у имевших опыт общения с этой коркой форумчан: Архитектура FFT: Burst, Quad output Число точек N =512 Разрядность данных : 14 На вход input_real подаю синусойду. На вход input_imag подаю 0. Получаю спектр сигнала на выходе и сразу подаю его на обратное преобразование IFFT, в качестве которой вторая корка FFT, с теми же параметрами, только, вывод inverse=1. И вижу что на выходе IFFT есть данные и на выходе real и image, т.е сигнал стал комплексным!! И даже после взятия модуля такого комплексного числа синусойда на выходе - сильно искажена. Начинаю разбираться и ахаю. Спектр на выходе FFT оказывается несимметричный (а при реальном сигнале на входе - он всегда должен быть симметричным)!!! Нет, он конечно похож, но конкретные числа немного отличаются. Пробовал увеличить разрядность данных до 16, игрался с параметром twiddle precision, пробовал архитектуры buffered burst, ничего не помогало. Сейчас подозреваю, что проблема в округлении. В даташите написано что в архитектуре variable streamming применен более продвинутый блок floating point, но опробывать эту архитектуру не успел. Выкрутился тем, что взял тупо первую половину спектра (1-N/2 отсчетов) и зеркально отобразил, и скопировал на место второй части (N/2-N отсчеты), конечно так не совсем честно, и для комплекс. сигнала не покатит, но в моем случае свою синусойду обратно я получил и без комплексного сигнала на выходе, на чем пока и успокоился.
|
|
|
|
|
Jan 18 2010, 09:19
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Prusak @ Jan 18 2010, 12:52)  На вход input_real подаю синусойду. На вход input_imag подаю 0. Если можно подскажите пожалуйста как теперь создать текстовые файлы (входные) для мнимой и действительной частей гармонического сигнала (ведь сам визард по умолчанию их создает для случайного процесса). Там еще предлагается (его тоже создает визард) какой то матлабовский файл в котором вроде можно заменить x = .. на гармонический. Но запуск его в матлабе ничего не дает.
|
|
|
|
|
Jan 18 2010, 10:05
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 18 2010, 12:19)  Если можно подскажите пожалуйста как теперь создать текстовые файлы (входные) для мнимой и действительной частей гармонического сигнала (ведь сам визард по умолчанию их создает для случайного процесса). Там еще предлагается (его тоже создает визард) какой то матлабовский файл в котором вроде можно заменить x = .. на гармонический. Но запуск его в матлабе ничего не дает. Я подавал только действительный сигнал, код следующий: Код Fs = 40e6; % Частота дискретизации, Гц Td = 1/Fs; % период дискретизации сигнала Tend = 1e-1; % Конечное время наблюдения. t=0:Td:Tend; Fif = 1e6; % Частота синусойды, Гц A = 2^12; % Амлитуда синусойды Ns=32000; % Число сэмплов для записи в файл
%Генерируем Синус S = A*sin(2*pi*Fif*t);
% Открываем выходной файл на запись f1 = fopen('C:\sin_out.txt','w');
% Выводим данные в файл for i=1:Ns str_tmp = int2str(S(i)); % Преобразуем целое десятичное число в строку fprintf(f1, '%s \n', str_tmp); % Записываем ее в файл end; fclose(f1);
|
|
|
|
|
Jan 24 2010, 17:47
|

Местный
  
Группа: Свой
Сообщений: 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Помогите разобраться. Заранее благодарен за любые ответы.
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 2 2010, 07:38
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(Acvarif @ Jan 22 2010, 09:50)  Вобщем после немного подумать пришол к выводу:
Мегафункция в своей работе выполняет операции не в плавающем формате. Поэтому очевидно и такие неточности. Если пропустить то же в Матлабе то четко получается одна гармоника потому, что Матлаб работает в операционной среде которая в свою очередь все делает в плавающем формате - отсюда и соответствующая точность. Для того, чтобы в ПЛИС обеспечить высокую точность необходим вычислитель (умножение, суммирование) с плавающей точкой. По информации из даташита на FFT кору архитектуры burst, buffered burst, streaming содержат альтеровское изобретение block floating point (BFP): Цитата To maintain a high signal-to-noise ratio throughout the transform computation, the FFT MegaCore function uses a block-floating-point architecture, which is a trade-off point between fixed-point and full-floating point architectures. In a block-floating point architecture, all of the values have an independent mantissa but share a common exponent in each data block. Data is input to the FFT function as fixed point complex numbers (even though the exponent is effectively 0, you do not enter an exponent). Т.е в BFP для каждого числа используется своя мантисса, но общий порядок числа (экспонента), в отличии от настоящего числа с плавающей запятой, где у каждого числа своя мантисса и экспонента. Полная реализация floating point чисел реализована в архитектуре variable streaming. Где используются 32-битные числа с плавающей запятой. Но опробовать эту архитектуру не дошли руки. У меня синусойда на выходе получалась нормальная (соответствующая матлабу), просто спектр был несимметричный и это все портило. novartisМожет быть проблема с входным сигналом. У вас экспонента source_exp равна 1, посмотрел в даташите на кору - это минимальное значение для корки с вашими параметрами. Попробуйте увеличить уровень входного сигнала.
|
|
|
|
|
Feb 3 2010, 15:58
|

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

|
Цитата(Prusak @ Feb 2 2010, 10:38)  novartis Может быть проблема с входным сигналом. У вас экспонента source_exp равна 1, посмотрел в даташите на кору - это минимальное значение для корки с вашими параметрами. Попробуйте увеличить уровень входного сигнала. Поменял архитектуру FFT со Streaming на Buffered Burst. На выходе появились данные. Вернулся к Streaming, подал на вход не одну посылку, а несколько. На выходе данные начали поступать начиная со второй пачки. Видимо так работает именно архитектура Streaming. До конца так и не разобрался. Может разъяснит кто-нибудь различия между Streaming, Buffered, Burst Burst, Variable Streaming, в каких случаях и задачах ту или иную стоит применять. Вообще задача ставится так: необходимо обрабатывать 1024 пачек по 1024 отчетов 12 разрядов (т.е. скорее всего придется сделать 24 или даже 32 разряда), в идеале плавающая точка, ПЛИС - Stratix IV GX. Вот и думаю какую архитектуру использовать. Даташит читал, английский более менее понимаю, а вот понять все равно не могу, что там написано).
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|