Перейти к содержанию
    

lennox

Участник
  • Постов

    77
  • Зарегистрирован

Сообщения, опубликованные lennox


  1. 4 minutes ago, Nick_K said:

    А можно ссылку на какой-то гайд по этим манипуляциям или лабы какие? А то уже столько даташитов перелопатил, что каша в голове.

    например, https://github.com/analogdevicesinc/hdl/tree/master/library/util_wfifo

     

     

     

  2. 16 minutes ago, petrov said:

    интуитивно подозреваю, что нужно чтобы 2 точки были правее и 2 точки левее

    Именно, для точек посередине линии задержки больше всего информации для интерполяции. Использовал только с оптимальным диапазоном 0..1.

     

    не могли бы Вы привести ссылку, на модель в которой нет ошибки?

    Таких нет, во всех какие-то ошибки. :)

    Посмотрите более поздние.

    https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=23652&page=11&tab=comments#comment-1366022

     

    спасибо!

  3. 7 minutes ago, petrov said:

    Там ошибка, оптимальный диапазон mu 0..1 -> z^-2..z^-1.

     

    вопрос может и глупый, я только начал. а из чего это следует?

    если я хочу сделать mu 1..2, что для этого нужно?

     

    интуитивно подозреваю, что нужно чтобы 2 точки были правее и 2 точки левее, поэтому когда фиксируем индексы как:

    [-1 0 1 2] -> mu = [0..1]

    [0 1 2 3] -> mu = [1..2]

    [-2 -1 0 1] -> mu = [-1..0]

    после вычисления обратной матрицы получаем требуемые коэффициенты. верно?

     

    не могли бы Вы привести ссылку, на модель в которой нет ошибки?

    -спасибо!

  4. Здравствуйте.

    Разбираюсь с символьной синхронизацией, а точнее с ресемплером по схеме Фарроу.

    Вот не могу понять чем определяется оптимальный диапазон mu? От того как зафиксированны индексы отсчетов?

    Вот я  зафиксировал индексы по оси времени как [-1 , 0 , 1 , 2] и посчитал обратную матрицу в Maple (как написано на dsplib) то коэффициенты получаются соответствуют схеме из моделей petrov'a.

    Запустил модель petrov'a - там видно что мю в диапазоне от [-1..0]. Почему?

    на сайте дсплиб оси зафиксированны вот так [-2 -1 0 1]. Коэффициенты немного другие. Какой там диапазон мю, как это понять?

     

    P.S.

    Еще вопрос, почему в некоторых схемах petrov'а в сумматоре кое где к timing_error прибавляется 1ца, а кое где из 1цы ошибка вычитается?

     

    -спасибо!

     

    farrow.JPG

    farrow_petrov.JPG

    qqq.JPG

  5. On 2/3/2019 at 10:07 AM, new123 said:


    Может кто пытался делать crc на широкой шине. Заранее благодарен за любые советы.

    лет 6 назад считал CRC по шине 320бит на 156.25МГц.

    уже не помню как и кода нет, но помню что читал альтера кукбук (глава CRC decomposition)

  6. 2 hours ago, Pavel Proskura said:

    В. И. Ипатов Широкополосные системы и кодовое разделение сигналов.

    спасибо.

    Поделитесь, пожалуйста, следующими книгами

    DIXON, R. C.: ‘Spread Spectrum Systems’

    DIXON, R. C.: ‘Spread Spectrum Techniques’

    ‘The ARRL Spread Spectrum Sourcebook’, (American Radio Relay League Inc, 1997)

    Варакин. Сис-мы связи с шумоподобными сигналами

  7. On 11/7/2018 at 1:45 PM, Olga_woroncova said:

    Здравствуйте! Подскажите, как смоделировать влияние на OFDM сигнал смещения относительно друг друга частот дискретизации между ЦАП и АЦП передатчика и приемника? Это явление называют sampling clock offset (SCO).

     

    Matlab Models of Non-Idealities.pdf

    Matlab Models of Non-Idealities.pdf

  8. Здравствуйте уважаемые.

    Посоветуйте отладочную плату или готовое устройство с 100g Eth портом + FPGA .

    Спасибо.

     

    точно не помню с какой работал, когда занимался 100G, но помню, что HTGххх от HighTech Global.

     

    посмотрите там.

  9. Все определяется Вашими требованиями к избирательности КВ приемника.

    Самый простой и наглядный способ - постройте сквозную АЧХ всех каскадов фильтрации. Для этого надо импульсные характеристики всех фильтров привести к частоте дискретизации АЦП, то есть интерполировать на величину коэффициента децимации перед фильтром. Все интерполированные импульсные характеристики свернуть между собой. fvtool() от результирующей импульсной характеристики покажет сквозную АЧХ.

    спасибо.

  10. я не очень могу представить откуда в практических задачах мог приехать НЧ-сигнал с полосой порядка 20КГц оцифрованный на 100МГц.

    опечатки нет. fs=1.5e9, bw=3.2e3 (единственный такой режим. однополосная, КВ)

     

    100e6, 20e3 - это условный пример.

     

     

    все-таки повторю вопрос , при каскадной реализации фильтров из каких условий выбирается уровень подавления в каждом следующем фильтре?

     

    из каких условий выбирается разрядность данных между фильтрами? где бы почитать об этом на конкретном примере ?

     

    -спасибо

  11. здравствуйте.

     

    подскажите, вот как у меня в посте выше есть cic и cfir

     

    условно говоря, с выхода cic разрядность пусть 96 бит, это много для входа корректирующего.

     

    Например, я округляю до 32 бит (беру старшие 32 значащих по результатам моделирования или есть другой способ? есть ли смысл окргулять по правилу 0.5 или именно так и надо? имею ввиду примерно следющее cic_out[96:65]+cic_out[64] если >0 и наоборот если отрицательный результат)

     

    Так вот на сколько давить внеполосные сигналы в корректирующем фильтре? на 20*log10(2^32) = 193дБ ? как правильно?

     

    -спасибо

  12. Здравствуйте,

     

    подскажите как сделать так, чтобы АЧХ (CIC,CFIR,и результирующая) отображались визуально "гладко, без изломов" при увеличении для моего примера при больших коэффициентах децимации.

     

    Начальная частота семплирования Fs = 100MHz. На выходе хочу, например, 10kHz.

     

    data @100MHz -> CIC (decimate by 5000) -> CFIR (decimate by 2) -> data @10kHz

     

    P.S.

    можно ли отобразить результат последнего fvtool(CICDecim, CICCompDecim, filtCasc, ... от 0 до целевой 10кГц?

     

     

    clc, clear, close all;
    
    %% CIC
    Fs_init = 100e6; % Hz
    
    CIC_output_sample_rate = 20e3; % integer multiple of Fs_init
    
    CIC_decim_factor = Fs_init/CIC_output_sample_rate; % decimatin factor
    
    CICDecim = dsp.CICDecimator( ...
                'DecimationFactor', CIC_decim_factor, ...
                'DifferentialDelay', 1, ... % нули АЧХ cic будут на частотах кратных 20кГц
                'NumSections', 4);
            
    Gain_CIC = gain(CICDecim);
            
    f_CICDecim = fvtool(CICDecim,'Analysis','freq','ShowReference','off');                
    f_CICDecim.NormalizeMagnitudeto1 = 'on';
    legend(f_CICDecim,'CIC decimator');
    
    
    %% CFIR with decimation by 2 
    
    fs = CIC_output_sample_rate; % sample rate @compensator input
    fPass = 2e3;
    fStop = 4e3;
                       
    CICCompDecim = dsp.CICCompensationDecimator(CICDecim, ...
                                            'DecimationFactor',2, ...
                                            'PassbandFrequency',fPass, ...
                                            'StopbandFrequency',fStop, ...
                                            'PassbandRipple', 0.25, ...
                                            'StopbandAttenuation', 80, ...
                                            'SampleRate',fs);
    
    f_CICCompDecim = fvtool(CICCompDecim,'Analysis','freq');                                    
    legend(f_CICCompDecim, 'CIC compensator decimator');
    
    filtCasc = dsp.FilterCascade(CICDecim,CICCompDecim);
    
    f = fvtool(CICDecim, CICCompDecim, filtCasc, ... 
        'ShowReference','off', ...
        'Fs', [fs*CIC_decim_factor fs fs*CIC_decim_factor]);
    
    f.NormalizeMagnitudeto1 = 'on';
    legend(f,'CIC Decimator','CIC Compensation Decimator', ...
        'Overall Response');

     

    -спасибо

    overall_response.jpg

    post-77337-1533653616_thumb.jpg

  13. решили вопрос?

    Я лепил Matlab2016b + ISE14.7 sysgen нa Linux Mint 18.1 Serena.

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

     

    нет не получилось.

     

    пришлось поставить виртулку с win7 и там все развернуть.

     

    но если поможете, буду благодарен)

     

  14. Тогда вопросы:

    какая ОС, есть ли в списке поддерживаемых (и Matlab и Vivado)

    версия Matlab

    версия Vivado

     

    Куда и как поставлены Matlab и Vivado?

    Про ключи/лицензии пока не надо :)

     

    1.

    установлена Linux Mint 18.3 (based on Ubuntu 16.04.3 LTS согласно википедии)

     

    в списке поддерживаемых она есть (согласно ug973):

    Linux Support

    • Red Hat Enterprise Workstation/Server 7.2, 7.3, and 7.4 (64-bit)

    • Red Hat Enterprise Workstation 6.6, 6.7, 6.8, and 6.9 (64-bit)

    • SUSE Linux Enterprise 11.4 and 12.3 (64-bit)

    • CentOS 7.2, 7.3, and 7.4 (64-bit)

    • CentOS 6.7, 6.8, and 6.9 (64-bit)

    • Ubuntu Linux 16.04.3 LTS (64-bit)

     

    и матлаб и вивадо - сами по себе работают.

     

    2. куда поставлен:

     

    dcs@pc ~/Desktop $ which matlab

    /usr/local/bin/matlab (реально вот стоит /usr/local/MATLAB/R2018a/bin)

    dcs@pc ~/Desktop $ which vivado

    /opt/Xilinx/Vivado/2018.1/bin/vivado

    dcs@pc ~/Desktop $ which sysgen

    /opt/Xilinx/Vivado/2018.1/bin/sysgen

     

    вивадо 2018.1

    матлаб 2018а

     

    как поставлен?

    матлаб (делал как тут снято инсталл )

    далее слелал

    ln -s $MATLAB/bin/matlab matlab
    where $MATLAB is the MATLAB installation directory.

     

    вивадо - запустил xsetup

     

    сначала ставил матлаб потом виваду

     

     

    P.S. после запуска симулинка в библиотеке элементов - систем генератора нет.

     

    в виндовсе при установке вивадо - он находит установленный матлаб ну и видимо добавляет все что нужно в симулинк, в линуксе он (установщик) - даже не намекнул на матлаб

     

     

    вот здесь форум залинкс человеку советуют

     

    From your xterm, type the command below (replace your_matlab_installation_root_dir with the actual directory name)

     

    sg_config -install_to_matlab your_matlab_installation_root_dir

     

    Now manually start simulink again, and check if Xilinx Block Sets shows up.

     

    но у меня нету sg_config

     

    ну или я не нашел. как минимум which sg_config - ничего не выдает

     

     

     

    в общем, помогите плиз :biggrin:

     

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

  15. фаа, это я смотрел

     

    Вопрос.

    Первая же ссылка.

     

     

    там написано

     

    This issue has only been reported on unsupported versions of the Ubuntu operating system. However, to avoid this issue on any OS, the Vivado 2016.3 install will no longer set the LD_LIBRARY_PATH variable.

     

    у меня последняя версия 2018.1 и эта переменная не установлена.

     

    сожержимое сеттингс64.сш

     

    ##############################################################
    # Copyright (c) 1986-2018 Xilinx, Inc.  All rights reserved. #
    ##############################################################
    
    source /opt/Xilinx/DocNav/.settings64-DocNav.sh
    source /opt/Xilinx/Vivado/2018.1/.settings64-Vivado.sh
    source /opt/Xilinx/SDK/2018.1/.settings64-SDK_Core_Tools.sh

     

     

    может еще что-нибудь

     

     

  16.  

    приветсвую.

     

    не по своему желанию перешел на линукс.

     

    сумел запустить все (виваду, матлаб, sdk), но не получается систем генератор.

     

    вывод в консоли:

     

    awk: symbol lookup error: awk: undefined symbol: mpfr_z_sub

     

    Internal error 2: Could not determine the path of the

    MATLAB root directory.

     

    original command path = /usr/local/bin/matlab

    current command path = /usr/local/bin/matlab

     

    Please contact:

     

    MathWorks Technical Support

     

    for further assistance.

     

    подскажите, пожалуйста, что и как делать?

     

     

     

    -спасибо

  17. здравствуйте,

     

    хотел сделать 2 эквивалентных куска генерации входных воздействий на фифо.

     

    initial
    begin        
        fork
            /////////////////////////////////////////////////////////////////////////
            pulse_gen:
            begin
                forever
                begin
                    randcase
                        1: rand_pulse = 1;
                        5: rand_pulse = 0;
                    endcase
                    @(posedge aclk);
                end
            end
            /////////////////////////////////////////////////////////////////////////
            push_data:
            begin
                wait(aresetn_done);
                
                forever
                begin
                    s_axis_tlast  = 0;
                    s_axis_tuser  = 0;
                    
                    if (s_axis_tready == 1) // FIFO ready to receive data
                    begin
                        s_axis_tvalid = rand_pulse;
                        if (rand_pulse)
                            s_axis_tdata  = $urandom_range(255,0);                    
                        
                        @(posedge aclk);
                    end
                    else
                    begin
                        s_axis_tdata = 0;
                        
                        @(posedge aclk);
                    end
                end
            end
            /////////////////////////////////////////////////////////////////////////
        join_none
    end

     

    и

     

    always_ff @(posedge aclk)
    begin
        if (aresetn == 1'b0)
        begin
            s_axis_tvalid <= 0;
            s_axis_tdata <= 0;
        end
        else
        begin
            s_axis_tvalid <= s_axis_tready & rand_pulse;
            if (s_axis_tready & rand_pulse)        
                s_axis_tdata <= $urandom_range(255,0);
        end
    end

     

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

     

    в первом случае работает неверно (пропускается первый байт в пачке), во втором - все хорошо.

     

    f1_1000.jpg

     

     

    подскажите в чем проблема и как исправить?

     

     

     

    спасибо.

     

  18. "как из I/Q перейти просто к мягким решениям"

     

    документ не смог найти у себя на компе. я считал по формулам из appnote от AHA. там на примере кам16 был показан расчет.

    попробуйте найти.

     

     

    вот документ китайский язык, страница 7 - там формула но это перевод оригинального аппноута))

     

  19. Хотелось бы увидеть развернутую аргументацию почему Вы считаете, что я ошибаюсь.

     

    Ответьте, пожалуйста, на несколько простых вопросов:

     

    1) Всякую ли и всегда ли синтаксически правильную конструкцию синтезатор сможет воплотить физически в FPGA/ASIC?

     

    2) Всякую ли и всегда ли синтаксически правильную конструкцию симулятор сможет просимулировать?

     

    3) Зачем синтезатору нужно "уметь" код типа always @(posedge iCLK) oDONE <= А; интерпретировать как регистр?

     

    4) Зачем симулятору нужно "уметь" код типа always @(posedge iCLK) oDONE <= А; интерпретировать как регистр?

     

    5) В чем, на ваш взгляд, заключается разница между задачей синтеза и моделирования (симуляции)?

     

    6) Вы все еще считаете, что я ошибаюсь?

    1)нет

    2)не знаю, уверен что нет!

    3)за тем, что так посчитал разработчик! если он так не думает, то надо ему объяснить!! (с помощью констрейнов) есть другие варианты?

    4)как иначе?

    5)

    6) да

  20. Еще необходимо понимать, что код

    always @(posedge iCLK)
      oDONE <= ...

     

    только для синтезатора является регистром, а вот симулятор этот код так не интерпретирует. При этом, поведение при симуляции полностью совпадает с поведением регистра, но, повторюсь, симулятор не считает это регистром.

    это еще почему? Вы ошибаетесь

×
×
  • Создать...