Kluwer
Участник-
Постов
310 -
Зарегистрирован
-
Посещение
Весь контент Kluwer
-
Отчего ж нелегальный? Просто Циклон 10 GX нужен, а он только в pro-версиях сейчас поддерживается с бесплатной лицензией (была уже тема недавно на форуме). Согласен, тоже возможно, но дико не информативно. Вот я передаю модуль коллеге (у нас типично, когда в одной плисине по 2-3 разработчика одновременно живут), у него выскакивает ошибка по типу "incorrect parameter settings". Какого параметра, почему? Пока он сообразит, что это исскуственно заложенная бомба, пока он начнёт меня пытать и т.д. А вот так, на мой скромный взгляд, гораздо информативнее initial if ( (NUM_CHANNELS < 1) || (NUM_CHANNELS > 2) ) $error("\n ==== NUM_CHANNELS should be equal to 1 or 2 only ==== \n"); Но, правда, ваш способ можно объеденить с этим: ваш остановит компиляцию, а мой хотя бы выведет доп.пояснения. Но, просто, как-то не изящно :)
-
1. Не можно. Всё там собирается и в более молодых версиях (19.3 и 19.4) та же история. 2. Что вы имеете в виду?
-
$error работает не правильно
Kluwer опубликовал тема в Среды разработки - обсуждаем САПРы
Коллеги, часто для "защиты от дурака" использую в initial_секции верилог кода инструкцию $error. Во всех версиях Квартуса, что я использовал до этого, сборщик проекта, наткнувшись на $error выдавал сообщение в окно ошибок и останавливал сборку. Но в версии 19.2pro, почему-то $error ведёт себя точно так же как и $info: просто выдаёт сообщение в окно info и как ни в чём не бывало продолжает собирать дальше. Что делать? -
Да, Стратикс меня побери, это работает! :) Спасибо, коллега! Просто последний раз пользовал параметры из .qsf-файла в графической обёртке и там использовал блок "Parameters" и почему-то наглухо засело, что то, что установленно set_parameter - это некая внешняя постоянная, а вот то, что она, на самом деле, переопредяляет аналогичный параметр в заголовочном модуле я как-то из виду и упустил. Да, в моём случае, да, надо было так и оно так работает <название_модуля> #(parameter pDEVICE = "Cyc105") Век живи ... :)
-
Так я оба варианта выше и описал, но в PRO'шной версии Квартуса в верилог-модуле даже самого верхнего уровня он не видит почему-то ни параметра (даже global-параметра), не предопределённого глобального макроса в .gsf-файле, в том-то и засада была.
-
Ну, в конечном итоге я так и сделал. Единственно, я любитель гуёв, но у Квартуса можно добавлять tcl-скрипты, запускаемые до запуска компиляции в .qsf set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:device_id.tcl" А в самом скрипте device_id.tcl, ну как-то так, например set output_file "./device.vh" set line "`define pDEVICE Cyc150" if { [catch {open $output_file w} output] } { post_message -type error "device_id.tcl: Couldn't open $output_file." exit 1 } else { puts $output $line close $output post_message -type info "device_id.tcl: $output_file has been updated." exit 0 } Есс-но для разных ревизий нужно либо подготовить две разных версии скрипта device_id, соотвественно, либо добавить входной аргумент и вызывать как device_id(DEVICE). Этот вариант работает, нет проблем, но как-то это не изящно ...
-
Да, идея не плоха, но в Квартусе даже проще можно, в .qsf-файле дефайн прописывается, например, так set_global_assignment -name VERILOG_MACRO "pDEVICE=150" Далее, в теории, если верить докам на Квартус, для любого верилог-модуля в проекте - это то же самое, что `define pDEVICE 150 Но и это в прошной версии не работает :(
-
Привествую, коллеги, имеется проект с двумя ревизиями под платформы с разными камнями, но с одинаковыми сырцами. В главном сырце на СистемВерилоге, нужно определить под какой камень сейчас собирается проект (необходимо повыкидывать несколько выводов). Раньше проходила простая передача параметра из .qsf-файла, типа, #(parameter pCURRENT_DEVICE = pDEVICE) с добавлением в .qsf-файл строки типа set_parameter -name pDEVICE DEVICE. Но в PRO'шных версиях Квартуса почему-то не проходит (pDevice is not declared). Подскажите, плиз.
-
Да, похоже вы правы. Создаётся впечатление, что под версией "Pro" прячется какая-то отдельная ветка Квартусов, что-то напоминающее давнишнее разделение на Квартусы и Max+Plus II (до чего удобная и надёжная штука была!). У меня просто, самое обидное, вроде бы ширпотреб (Циклон 10), но с индексом GX (10Гб-эзернет используем), а она только в Pro поддерживается почему-то :( Ну вот докатился до того, что графику из кода генерю в другой версии Квартуса :(
-
Кстати, поправочка: оказывается меню "Create Symbol Files for Current File" отсуствует именно в Pro-версиях. В стандартных не знаю, не ставил. А вот в версиях Lite оно есть. И вообще, в версиях Lite менюшки гораздо богаче и "живее". Вот ведь как.
-
Спасибо, коллега, но не нужно. Я для себя выбор сделал: 18.1. В нём и генерация графики есть и Memory Content Editor не глючит. Пока достаточно.
-
Ой ли? На Virtex-7 вы полноценное в состянии коммутировать ажно 20 гигабитных каналов? По полной выкладе? Разгребая/проверяя/анализируя заголовки и тело, поднимая сложнючую сигнализацию типа H.248? Строя и предсказывая коммутационные таблицы и трафик по разным направлениям, с использованием совсем не тривиальных алгоритмов? Ой, что не верится мне ... А по поводу "десятки", во-первых, 20 "единичек" к здоровому камню уровню Виртекс-7/Стратикс-4 прикрутить не проблема. А вот где вы 12 phy на десятку в одной плисине возъмёте? Или если ставить несколько камней уровня "Ультраскэйл", то, простите, сколько ж такой девайс-то стоить будет? Если вы там гос.деньги, как водится, пилите - понятно. Но на ком.рынке - это, по-моему, утопия. И, наконец, сложность такой разработки и, плюс, разгребание всего, что я выше написал, но уже когда это всё летает внутри кристалла на 156МГц по 72 верёвкам. Думаете справитесь с такой задачкой?
-
Виндовоз, версия 10 Home релиз 1809. Машинка на Intel i7-6700 два ядра, 8Гб ОЗу
-
Вы спрашивали как там версия 19.4? Ответ на прилагаемой картинке. Это реакция версии 19.4 на проект, замечательно собиравшийся в 19.2 и в к-ром не было поменено ни единого знака
-
Для Циклонов 10 даже Pro версия не требует никакой лицензии. Вопрос в другом: во всех 19ых версиях куда-то пропало меню "сгенерить графический файл для текущего файла". И как теперь для hdl-файла автоматом сгенерить символ? Или это уже и до Альтеры добралась идиотская тенденция вытеснять гарфику по типу ксайлинксовского Вивадо?
-
Так всё правильно, но нас семйство Cyclone V интересует, Стратиксы и Аррии по бюджету не влезают.
-
С Новым Годом, кстати! :) Ну, с Xilinx'ом мы тоже хорошо знакомы, но сейчас заточены под Альтеры и не хотелось бы плодить сущности. Да и покурил я тему у Ксайлинкса, так там такая же, похоже, тема (они ж всё время ревниво друг на друга смотрят, как СССР и США :) ): очень ограниченное число семейств аналогичную технологию поддерживают и тоже фиг найдёшь нужную микруху в свободной продаже. Может, конечно, я чего-то не понял, ну тогда - подскажите :)
-
Приветствую, коллеги, у нас появилась задача, к-рую, похоже может решить partial reconfiguration. Но в описании Квартуса сказано, что это дело поддерживают только микрухи с индексом SC на конце. По деньгам и хар-ам нас устраивает только 5ые Циклоны. Лезу на сайты продавцов (Диджикей, Маусер и т.д.) ни у кого ничего с индексом SC и близко нет. Может кто знает, как вообще достать такие микросхемы?
-
А не надо никуда возвращаться и велосипед изобретать. Необходимо просто грамотно прописать тайм-констрейны с внешним клоком (virt_clk). Пытатся решить эту задачу руками - это всё равно что пытатся решить большую систему уравнений с N неизвестными путём слепого подбора. Наверное это лучше попросить сделать Квартус. Примеров полно, см. например, https://www.kit-e.ru/articles/plis/2010_11_44.php Выписываете прямо из времянок из даташита на АЦП констрейны. Раз у вас уже выровнены дорожки, значит разбег по дорожкам учитывать не нужно. АЦП скоростной, занчит, наверняка DDR-синхра, значит на входе встречают ALTDDIO, ну а дальше (включение дополнительных задержек и выравнивание тактового сигнала с отдельными битами шины данных с АЦП) - проблема Квартуса. Если все конктрейны прописаны как следует быть и соотвествуют даташиту - всё взлетает с ходу, проверено многократно. P.S. Кстати, если прописывать уж совсем лень, то часто помогает такой приёмчик: клок с ацп с ходу заводите на ФАПЧ с к.дел = 1 и фазовым сдвигом = 0. А уже с его выхода раздаёте ацпшный клок всем заинтересованным регистрам (включая altddio). До сих пор сам не понимаю, почему это работает, но оно часто решает все проблемы.
-
Редактор tcl
Kluwer опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Коллеги, никто не порекомендует какой-нибудь редактор tcl-кода с возможностью объединения файлов в проект? Я поясню. Есть большой tcl-скрипт, в к-ром надо разобраться, он разбит на кучу подскриптов, функций и постоянных. Вот хотелось бы не просто видеть текст в текущем файле а и при нажатии или наведении на, скажем, функцию или постоянную, видеть в выпадающем окне её значение, или, хотя бы, отсыл в файл где она определена. Ну, в общем, как в большинстве типовых сред программирования. -
У меня 19.2 под виндовоз стоит :)
-
Спасибо, коллега!
-
Непонятное поведение шума
Kluwer ответил _sda тема в Алгоритмы ЦОС (DSP)
Просто ограничение квадратур комплексного числа, в данном случае до DATA_PREC бит. Кстати, я почитал как работает БПФ-кора в режиме с плавающей запятой и выяснил, что после каждой стадии конвейера он ещё более лихо начинает масштабировать результаты (разработчки, видимо, тоже решили: а чего, плавающая запятая, ни о чём думать не надо :( ). Ну и результат по мантиссе в том, что даже тех теоретических 72дБ, что я вам выше насчитал по целочисленном ядру, может не быть (что, кстати и видно по вашим графикам). У вас там вообще, похоже, "шумовой" уровень начинается в районе -60дБ. Я не в точности понял, что у вас за задача. Но у нас, например, то же сажтие сигнала для радиолокационных задач динамика хуже 85-90дБ - это вообще не серъёзный разговор. -
Непонятное поведение шума
Kluwer ответил _sda тема в Алгоритмы ЦОС (DSP)
Я уже писал об этом автору. Но и симулинк не нужен: Мегавизард генерит матлабовский обёртку-скрипт, к-рый вызывает альтеровский .dll Sfftmodel. Он с точностью до бита моделирует поведение альтеровской мегакоры. Скрипт выглядит так: % function [y, exp_out] = Custom_FFT_model(x,DATA_PREC,TWIDDLE_PREC,INVERSE) % % calculates the complex block-floating point FFT/IFFT of length N of a % complex input vector x % % Inputs: x : Input complex vector of length N. % : If the length of the vector doesn't fit % N, error is generated. % N : Transform Length % INVERSE : FFT direction % 0 => FFT % 1 => IFFT % % Outputs y : The transform-domain complex vector output % exp_out : Block exponent value % % 2001-2009 Altera Corporation, All Rights Reserved % % Automatically Generated: FFT MegaCore Function 13.0 Build 232 July, 2013 % function [y, exp_out] = Custom_FFT_model(x,DATA_PREC,TWIDDLE_PREC,INVERSE,N) addpath(strcat(getenv('QUARTUS_ROOTDIR'),'/../ip/altera/fft/lib/')); % Parameterization Space THROUGHPUT=4; ARCH=1; % DATA_PREC=23; % TWIDDLE_PREC=23; input_vector_length = length(x); if input_vector_length ~= N, error('Length of input vector doesn''t fit FFT size.'); end rin = real(x); iin = imag(x); [roc,ioc,exp_out] = Sfftmodel(rin,iin,N,THROUGHPUT,ARCH,DATA_PREC,TWIDDLE_PREC,INVERSE); y = roc+1j*ioc; end Затягиваете в Матлаб и играетесь до посинения, пока не подберёте устраивающие параметры, не прикасаясь даже к Квартусу. Вот, например, фрагмент кода - соглассованный фильтр на базе БПФ, сначала на матлабовских БПФ, потом - на Алтере: % ---- First, Matlab's fft-based method --------------------- rfft = fft(Input_IQ, Nfft); Rfft = (2^(-Ntemplate))*ifft(rfft.*Sorig, Nfft); % ---- Second, Matlab's fft-based method ---------------------- % Do not forget to add '.\DSPBuilder_MatchingFilter_import' folder to the paths list % Direct FFT [X, exp_out_in] = Custom_FFT_model(Input_IQ, DATA_PREC, TWIDDLE_PREC, 0, Nfft); X = fix(X(1:Nfft)); % <=== MIDDLE_SCALE (shift on exp_out_in(1)+sbits_after) =========--============ Y = X.*Sorig; % Multiplication % Scaling after the multiplication Y = fix(Y.*2^(-(Ntemplate))); Y = bi_cmplx_satu(Y, 0, DATA_PREC, Y); % Inverse FFT [y, exp_out_out] = Custom_FFT_model(Y, DATA_PREC, TWIDDLE_PREC, 1, Nfft); % Get rid of the tail y = y.*[ones(1,Nw) zeros(1,Nfft-Nw)]; % <=== OUT_SCALE_stageI ======================================================== y = 2.^(-exp_out_out(1)-exp_out_in(1)-log2(Nfft)-sbits_before+sbits_after).*y; % -
Непонятное поведение шума
Kluwer ответил _sda тема в Алгоритмы ЦОС (DSP)
Не повезёт. Если даже с плавающей запятой (почему-то все считают, что п.з. - это панацея от всех бед, ничего подобного, ибо главное - это разрядность мантиссы: у вас 24 бита) - это 144дБ. Но БПФ - интегральное преобразование, значит - вычитаем из этого размер БПФ. 4К - это 72дБ. Итого, всё, чем вы располагаетет - это 144-72 ~ 72дБ. А дальше - начинаются свистопляски с округлением. Переходом на 8К вы просто отрежете из своей динамики ещё 6дБ и всё. Попробуйте уж лучше уйти на 4К целочисленные, влупив ему 32 разряда. И попробуйте, всё-таки, сделать то, что я вам выше рекомендовал: сдвиньте вход хотя бы на 2 разряда влево (<< 2).