- •Содержание
- •Лекционный курс модуль Вводный
- •1. Цели и задачи курса
- •2. Микропроцессор и микропроцессорная система
- •3. Основные понятия и определения
- •4. Характеристики микропроцессоров
- •5. Классификация микропроцессоров
- •6. Эволюция микропроцессоров
- •Модуль I. Организация микропроцессорной системы
- •1. Основные типы архитектур микропроцессорных систем. Фон-неймановская (принстонская) и гарвардская архитектуры. Организация пространств памяти и ввода-вывода.
- •5. Прямой доступ к памяти. Организация прямого доступа к памяти. Контроллер пдп.
- •6. Память микропроцессорной системы. Функции памяти. Архитектура и иерархия памяти. Организация кэш-памяти. Виртуальная память.
- •Увеличение разрядности основной памяти
- •Память с расслоением
- •Использование специфических свойств динамических зупв
- •Страничная организация памяти
- •Сегментация памяти
- •Модуль II. Универсальные микропроцессоры
- •1. Определение понятия «архитектура». Архитектура системы команд. Классификация процессоров cisc и risc. Определение понятия "архитектура"
- •Архитектура системы команд. Классификация процессоров (cisc и risc)
- •2. Методы адресации и типы данных. Типы команд. Команды управления потоком команд. Методы адресации
- •Типы команд
- •Команды управления потоком команд
- •3. Конвейеризация и параллелизм. Конвейерная организация обработки данных. Простейшая организация конвейера и оценка его производительности.
- •Простейшая организация конвейера и оценка его производительности
- •Конфликты по данным, остановы конвейера и реализация механизма обходов
- •Классификация конфликтов по данным
- •Конфликты по данным, приводящие к приостановке конвейера
- •Методика планирования компилятора для устранения конфликтов по данным
- •Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •Снижение потерь на выполнение команд условного перехода
- •5. Проблемы реализации точного прерывания в конвейере. Обработка многотактных операций и механизмы обходов в длинных конвейерах Проблемы реализации точного прерывания в конвейере
- •Обработка многотактных операций и механизмы обходов в длинных конвейерах
- •Конфликты и ускоренные пересылки в длинных конвейерах
- •Поддержка точных прерываний в длинных конвейерах
- •Параллелизм уровня команд: зависимости и конфликты по данным
- •Параллелизм уровня цикла: концепции и методы
- •Основы планирования загрузки конвейера и разворачивание циклов
- •7. Зависимости. Классификация зависимостей и их применение. Устранение зависимостей по данным и механизмы динамического планирования. Зависимости. Их классификация и применение.
- •Устранение зависимостей по данным и механизмы динамического планирования Основная идея динамической оптимизации
- •Динамическая оптимизация с централизованной схемой обнаружения конфликтов
- •Другой подход к динамическому планированию - алгоритм Томасуло
- •Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •9. Одновременная выдача нескольких команд для выполнения и динамическое планирование.
- •10. Архитектура машин с длинным командным словом (vliw). Средства поддержки большой степени распараллеливания.
- •Средства поддержки большой степени распараллеливания
- •Обнаружение и устранение зависимостей
- •Программная конвейеризация: символическое разворачивание циклов
- •Трассировочное планирование
- •Аппаратные средства поддержки большой степени распараллеливания
- •Условные команды
- •Выполнение по предположению (speculation)
- •11. Архитектура epic.
- •Модуль III. Микроконтроллеры и специализированные микропроцессоры
- •2. Специализированные микропроцессоры. Цифровые процессоры обработки сигналов.
- •Модуль Заключительный Перспективы развития микропроцессорной техники.
- •Лабораторный курс
- •7 Семестр. Лабораторная работа 1.
- •Лабораторная работа 2.
- •Лабораторная работа 3.
- •Лабораторная работа 4.
- •8 Семестр. Лабораторная работа 1.
- •1. Общие сведения
- •2. Настройка и запуск Code Composer Studio (simulation)
- •3. Особенности проектирования в иср Code Composer Studio
- •4. Реализация проекта в иср Code Composer Studio
- •5. Тестирование проекта в иср Code Composer Studio
- •6. Аппаратная реализация проекта в иср Code Composer Studio
- •Лабораторная работа 2.
- •1. Подключение файлов ввода/вывода с помощью точек зондирования
- •2. Работа с файлами по средствам функций языка с
- •3. Работа с dsp/bios для генерации звукового сигнала платой dsk5510
- •Лабораторная работа 3.
- •1 Цифровая фильтрация
- •2. Реализация ких фильтра на симуляторе dsk5510
- •3. Реализация ких фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Лабораторная работа 4.
- •1. Фильтры с бесконечной импульсной характеристикой – бих
- •2. Реализация бих фильтра на симуляторе dsk5510
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •3. Реализация бих фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •Оценка работы студентов. Рейтинговая система.
- •1. Общие положения
- •2. Организация рейтингового контроля успеваемости студентов дневной формы обучения
- •3. Выставление оценок по рейтинговой системе
- •4. Организация рейтингового контроля успеваемости студентов заочной формы обучения
- •Учебно-методические материалы Основная литература
- •Дополнительная литература
2. Реализация бих фильтра на симуляторе dsk5510
Программная реализация БИХ фильтра аналогична реализации КИХ фильтра, однако, добавляется дополнительная линия задержки и дополнительный цикл накопления с умножением для обработки коэффициентов А.
Необходимо создать папку «laba_4» и в ней папку «exp_1».
Скопировать в папку с проектом все файлы из папки «exp_1» работы №3.
Внести изменения в файл «filter.h» в соответствии с листингом 2.1.
Листинг 2.1 – Листинг файла «filter.h»
#include <stdio.h>
#define LENBUF 120 #define LENFILTER_B 8 #define LENFILTER_A 8
//коэффициенты фильтра умноженные на число 512 int coeffBuff_b[]={8,-12,21,-19,19,-9,4,0};//(0.2)/2 //8,-12,21,-19,19,-9,4,0};//(0.2)/2 //28,61,98,116,95,62,26,7};//(0.4)/2 //61,6,-93,-13,93,16,-61,-9};//полосовой
int coeffBuff_a[]={512,-2275,4770,-5966,4757,-2401,708,-94};//(0.2)/2 //512,-2275,4770,-5966,4757,-2401,708,-94};//(0.2)/2 //512,-787,1315,-1120,854,-393,130,-19};//(0.4)/2 //512,9,482,5,338,18,58,3};//полосовой
//входной буфер int inp_buf[LENBUF]; //выходной буфер int out_buf[LENBUF]; //буфер линии задержки int SimplBuff_b[LENFILTER_B]; int SimplBuff_a[LENFILTER_A]; //вспомогательная переменная int coeff;
//счетчики int count; int count_run; int count_con; |
//функция запуска фильтрации
int run_filter()
{
for(count_run=0;count_run<LENBUF;count_run++)
{
//чтение входного отсчета
coeff=inp_buf[count_run];
//запись текущего отсчета в линию задержки
SimplBuff_b[0]=coeff;
//запуск функции свертки сигнала
coeff=convolution();
//запись выходного отсчета в линию задержки
SimplBuff_a[0]=coeff;
//запись в выходной буфер отфильтрованного сигнала
out_buf[count_run]=coeff;//+150;
}
return 0;
}
//функция осуществляющая свертку сигнала
int convolution()
{
//вспомогательные переменные
long int coeff_mxb,coeff_mxa;
long int summ_b,summ_a;
long int tmp1,tmp2,tmp3,tmp4;
//-----------------------------------------------------------------------------
for(summ_b=0,count_con=0;count_con<LENFILTER_B;count_con++)
{
//чтение текущего отсчета из линии задержки
tmp1=SimplBuff_b[count_con];
//чтение коэффициента фильтра
tmp2=coeffBuff_b[count_con];
//перемножение отсчета с коэффициентом фильтра
coeff_mxb=tmp1*tmp2;
//накопление результата
summ_b +=coeff_mxb;
}
//цикл сдвига линии задержки на единицу вправо
for(count_con=LENFILTER_B-1;count_con>0;count_con--)
{
SimplBuff_b[count_con]=SimplBuff_b[count_con-1];
}
//-----------------------------------------------------------------------------
//цикл сдвига линии задержки на единицу вправо
for(count_con=LENFILTER_A-1;count_con>0;count_con--)
{
SimplBuff_a[count_con]=SimplBuff_a[count_con-1];
}
for(summ_a=0,count_con=1;count_con<LENFILTER_A;count_con++)
{
//чтение текущего отсчета из линии задержки
tmp3=SimplBuff_a[count_con];
//чтение коэффициента фильтра
tmp4=coeffBuff_a[count_con];
//перемножение отсчета с коэффициентом фильтра
coeff_mxa=tmp3*tmp4;
//накопление результата
summ_a +=coeff_mxa;
}
//нахождения разности сумм и деление на 512
return (summ_b-summ_a)>>9;
}
//функция очистки линии задержки
void ClearSimpleBuff()
{
for(count=0;count<LENFILTER_B;count++)
SimplBuff_b[count]=0;
for(count=0;count<LENFILTER_A;count++)
SimplBuff_a[count]=0;
}
Файл «main.c» остается без изменений.
Скомпилировать и загрузить проект в симулятор.
Тестирование БИХ фильтра