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

Plisovik

Members
  • Постов

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

  • Посещение

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

  1. Здравствуйте! Подскажите пж. как правильно работать (складывать, вычитать делить  и т. д.) с числами многобитными, знаковыми (signed) если входное число имеет битность одну, допустим [13:0] , а выходное, сильно его больше, допустим раз в 100.

    Подробнее. Мне нужно сигнал 14-битный с АЦП, входящий с частотой "clock", пересчитывать в другое число по формуле. И вход формулы и выход могут быть как отрицательным так и положительным числом. При этом выходное число раз в 100 может превышать входное (симуляция усилителя), т.е. его битность должна быть как минимум на 7 битов больше.  Выходной сигнал на данном такте зависит как от входного на данном такте, так и от входного и выходного на предыдущих тактах.

    Далее мой код (частично:

    ...
    
    input signed [13:0] signal_in,
    
    output  signed [13+7:0] signal_out,
    
    ...
    
    reg signed [13:0] inputsig [2:0];
    reg signed [13+7:0] outputsig [2:0];
    
    always @ (posedge clock) begin
        inputsig[2]<=inputsig[1];
        inputsig[1]<=signal_in; / / Входной сигнал сбрасываю в память, чтоб хранить его за 2 предыдущих такта
    
        outputsig[2]<=outputsig[1];
        outputsig[1]<=signal_out; / / вЫходной сигнал сбрасываю в память, чтоб хранить его за 2 предыдущих такта
    
    end    
    
    assign    y1B = (outputsig[1])*2'd2*alpha/12'd100;                    // alpha - по идее дробное число (0,98), поэтому я его делаю целым (98), а потом делю   
    assign    y2B = (outputsig[2])*alpha/12'd100*alpha/12'd100;    //слагаемое на сто
    assign    X0A = signal_in;
    assign    X1A = (inputsig[1])*alpha/12'd100 + (inputsig[1])*alpha/tau*T/12'd100; // задал 4 слагаемых, определяющих выходной сигнал
        
    assign    signal_out = (y1B - y2B + X0A - X1A); // полный выходной сигнал, складываю слагаемые , которые ранее задал
    
    ...

    Вопрос, как правильно перейти из 14-битного числа в (7+14) битное (тоже +/- знаковое), чтобы формула работала? Правильно ли я умножаю на альфу и делю на 100? А то что я ни делаю, какая-то кракозябла получается...Буду благодарен за помощь!

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