Главная страница
Навигация по странице:

  • Критерии оценки

  • Упрощенный алгоритм ADPCM

  • Декодировать_отсчет( восст_отсчет, индекс_шага, дельта_код )

  • Лаба-3 (2021-2022) - Добор-3. Лабораторная работа Добор баллов


    Скачать 247.61 Kb.
    НазваниеЛабораторная работа Добор баллов
    Дата06.12.2022
    Размер247.61 Kb.
    Формат файлаpdf
    Имя файлаЛаба-3 (2021-2022) - Добор-3.pdf
    ТипЛабораторная работа
    #831871

    Лабораторная работа № 3. Добор баллов
    Выполнить декодирование последовательности отсчетов по упрощенному алгоритму
    ADPCM.
    Каждый входной отчет представляет собой упакованную последовательность из N 2-битовых дельта-кодов, которая заполняется, начиная с младших битов (2 ≤ N ≤ 16, N - константа).
    Неиспользуемые биты равны нулю.
    Входной кадр представляет собой M входных 32-разрядных упакованных отсчетов. По каждому из M входных отсчетов нужно восстановить N целочисленных знаковых отсчетов демодулированной функции.
    Входные данные выполняется через SPORT с использованием DMA (формат Hex32).
    Выходной кадр представляет собой MxN 32-разрядных отсчетов. Выходные данные выводятся через SPORT с использованием DMA (формат SignedInteger32).
    Реализовать покадровую обработку с прерыванием от SPORT по завершению ввода очередного кадра.
    Критерии оценки
    1. Разработан проект, ldf-файл, программа компилируется и правильно работает на тестовой последовательности данных (6 баллов)
    2. Реализована цепочечная DMA со схемой организации DMA-буферов типа "пинг-понг" (2 балла).
    3. Для каждого тесткейса выполнен расчет минимально допустимых значений делителя тактовой частоты последовательного порта (xDIV) отдельно для ввода и для вывода данных с учетом трудоемкости обработчика прерывания (2 балла).
    4. Выполнена оптимизация кода (1 балл).
    5. Код структурирован и документирован (1 балл).
    Упрощенный алгоритм ADPCM
    Имеются 2 таблицы (константы, ФЗ-формат):
    StepSizeTbl[10]={7, 8, 10, 12, 15, 20, 25, 32, 40, 50};
    AdjustStepTbl[4]={-1, 2, -1, 2};
    В таблице шагов модуляции StepSizeTbl содержится множество возможных значений шагов
    АДИКМ. Из нее по значению переменной индекс_шага выбирается значение текущего шага квантования
    (переменная шаг). Из таблицы AdjustStepTbl по 2-битовому кодовому слову выбирается приращение значения шага модуляции для декодирования следующего отсчета:
    - для кодового слова 00b или 10b (минимальное изменение сигнала со знаком "+" или "-") приращение индекса шага равно -1;
    - для кодового слова 01b или 11b (максимальное изменение сигнала со знаком "+" или "-") приращение индекса шага равно 2.
    После вычисления значения переменной индекс_шага обязательна проверка на то, что получившееся значение находится в диапазоне от 0 до 9 (размер массива StepSizeTbl) и приведение к этому диапазону, если обнаружен выход за границы массива.
    Функция декодирования очередного отсчета записывается в следующем виде:
    Декодировать_отсчет(восст_отсчет, индекс_шага, дельта_код)
    шаг = StepSizeTbl[индекс_шага];
    разность = шаг / 2; если (дельта_код AND 01b) то
    разность = разность + шаг; если (дельта_код AND 10b) то
    разность = -разность;
    восст_отсчет = восст_отсчет + разность;
    индекс_шага = индекс_шага + AdjustStepTbl[дельта_код]; вернуть восст_отсчет;
    Начальные значения переменных:
    - индекс_шага = 0;
    - восст_отсчет = 0.


    написать администратору сайта