- •Московский технический университет связи и информатики
- •Курсовая работа
- •Задание на курсовую работу
- •Теоретические сведения
- •3. Расчёт ких-фильтра
- •4. Реализации программы в SciLab
- •5. Разработка программы на языке ассемблера процессора adsp-2181
- •6. Проверка разработанного фильтра
- •7.Оценка влияния эффекта Гиббса.
- •8. Вывод
- •9.Список литературы.
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное
бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра Многоканальные телекоммуникационные системы
Курсовая работа
Выполнил: студент группы БТС2251
Проверил: Шаврин С.С.
Москва 2025
Содержание
1. Задание на курсовую работу 4
2. Теоретические сведения 5
3. Расчёт КИХ-фильтра 23
4. Реализации программы в SciLab 31
5. Разработка программы на языке ассемблера процессора ADSP-2181 35
6. Проверка разработанного фильтра 40
7.Оценка влияния эффекта Гиббса. 49
8. Вывод 50
9.Список литературы. 51
Задание на курсовую работу
На рисунке 1 показано задание на проектирование КИХ-фильтра 80 порядка:
Рисунок 1 - Исходные параметры АЧХ и ФЧХ проектируемого КИХ-фильтра.
Теоретические сведения
АЛУ - арифметико - логическое устройство, поддерживающее выполнение основных арифметических и логических операций, а также операций деления.
Умножитель - поддерживает функции знакового и беззнакового умножения над 16 - разрядными операндами, представленными в формате целых или дробных чисел, и сложение (вычитание) вычисленного произведения с (из) содержимым 40 - разрядного аккумулятора.
Сдвигатель - поддерживает функции арифметических и логических сдвигов 16 - разрядных операндов в 32 - разрядном поле с возможностью логического сложения с содержимым поля, а также функции преобразования многоразрядных операндов в форму с плавающей точкой и обратного преобразования.
Последовательные порты SPORT0 и SPORT1 - предназначены для организации последовательного обмена информацией с внешними устройствами. Оба порта обеспечивают режимы пословного и группового обмена (приема и передачи), при этом длина передаваемого (принимаемого) слова может быть установлена в пределах от 3 до 16 бит.
Компандеры - обеспечивают возможность (при необходимости) автоматического экспандирования информации в процессе приема и ее ввод в процессор в форме линейно закодированного сигнала и автоматическую компрессию линейно закодированного сигнала в процессе его вывода во внешние цепи.
Флаги - предназначены для обмена информацией с внешними устройствами.
ОЗУ данных - объемом 16К 16 - разрядных слов, предназначено для хранения операндов и промежуточных результатов вычислений. Ячейки ОЗУ с адреса 3FE0 по 3FFFH распределены в качестве управляющих регистров процессора и не могут быть использованы для хранения информации.
ОЗУ программ - объемом 16К 24 - разрядных слов, предназначено для хранения кодов 24 - разрядных команд данных. Исполнение запоминающего устройства программ в виде ОЗУ обусловлено высоким быстродействием процессора, осуществляющего обращение к ячейкам памяти за 5 наносекунд.
ГАД1, ГАД2 - генераторы адреса данных, обеспечивающие возможность организации в памяти процессора кольцевых буферов (массивов ячеек) с косвенной поставтомодифицирующей системой адресации. ГАД2 обеспечивает доступ и к ОЗУ данных и к ОЗУ программ. ГАД1 обеспечивает доступ только к ОЗУ данных.
Взаимодействие функциональных узлов, входящих в архитектуру ADSP-2181, поддерживается с помощью пяти шин. Шины адреса и данных памяти программ и памяти данных (ШАПП, ШАПД, ШДПП и ШДПД соответственно)
Условие второе: сложение с переносом. С – был или не был перенос (переполнение).
Условие третье: Вычитание с коррекцией (заем из старшего разряда, если С=0, то с заемом)
Условие восемь: увеличение, уменьшение переменной.
NOTE – инверсия битов.
AND – 1 только в том случае, если оба операнда 1
OR – 1 в том случае, если хотя бы один операнд 1
XOR – 1 в том случае, если один операнд 1
Узел ALU поддерживает выполнение арифметических и логических операций по трехадресной системе над 16 - разрядными операндами xop и yop с занесением результата операций в регистры AR или AF. В качестве операнда xop может быть использовано содержимое регистров АХ0, АХ1 или любого другого регистра, имеющего выход на шину результата R.В качестве операнда yop может 11 быть использовано содержимое регистров AY0, AY1 или AF.
На кристалле процессора размещены два комплекта регистров AX0, AY0, AX1, AY1, AR и AF (показано на схеме дополнительным контуром). Один из комплектов называется основным; доступ к нему устанавливается автоматически по рестарту процессора. Второй, - теневой или 13 дополнительный, - комплект регистров служит для облегчения организации перехода к прерывающим подпрограммам, снимая проблему необходимости сохранения содержимого регистров, изменяемого в прерывающей подпрограмме. Переход на работу с дополнительными регистрами осуществляется командой
ena sec_reg;
Обратный переход к основному комплекту регистров - командой
dis sec_reg;
В результате выполняемых в АЛУ операций формируются признаки:
AZ - нулевого результата операции;
AN - отрицательного результата операции;
AV - переполнения разрядной сетки АЛУ, знаковые числы;
AC – переноса, беззнаковые числа;
AS - отрицательного значения операнда xop при выполнении операции вычисления его абсолютного значения;
AQ - признак, используемый операцией деления,
DM – Память данных,
PM – Память программ.
Значения признаков сохраняются до следующего выполнения процессором команды АЛУ, обновляющей признаки.
Командой
ena av_latch;
может быть установлен режим защелки признака AV; в этом режиме сброс признака AV выполняемыми командами запрещается. Сброс режима защелки осуществляется командой
dis av_latch ;
Почти все команды АЛУ имеют формат условных. Коды условий, допустимых к применению в операциях АЛУ, приведены на рис. 3. Условная команда исполняется процессором, если выполняется указанное в ней 14 условие. Если условие не выполняется, команда пропускается. Если условие в команде не указывается, она выполняется как безусловная.
TSTBIT – Проверить бит, выполняет функцию логического "И" над операндом хор и двоичной комбинацией, содержащей нули во всех разрядах, кроме указанного в команде, значение которого принимается равным 1,
SETBIT – Установка указанного в команде бита в 1,
CLRBIT – Сбросить бит в 0,
TGLBIT – Инвертировать бит,
PASS – Пропуск, для продвижения по циклу,
XOP – исключение ИЛИ, т.е. возвращает истину только когда входные значения разные, ar = ar xor ay1,
ABS – модуль,
DIVS, DIVQ – знаковое и беззнаковое деление 32 разрядного операнда на 16 разрядный в дробном или целочисленном представлении. Эти же команды могут быть использованы и для деления операндов большей длины, например, 64 разрядного операнда на 32 разрядный.
NONE – предназначена для формирования комплекта признаков (например, при сравнении операндов) без изменения содержимого какого бы то ни было регистра. Битовые операции и операции с константами, не могут быть использованы.
АХ1 (старшие разряды) и АХ0 (младшие).
MV – сигнал переполнение умножителя. Если при умножении MV = 1, то присутствует ошибка.
NOT AC – АС сброшен.
JUMP – передача управления другой части программы. (Перейти к другой программе и продолжить выполнение с нее)
CALL – вызов программы с сохранением адреса возврата. (Основной код, отвлечение на подпрограмму, возвращение к основному коду после выполнения подпрограммы, RET – подпрограмма выполнена)
FI (FLAG_IN) – внешний сигнал для процессора. Если 1, то датчик получил сигнал о чем либо, например о перегреве.
af = ax0 + ay0; {сложение младших разрядов}
ar = ax1 + ay1 + c; {сложение старших разрядов} {с переносом из младших}
Сохранить содержимое регистра AR в ОЗУ данных можно, например, командой:
dm(номер_или_символическое_имя_ячейки) = ar;
Gринять в регистр AY1 информацию с внешних цепей через параллельный порт ввода / вывода IO (0) – командой:
ay1 = IO(0);
Загрузка регистра AF может быть осуществлена с помощью какой - либо арифметической или логической операции, например:
af = pass ax1 или af = ay0 - 0;
Аналогичным образом содержимое регистра может быть при необходимости сохранено через регистр AR.
ar = pass af;
Ограничения результата по переполнению разрядной сетки при записи результата в регистр AR. Активизация этой функции в программе осуществляется командой
ena ar_sat;
ее активность сохраняется до тех пор, пока не будет выполнена команда
dis ar_sat;
Если функция ограничения по переполнению разрядной сетки активна, то положительный результат любой арифметической операции, превышающий значение 32767 (десятичное), автоматически заменяется на число 32767 (самое большое положительное число, представимое в рамках разрядной сетки), а отрицательный, превышающий по модулю 32768 (десятичное), - на минус 32768.
Умножитель поддерживает функцию вычисления 32 - разрядного произведения 16 разрядных операндов xop и yop, и, при необходимости, алгебраическое суммирование вычисленного произведения с содержимым 40 - разрядного накопителя, составленного из регистров MR2 (старшие разряды), MR1 (средние) и MR0 (младшие).
В качестве источников операндов xop могут быть указан любой регистр, имеющий выход на шину результата R. В качестве источников операнда yop могут быть указаны регистры MY0, MY1 и MF, перечисленные в таблице yop. Аналогично АЛУ, поддерживаются операции пересылок содержимого между регистрами MY0 и MY1 и любыми другими регистрами, ячейками ОЗУ данных (DM) и ОЗУ программ (РМ), а также между регистрами MX0 и MX1, MR2, MR1 и MR0 и любыми другими регистрами или ячейками ОЗУ данных (DM). Регистр MF, аналогично регистру АF, недоступен для операции пересылки.
Целые числа в пределах 16 - разрядной сетки могут быть представлены как знаковые или как беззнаковые.
Беззнаковые числа представлены в диапазоне 0.....65535, при этом старший разряд D15 имеет вес 215 в соответствии с рис. 5. Такой формат представления чисел указывается в командах умножителя как U - unsigned.
Знаковые числа представляются в диапазоне -32768...32767; в этом случае старшему (знаковому) разряду D15 может быть присвоен отрицательный вес -215 . Такой формат представления чисел указывается в командах умножителя как S - signed
Произведение целочисленных операндов будет представлено в диапазонах:
0 ... 232 - 1 - при умножении беззнаковых чисел; -
231 ... +231 - 1 - при умножении знакового числа на беззнаковое;
-230 ... +230 - 1 - при умножении знаковых чисел.
При беззнаковом представлении числа рассматриваются как лежащие в диапазонах 0 ... 2 - 2-15 , при этом старший разряд D15 имеет вес 20 ; такой формат представления чисел должен указываться в командах умножителя как U.
При знаковом представлении дробные числа рассматриваются как лежащие в диапазоне -1 ... +1 - 2-15 в соответствии с общепринятой формой представления электрических сигналов. Такой формат должен указываться в командах умножителя как S, старшему разряду операндов при этом должен быть приписан вес -20 = -1, соответствующий весу знака.
Активизация режима выравнивания произведений дробных чисел по разряду с весом 2-1 в соответствии осуществляется командой
dis m_mode;
Этот режим устанавливается по рестарту процессора и сохраняет активность до выполнения процессором команды
ena m_mode;
или до выхода из прерывающей подпрограммы, в которой режим был активирован.
Для округления по 16 младшим разрядам регистра MR0 командой
mr = mr (rnd);
Ограничение по восьми старшим разрядам регистра MR2 командой
if mv sat mr;
Использование приведенных операций минимизирует шумы обработки, корректно округляя результат по младшим разрядам и заменяя применением ограничения по переполнению (аналогично АЛУ) разрядной сетки шумы перегрузки на нелинейные искажения типа ограничения.
Под MR в системе команд подразумевается 40 - разрядная совокупность регистров MR2 (старшие разряды), MR1 (средние) и MR0 (младшие).
Если в качестве приемника результата операции указан регистр MF (дробная часть результата), то в него записываются 16 старших разрядов произведения, соответствующие разрядам MR1. Приведенные в круглых скобках указания первой буквой указывают формат операнда хор, а второй - yop. Так, например, команда
mr = mx0 * my0 (su);
вычисляет произведение содержимого регистра МХ0, рассматривая его как знаковое число, на беззнаковое число, записанное в регистре MY0.
Указание в команде формата (RND) заставляет процессор рассматривать операнды и произведение как знаковые числа, а значение произведения при этом автоматически округляется по 16 младшим разрядам.
SR0, SR1 – регистр (ячейка памяти) данных,
AR – регистр аккумулятор
SS – оба операнда знаковые
UU – оба операнда беззнаковые
SU – первый операнд знаковый
US – первый операнд беззнаковый
Первое условие: MR +, MR - - Умножение с накоплением. Перемножаются два операнда, результат прибавляется к текущему значению в регистре результата умножителя MR.
Второе условие: Сброс или очистка регистра.
Третье условие: Округление результата.
MV – флаг переполнения.
SAT (Saturation) – защита от переполнения.
IF MV SAT MR – Предотвращает перескок результата от большого положительного числа к большому отрицательному и наоборот.
Сдвигатель поддерживает операции арифметического (ASHIFT) и логического (LSHIFT) сдвигов 16 - разрядного операнда хор в 32 - разрядном поле регистров SR1 (старшие разряды) и SR0 (младшие). В качестве источника операнда хор может быть указан регистр SI или любой другой регистр, имеющий выход на шину результата.
При необходимости может быть осуществлена операция логического ИЛИ над 32 - разрядной комбинацией, составленной из содержимого регистров SR1 и SR0, и сдвинутым значением операнда хор, с занесением результата операции в регистры SR1 и SR0; эта функция полезна при формировании многоразрядных чисел по результатам вычислений, например, при формировании ключевых последовательностей в криптосистемах.
Величина сдвига (арифметического или логического) может быть указана в поле BY в виде положительного или отрицательного числа, при этом отрицательное число соответствует сдвигу вправо (в сторону младших разрядов), а положительное - сдвигу влево (в сторону старших разрядов). Если поле BY в команде отсутствует, значение сдвига определяется содержимым 8 - разрядного регистра SE, которое интерпретируется процессором как число со знаком, записанное в дополнительном коде.
Поле в круглых скобках (HI) или (LO) определяет позицию, по отношению к которой рассматривается сдвиг в поле регистров SR1 и SR0; значение (HI) соответствует сдвигу относительно регистра SR1, а (LO) - относительно регистра SR0.
Так, например, в результате выполнения команды
sr = lshift si by 0 (hi);
значение содержимого регистра SI без сдвига (с нулевым сдвигом) будет записано в регистр SR1, а регистр SR0 будет обнулен.
В результате выполнения команды
sr = lshift si by 0 (lo);
обнуленным окажется регистр SR1, а содержимое регистра SR0, будет дублировать содержимое регистра SI; к аналогичному результату приведет выполнение команды
sr = lshift si by -16 (hi);
Команда
sr = lshift si by -16 (lo);
обнулит оба регистра SR1 и SR0.
Если, например, в регистре MR накоплена сумма произведений, занимающая 36 разрядов, и по условию задачи необходимо сохранить 32 старших из них, такая задача может быть решена операциями сдвига. Значащая часть результата будет размещена в 3-х регистрах MR2, MR1 и MR0.
Для того, чтобы сформировать в регистрах SR1 и SR0 искомое число, необходимо записать в поле SR1 и SR0:
- содержимое регистра MR0 с логическим сдвигом вправо на 4 разряда по отношению к регистру SR0.
- сложить с ним по "ИЛИ" содержимое регистра MR1 с логическим сдвигом вправо 4 разряда по отношению к регистру SR1;
- сложить по "ИЛИ" с полученной комбинацией содержимое регистра MR2 с логическим сдвигом влево на 12 разрядов относительно регистра SR1.
Описанные операции могут быть выполнены с помощью следующей программы:
sr = lshift mr0 by -4 ( lo );
sr = sr or lshift mr1 by -4 ( hi );
sr = sr or lshift mr2 by 12 ( hi );
Команды EXP и NORM предназначены главным образом для перевода чисел из формата с фиксированной запятой в формат с плавающей запятой, а команда EXPADJ - для поддержки выполнения групповых операций сложения и вычитания над числами, представленными в формате с плавающей запятой.
SR – сдвиговый регистр.
SI – входной сдвиговый регистр, используется для подачи данных в сдвиговый так процессора, для приема данных из внешнего источника.
OR – выходной регистр, используется для временного хранения результата перед отправкой в память данных DM.
HIX – расширенный старший бит, обеспечивает корректность операции вычисления экспоненты при работе с числами с фиксированной точкой. Решает проблему потери знака при сдвиге.
EXP – вычисление экспоненты.
[SR OR] – объединение через операцию ИЛИ.
