Jump to content

    

Kluwer

Участник
  • Content Count

    310
  • Joined

  • Last visited

Posts posted by Kluwer


  1. 1 hour ago, des00 said:

    тогжа в альтеру писать, предьявлять что нелегальный софт работает не верно)

    Отчего ж нелегальный? Просто Циклон 10 GX нужен, а он только в pro-версиях сейчас поддерживается с бесплатной лицензией (была уже тема недавно на форуме).

    1 hour ago, des00 said:

    тогжа в альтеру писать, предьявлять что нелегальный софт работает не верно)

    из текущего

    работает на любом софте и даже в древнем 95ом верилоге)

    Согласен, тоже возможно, но дико не информативно. Вот я передаю модуль коллеге (у нас типично, когда в одной плисине по 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"); 

    Но, правда, ваш способ можно объеденить с этим: ваш остановит компиляцию, а мой хотя бы выведет доп.пояснения. Но, просто, как-то не изящно :)

  2. Коллеги,

    часто для "защиты от дурака" использую в initial_секции верилог кода инструкцию $error. Во всех версиях Квартуса, что я использовал до этого, сборщик проекта, наткнувшись на $error выдавал сообщение в окно ошибок и останавливал сборку. Но в версии 19.2pro, почему-то $error ведёт себя точно так же как и $info: просто выдаёт сообщение в окно info и как ни в чём не бывало продолжает собирать дальше. Что делать?

  3. 19 hours ago, negiin said:

    У меня в версии 18.0.1 Pro Edition работает.

    В qsf 

    
    set_parameter -name n 960

    в топовом модуле 

    
    parameter n		        = 1024;

    Может быть нужно задать pDevice и тогда его можно переопределить в qsf файле.

    Да, Стратикс меня побери, это работает! :) Спасибо, коллега!

    Просто последний раз пользовал параметры из .qsf-файла в графической обёртке и там использовал блок "Parameters" и почему-то наглухо засело, что то, что установленно set_parameter - это некая внешняя постоянная, а вот то, что она, на самом деле, переопредяляет аналогичный параметр в заголовочном модуле я как-то из виду и упустил.

    Да, в моём случае, да, надо было так и оно так работает

    <название_модуля> #(parameter pDEVICE = "Cyc105")

    Век живи ... :)

  4. 5 hours ago, negiin said:

    Можно сделать две ревизии и  в каждой прописать параметр в Verilog HDL macro(аналогичен `define) в настройках проекта либо задать default parameters(аналогичен parameter в verilog или generic в vhdl).

    Каждую ревизию можно компилировать в командной строке с ключем -c rev_name0, -c rev_name1.

    Так я оба варианта выше и описал, но в PRO'шной версии Квартуса в верилог-модуле даже самого верхнего уровня он не видит почему-то ни параметра (даже global-параметра), не предопределённого глобального макроса в .gsf-файле, в том-то и засада была.

  5. 13 hours ago, Doka said:

    ...то можно влоб из мейка/шелл-скрипта

    см.выше

     

    .qsf-файл то поди не ручками из гуи запускается, а скриптом - вот туда и добавить

    Ну, в конечном итоге я так и сделал. Единственно, я любитель гуёв, но у Квартуса можно добавлять 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).

    Этот вариант работает, нет проблем, но как-то это не изящно ...

  6. 3 hours ago, Doka said:

    если set_define тоже не сработает, то можно влоб из мейка/шелл-скрипта:

    
    echo "`define DEVICE Aria10GX1050\n" > device.vh

     

    Да, идея не плоха, но в Квартусе даже проще можно, в .qsf-файле дефайн прописывается, например, так

    set_global_assignment -name VERILOG_MACRO "pDEVICE=150"

     Далее, в теории, если верить докам на Квартус, для любого верилог-модуля в проекте - это то же самое, что

    `define pDEVICE 150

    Но и это в прошной версии не работает :(

  7. Привествую, коллеги,

    имеется проект с двумя ревизиями под платформы с разными камнями, но с одинаковыми сырцами. В главном сырце на СистемВерилоге, нужно определить под какой камень сейчас собирается проект (необходимо повыкидывать несколько выводов). Раньше проходила простая передача параметра из .qsf-файла, типа,

    #(parameter pCURRENT_DEVICE = pDEVICE)

    с добавлением в .qsf-файл строки типа

    set_parameter -name pDEVICE DEVICE.

    Но в PRO'шных версиях Квартуса почему-то не проходит (pDevice is not declared). Подскажите, плиз.

  8. 12 hours ago, StewartLittle said:

    Именно так!

    Pro сделана на новом движке SpectraQ, и очень-очень сильно отличается от Srandard/Lite.

    Да, похоже вы правы. Создаётся впечатление, что под версией "Pro" прячется какая-то отдельная ветка Квартусов, что-то напоминающее давнишнее разделение на Квартусы и Max+Plus II (до чего удобная и надёжная штука была!). У меня просто, самое обидное, вроде бы ширпотреб (Циклон 10), но с индексом GX (10Гб-эзернет используем), а она только в Pro поддерживается почему-то :( Ну вот докатился до того, что графику из кода генерю в другой версии Квартуса :(

  9. Кстати, поправочка: оказывается меню "Create Symbol Files for Current File" отсуствует именно в Pro-версиях. В стандартных не знаю, не ставил. А вот в версиях Lite оно есть. И вообще, в версиях Lite менюшки гораздо богаче и "живее". Вот ведь как.

  10. On 1/24/2020 at 4:11 PM, StewartLittle said:

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

    Спасибо, коллега, но не нужно. Я для себя выбор сделал: 18.1. В нём и генерация графики есть и Memory Content Editor не глючит. Пока достаточно.

  11. On 1/17/2020 at 8:51 PM, syoma said:

    Сегодняшние 20х 1G каналов наш Virtex-7 переваривает очень легко. Так как в сети оборудование почти все свое, хотим перейти на 10G. Ultrascale под рукой есть.

    Ой ли? На Virtex-7 вы полноценное в состянии коммутировать ажно 20 гигабитных каналов? По полной выкладе? Разгребая/проверяя/анализируя заголовки и тело, поднимая сложнючую сигнализацию типа H.248? Строя и предсказывая коммутационные таблицы и трафик по разным направлениям, с использованием совсем не тривиальных алгоритмов? Ой, что не верится мне ...

    А по поводу "десятки", во-первых, 20 "единичек" к здоровому камню уровню Виртекс-7/Стратикс-4 прикрутить не проблема. А вот где вы 12 phy на десятку в одной плисине возъмёте? Или если ставить несколько камней уровня "Ультраскэйл", то, простите, сколько ж такой девайс-то стоить будет? Если вы там гос.деньги, как водится, пилите - понятно. Но на ком.рынке - это, по-моему, утопия.

    И, наконец, сложность такой разработки и, плюс, разгребание всего, что я выше написал, но уже когда это всё летает внутри кристалла на 156МГц по 72 верёвкам. Думаете справитесь с такой задачкой?

  12. On 1/9/2020 at 8:09 PM, andreichk said:

    а халявная лицензия к ней прилагается?

    Для Циклонов 10 даже Pro версия не требует никакой лицензии.

    Вопрос в другом: во всех 19ых версиях куда-то пропало меню "сгенерить графический файл для текущего файла". И как теперь для hdl-файла автоматом сгенерить символ? Или это уже и до Альтеры добралась идиотская тенденция вытеснять гарфику по типу ксайлинксовского Вивадо?

  13. 52 minutes ago, Skryppy said:

    Я с частичной реконфигурацией никогда не работал, но вот в этом видео на 12 минуте на слайде пишут, что у  альтеры все stratix и Arria поддерживают такой режим работы Partial reconfiguration

    Так всё правильно, но нас семйство Cyclone V интересует, Стратиксы и Аррии по бюджету не влезают.

  14. On 12/31/2019 at 4:42 PM, Skryppy said:

    Xilinx :beach:

    С Новым Годом, кстати! :)

    Ну, с Xilinx'ом мы тоже хорошо знакомы, но сейчас заточены под Альтеры и не хотелось бы плодить сущности. Да и покурил я тему у Ксайлинкса, так там такая же, похоже, тема (они ж всё время ревниво друг на друга смотрят, как СССР и США :) ): очень ограниченное число семейств аналогичную технологию поддерживают и тоже фиг найдёшь нужную микруху в свободной продаже. Может, конечно, я чего-то не понял, ну тогда - подскажите :)

  15. Приветствую, коллеги,

    у нас появилась задача, к-рую, похоже может решить partial reconfiguration. Но в описании Квартуса сказано, что это дело поддерживают только микрухи с индексом SC на конце. По деньгам и хар-ам нас устраивает только 5ые Циклоны. Лезу на сайты продавцов (Диджикей, Маусер и т.д.) ни у кого ничего с индексом SC и близко нет. Может кто знает, как вообще достать такие микросхемы?

  16. On 12/1/2019 at 11:44 AM, nice_vladi said:

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

     

    А не надо никуда возвращаться и велосипед изобретать. Необходимо просто грамотно прописать тайм-констрейны с внешним клоком (virt_clk). Пытатся решить эту задачу руками - это всё равно что пытатся решить большую систему уравнений с N неизвестными путём слепого подбора. Наверное это лучше попросить сделать Квартус. Примеров полно, см. например, https://www.kit-e.ru/articles/plis/2010_11_44.php

     

    Выписываете прямо из времянок из даташита на АЦП констрейны. Раз у вас уже выровнены дорожки, значит разбег по дорожкам учитывать не нужно. АЦП скоростной, занчит, наверняка DDR-синхра, значит на входе встречают ALTDDIO, ну а дальше (включение дополнительных задержек и выравнивание тактового сигнала с отдельными битами шины данных с АЦП) - проблема Квартуса. Если все конктрейны прописаны как следует быть и соотвествуют даташиту - всё взлетает с ходу, проверено многократно.

     

    P.S. Кстати, если прописывать уж совсем лень, то часто помогает такой приёмчик: клок с ацп с ходу заводите на ФАПЧ с к.дел = 1 и фазовым сдвигом = 0. А уже с его выхода раздаёте ацпшный клок всем заинтересованным регистрам (включая altddio). До сих пор сам не понимаю, почему это работает, но оно часто решает все проблемы.

  17. Коллеги,

    никто не порекомендует какой-нибудь редактор tcl-кода с возможностью объединения файлов в проект?

    Я поясню. Есть большой tcl-скрипт, в к-ром надо разобраться, он разбит на кучу подскриптов, функций и постоянных. Вот хотелось бы не просто видеть текст в текущем файле а и при нажатии или наведении на, скажем, функцию или постоянную, видеть в выпадающем окне её значение, или, хотя бы, отсыл в файл где она определена. Ну, в общем, как в большинстве типовых сред программирования.

  18. 19 hours ago, _sda said:

    Спасибо! А что за функция bi_cmplx_satu?

    Просто ограничение квадратур комплексного числа, в данном случае до DATA_PREC бит.

    Кстати, я почитал как работает БПФ-кора в режиме с плавающей запятой и выяснил, что после каждой стадии конвейера он ещё более лихо начинает масштабировать результаты (разработчки, видимо, тоже решили: а чего, плавающая запятая, ни о чём думать не надо :( ). Ну и результат по мантиссе в том, что даже тех теоретических 72дБ, что я вам выше насчитал по целочисленном ядру, может не быть (что, кстати и видно по вашим графикам). У вас там вообще, похоже, "шумовой" уровень начинается в районе -60дБ. Я не в точности понял, что у вас за задача. Но у нас, например, то же сажтие сигнала для радиолокационных задач динамика хуже 85-90дБ - это вообще не серъёзный разговор.

  19. 3 minutes ago, petrov said:

    _sda

    Целочисленный режим возможен только для

    В симулинке есть целочисленный "Burst" FFT, там же можно всю схему отладить, выявить переполнения и т. п.

    Я уже писал об этом автору. Но и симулинк не нужен: Мегавизард генерит матлабовский обёртку-скрипт, к-рый вызывает альтеровский .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; % 
    

     

  20. 8 minutes ago, _sda said:

    А какой вообще смысл загружать в плиску проект с невыполненными констрейнами?

    Вот я подключил NCO на вход FFT, результат на видео. Ну не хочет моя корка работать как надо.

    Video_2019-09-11_145538.wmv

    В моём случае БПФ с плавучкой.

    Уже и шину данных БПФ менял от 12 до 24 бит - не помогает.

    Мне до этого всегда хватало БПФ или 1К или 2К, это первый раз делаю 4К.

    Если никаких версий больше нет, придётся переходить на 8К, может там повезёт.

    Не повезёт. Если даже с плавающей запятой (почему-то все считают, что п.з. - это панацея от всех бед, ничего подобного, ибо главное - это разрядность мантиссы: у вас 24 бита) - это 144дБ. Но БПФ - интегральное преобразование, значит - вычитаем из этого размер БПФ. 4К - это 72дБ. Итого, всё, чем вы располагаетет - это 144-72 ~ 72дБ. А дальше - начинаются свистопляски с округлением. Переходом на 8К вы просто отрежете из своей динамики ещё 6дБ и всё.

     

    Попробуйте уж лучше уйти на 4К целочисленные, влупив ему 32 разряда. И попробуйте, всё-таки, сделать то, что я вам выше рекомендовал: сдвиньте вход хотя бы на 2 разряда влево (<< 2).