Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программной реализации КИХ и БИХ фильтров на базе процессора TMS320C50

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Секции программы Init_main, Vvod, Filter, Vivod размещаются в блоке памяти программ; PROG в друг за другом в указанном порядке начиная с начального адреса блока; они; образуют чисто условный модуль MAIN в выходном файле. Используя пакет синтеза фильтров FD, получить импульсную характеристику заданного фильтра и сравнить ее с характеристикой, снятой в имитаторе при выполнении разработанной… Читать ещё >

Разработка программной реализации КИХ и БИХ фильтров на базе процессора TMS320C50 (реферат, курсовая, диплом, контрольная)

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЯ им. проф. М.А. БОНЧ-БРУЕВИЧА Факультет РТС.

Кафедра радиосистем и обработки сигналов.

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ " ЦИФРОВЫЕ ПРОЦЕССОРЫ ОБРАБОТКИ СИГНАЛОВ"

" РАЗРАБОТКА ПРОГРАММНОЙ РЕАЛИЗАЦИИ КИХ И БИХ ФИЛЬТРОВ НА БАЗЕ ПРОЦЕССОРА TMS320C50" .

Выполнил: ст. гр. Р-01 Гоца Л. Н.;

Проверил: Степанов А. Б.

Санкт-Петербург 2014

  • 1. Реализация КИХ-фильтра на процессоре TMS320C50
  • 1.1 Вариант кода задания и техническое задание на проектирование
  • 1.2 Структурная схема
  • 1.3 Блок-схема алгоритма
  • 1.4 Исходный текст программы на языке ассемблера с комментариями
  • 1.5 Командный файл компоновки
  • 1.6 Командный файл программного имитатора
  • 1.6 Таблица значений импульсной характеристики
  • 1.7 Расчет максимально возможной частоты дискретизации
  • 2. Реализация БИХ фильтра на процессоре TMS320C50
  • 2.1 Вариант кода задания
  • 2.2 Структурная схема
  • 2.3 Алгоритм
  • 2.4 Исходный текст программы на языке ассемблера с комментариями
  • 2.5 Командный файл компоновки
  • 2.6 Командный файл программного имитатора
  • 2.7 Таблица значений импульсной характеристики
  • 2.7 Расчет максимально возможной частоты дискретизации
  • 3. Расчет и результаты фильтра с помощью пакета Filter Design
  • 3.1 КИХ фильтр
  • 3.2 БИХ фильтр
  • Литература

1. Реализация КИХ-фильтра на процессоре TMS320C50

1.1 Вариант кода задания и техническое задание на проектирование

A

B

C

D

E

Разряд, А определяет номер решаемой задачи. В моем случае А=1, это значит, что данная задача предусматривает разработку и отладку программы реализации на процессоре TMS320C50 цифрового фильтра с конечной импульсной характеристикой /КИХ/, коэффициенты которого заданы.

Разряд В определяет исходные данные для программы фильтра: коэффициенты bi и масштабный множитель входного сигнала ММ.

В=6

ММ=0.85

b9=0.21 961 315

b0=0.517 338

b10=0.3 508 036

b1=-0.4 783 066

b11=-0.19 031 033

b2=-0.4 100 188

b12=-0.8 467 900

b3=-0.5 968 966

b13=0.12 231 730

b4=0.8 542 713

b14=0.8 542 713

b5=0.12 231 730

b15=-0.5 968 966

b6=-0.8 467 900

b16=-0.4 100 188

b7=-0.19 031 033

b17=-0.4 783 066

b8=0.3 508 036

b18=0.517 338

Разряд С определяет размещение секций программы в памяти процессора:

С

Коды программ (память программ)

Данные — секция. data (память данных)

Коэффициенты и переменные (память данных)

Разряд D определяет тип прерываний, используемый для ввода отсчета сигнала:

D

Тип прерываний

TINT

Разряд Е определяет период прерываний (период ввода отсчетов сигнала)

Е

Период ввода входных сигналов /такты/

Для выполнения задачи 1 необходимо сделать следующее:

1. Написать программу реализации фильтра по схеме (рис1.) в соответствии с кодом варианта задания. Во всех фильтрах используется частота дискретизации 8кГц.

2. Отладить написанную программу на имитаторе процессора.

3. Снять импульсную характеристику полученного фильтра, используя в качестве входного сигнала единичный импульс. Критерием правильности функционирования программы будет совпадение значений полученной импульсной характеристики с заданными коэффициентами фильтра с учетом введенного на входе масштабного множителя (для совпадения коэффициенты должны быть умножены на ММ).

4. Используя пакет синтеза фильтров FD, получить импульсную характеристику заданного фильтра и сравнить ее с характеристикой, снятой в имитаторе при выполнении разработанной программы.

фильтр алгоритм процессор

5. Определить в имитаторе время вычисления выходного отсчета фильтра (в тактах) и рассчитать максимально возможную частоту дискретизации входного сигнала проектируемого фильтра.

1.2 Структурная схема

Рис. 1. Структурная схема реализации КИХ-фильтра.

Обозначения:

Z^-1 — элемент задержки;

ММ — масштабный множитель;

bi — коэффициенты фильтра;

X (n) — входной отсчет сигнала;

Y (n) — выходной отсчет сигнала;

1.3 Блок-схема алгоритма

1.4 Исходный текст программы на языке ассемблера с комментариями

; Реализация КИХ фильтра (N-1) порядка (19 коэффициентов)

. version 50

. global BUFFER2

. mmregs

; Задание значений символов, используемых в программе

N. set 19; к-во коэффициентов фильтра

OUTPORT. set 51h; параллельный порт, используемый для вывода отсчетов фильтра

INPORT. set 50h; параллельный порт, используемый для ввода отсчетов сигнала

. data

; данные для фильтра

INAD. word 0

OUTAD. word 0

MM. word 32 768*850/1000; масштабный множитель на входе 0.85

. sect «Vectors»

; Таблица векторов прерываний

B START

B BEGIN; INT1 внешние прерывания

B BEGIN; INT2

B BEGIN; INT3

B BEGIN; TINT прерывание по таймеру

. sect «Initmain»

; Инициализация процессора и основная программа

START:

; установка режимов работы

SETC INTM; запрет прерываний на время установки режимов работы

CLRC OVM; режим переполнения

SPM 1; режим сдвига значений при передаче (PREG) — АЛУ

SETC SXM; режим расширения знака

LDP #0; установка разрешения необходимых прерываний

SPLK #1000h, PRD; ввод таймера

SPLK#1000,TIM

SPLK#08h, IMR

CLRC INTM; разрешение прерываний

LOOP:

NOP; основная программа — бесконечная петля ожидания прихода запроса на; прерывания

B LOOP

; подпрограмма прерывания, которая состоит из трех основных частей

. sect «Vvod»

; прием очередного отсчета

BEGIN:

LDP #0

SPLK # (N-2), BRCR; установка повторений блока команд

LDP #INAD

IN INAD, INPORT; прием отсчета через входной порт

; умножение отсчета на ММ

LT INAD

MPY MM

LDP #BUFFER2

SPH BUFFER2; запись отсчета в буфер

. sect «Filter»

; программа реализации фильтра

LAR AR2,# (BUFFER2+N-1); загрузка начального (для вычислений) адреса; отсчетов в регистр AR2

LAR AR1,# (BUFFER1+N-1); загрузка начального адреса коэффициентов в AR1

MAR *, AR1; установка текущего ARn

ZAP; (PREG) = (ACC) = 0

RPTB B_END-1; задание блока команд для повторения

LT *-, AR2; к-т B — регистр Т, начиная с B (n-1)

MPYA *-; В*Х — PREG; предыдущее (PREG) добавляется к (ACC)

DMOV *, AR1; сдвиг отсчета Х в буфер, необходимый для вычисления следующего; выходного значения фильтра Y

B_END:

; перемножение и добавление в ACC последнего произведения В*Х без сдвига Х

LT *, AR2

MPYA *

APAC

LDP #OUTAD

SACH OUTAD; сохранение полученного выходного отсчета

. sect «Vivod»

; вывод выходного отсчета фильтра

OUT OUTAD, OUTPORT

CLRC INTM; разрешение прерывания для приема следующего отсчета

RET

; резервирование памяти для хранения входных отсчетов

. sect «BUFFER2»

BUFFER2. space N*16

; секция данных с к-тами фильтра, начиная с b0

. sect «BUFFER1»

BUFFER1

. word32768*51/10 000

. word- (32 768*478/10 000)

. word- (32 768*410/10 000)

. word- (32 768*596/10 000)

. word32768*854/10 000

. word32768*1223/100 000

. word- (32 768*846/10 000)

. word- (32 768*1903/100 000)

. word32768*350/10 000

. word32768*2196/100 000

. word32768*350/10 000

. word- (32 768*1903/100 000)

. word- (32 768*846/10 000)

. word32768*1223/100 000

. word32768*854/10 000

. word- (32 768*596/10 000)

. word- (32 768*410/10 000)

. word- (32 768*478/10 000)

. word32768*51/10 000

. end

1.5 Командный файл компоновки

; Командный файл компоновки для КИХ фильтра

v0; версия нулевая

e RESET; задание начального адреса счетчика программ после загрузки

m FIR. map; имя файла с таблицей компоновки

o FIR. out; имя выходного файла

FIR. obj; имена компонуемых файлов

; задание конфигурации памяти проектируемой системы

MEMORY

{

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

PAGE 0:

VECS: origin = 0×0000, length = 0×0040

PROG: origin = 0×0040, length = 0×0300

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

PAGE 1:

; предопределенный блок памяти для размещения регистров процессора, отраженных на; память

REGS: origin = 0×0000, length = 0×0060

; выделенные блоки в памяти данных для размещения секций исходной программы

BLOCK0: origin = 0×0480, length = 0×0100

BLOCK1: origin = 0×0240, length = 0×0100

BLOCK2: origin = 0×0340, length = 0×0100

}

; указания по размещению секций программы в блоках заданной выше памяти системы

SECTIONS

{

; размещение секции Vectors в блоке памяти программ VECS начиная с начального адреса; блока

Vectors: {}>VECS PAGE 0

; секции программы Init_main, Vvod, Filter, Vivod размещаются в блоке памяти программ; PROG в друг за другом в указанном порядке начиная с начального адреса блока; они; образуют чисто условный модуль MAIN в выходном файле

Main: {* (Initmain)

* (Vvod)

* (Filter)

* (Vivod) }> PROG PAGE 0

; различные секции данных исходной программы размещаются в выделенных блоках; памяти данных

. data: {}>BLOCK0 PAGE 1

BUFFER2: {}>BLOCK1 PAGE 1

BUFFER1: {}>BLOCK2 PAGE 1

}

1.6 Командный файл программного имитатора

ma 0,0,0×1000,ram; определение ПП типа RAM с адресами 0−0×1000

ma 0,1,0×05f, ram; определение ПП типа RAM с адресами 0−0×05f

ma 0×100,1,0×400,ram; ПД типа RAM с адресами 0×100−0х4ff, блоки внутреннего; DARAM B0, B1

ma 0×800,1,0×1200,ram; Внешняя ПД с адресами 0×800 — 0хfff

; Команды задания входноговыходного параллельных портов

; и подключения к ним

; файлов для чтения и записи

ma 0×50,2,1, iport

ma 0×51,2,1,oport

mc 0×50,2, infile. dat, READ

mc 0×51,2,outfile. dat, WRITE

; pincINT1, t_int. dat

takealias. bat; загрузка файла с командами имитатора

loadFIR. out; загрузка исполняемой программы

? PC=0×00; установка начального значения программного счетчика

mem 0×0480; формирование и задание начальных адресов трех окон памяти

mem1 0×280

mem2 0X380

; sound on; включение звуковой cигнализации

1.6 Таблица значений импульсной характеристики

Номер отсчета

Задано

Получено /OUTFILE. DA/

OUTFILE. DA * MM

0.517 338

4.30 297 851 5625E-003

0.517

— 0.4 783 066

— 4.649 414 0625E-002

— 0.4 784

— 0.4 100 188

— 3.48 510 742 1875E-002

— 0.041

— 0.5 968 966

— 5.659 179 6875E-002

— 0.5 968

0.8 542 713

7.25 708 007 8125E-002

0.0853

0.12 231 730

1.34 545 898 4375E-002

0.1223

— 0.8 467 900

— 7.192 993 164 0625E-002

— 0.0847

— 0.19 031 033

— 1.61 743 164 0625E-002

— 0.1903

0.3 508 036

2.97 241 210 9375E-002

0.035

0.21 961 315

1.864 624 023 4375E-002

0.219

0.3 508 036

2.97 241 210 9375E-002

0.035

— 0.19 031 033

— 1.61 743 164 0625E-002

— 0.1904

— 0.8 467 900

— 7.192 993 164 0625E-002

— 0.0847

0.12 231 730

1.34 545 898 4375E-002

0.1224

0.8 542 713

7.25 708 007 8125E-002

0.0854

— 0.5 968 966

— 5.659 179 6875E-002

— 0.5 969

— 0.4 100 188

— 3.48 510 742 1875E-002

— 0.041

— 0.4 783 066

— 4.649 414 0625E-002

— 0.4 784

0.517 338

4.30 297 851 5625E-003

0.517

В данном случае (при воздействии на входе КИХ-фильтра тестового сигнала в виде единичного импульса) отсчеты ИХ фильтра равны соответствующим коэффициентам фильтра.

1.7 Расчет максимально возможной частоты дискретизации

Количество тактов подпрограммы обслуживания прерывания: n=747.

Длительность одного такта: T =50 нс.

Время выполнения программы: tвып = T * n / 8=4.67 мкс

Максимально возможная частота дискретизации f=1/ tвып =214 кГц.

2. Реализация БИХ фильтра на процессоре TMS320C50

2.1 Вариант кода задания

A

B

C

D

E

F

Разряд, А определяет номер решаемой задачи. А=3: данная задача предусматривает разработку и отладку программы реализации на процессоре TMS320C50 цифрового фильтра с бесконечной импульсной характеристикой. Разряд В определяет исходные данные для программы фильтра: коэффициенты bi и масштабные множители двух звеньев m

B=7

Звено 1

Звено 2

b0=0.3245

b0=0.3245

b1=0.0000

b1=0.4918

b2=-0.3245

b2=0.3245

a0=1.0000

a0=1.0000

a1=0.2776

a1=0.4167

a2=0.6399

a2=0.8322

m=0.5403

m=0.9500

Разряд С определяет размещение секций программ в памяти процессора.

С

Коды программ (память программ)

Данные — секция. data (память данных)

Коэффициенты и переменные (память данных)

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

D

Прерывание по таймеру

TINT

Разряд Е определяет период прерываний (период ввода отсчетов сигнала).

Е

Период ввода входных сигналов, такты

Разряд F определяет номер структуры звеньев фильтра, F=6, номер структуры — 2, каноническая форма реализации.

Для выполнения задачи необходимо сделать следующее:

1. Написать программы реализации БИХ-фильтра в виде последовательного соединения звеньев заданной структуры.

2. Отладить написанную программу с помощью имитатора процессора.

3. Используя пакет синтеза фильтров FD, получить импульсную характеристику заданного фильтра и составить таблицу значений.

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

5. Определить в имитаторе время вычисления выходного отсчета фильтра (в тактах) и рассчитать максимальную возможную частоту дискретизации входного сигнала для данного фильтра.

2.2 Структурная схема

Обозначения:

X (n) — входной отсчет сигнала

Y (n) — выходной отсчет сигнала

2.3 Алгоритм

2.4 Исходный текст программы на языке ассемблера с комментариями

; Программа реализации БИХ фильтра в транспонированной форме

. version 50

. global BUFFER2

. mmregs

; Задание значений символов, используемых в программе

OUTPORT. set51h

INPORT. set50h

. data

; данные для фильтра

INAD. word0

OUTAD. word0

MM1. word 32 768*5403/10 000; масштабный множитель первого звена 0.5403

MM2. word 32 768*9500/10 000; масштабный множитель первого звена 0.95

. sect" KOFVAR"

; коэффициенты первого звена

B01. word32768*3245/10 000

B11. word32768*1/10 000

B21. word- (32 768*3245/10 000)

A11. word32768*2776/10 000

A21. word- (32 768*6399/10 000)

; второе звено

B02. word32768*3245/10 000

B12. word32768*4918/10 000

B22. word32768*3245/10 000

A12. word- (32 768*4167/10 000)

A22. word- (32 768*8322/10 000)

; переменные фильтра

; первое звено

IN1. word 0; входной отсчет

S11. word 0; промежуточное значение

S21. word 0; промежуточное значение

S31. word 0; промежуточное значение

OUT1. word 0; выходной отсчет звена

; второе звено

IN2. word 0; входной отсчет

S12. word 0; промежуточное значение

S22. word 0; промежуточное значение

S32. word 0; промежуточное значение

OUT2. word 0; выходной отсчет звена

. sect «Vectors»

; Таблица векторов прерываний

B START

BBEGIN; INT1 внешние прерывания

BBEGIN; INT2

BBEGIN; INT3

BBEGIN; TINT прерывание по таймеру

. sect" Initmain"

; Инициализация процессора и основная программа

START:

; установка режимов работы

SETCINTM; запрет прерываний на время установки режимов работы

CLRCOVM; режим переполнения

SPM1; режим сдвига значений при передаче (PREG) — >АЛУ

SETCSXM; режим расширения знака

LDP#0; установка разрешения необходимых прерываний

SPLK#1200,PRD; вводим таймер

SPLK#1200,TIM; таймер

SPLK#08h, IMR

CLRCINTM; с интервалом 2000 тактов

LOOP:

NOP; основная программа — бесконечная петля ожидания

; прихода запроса на прерывание

BLOOP

; подпрограмма прерывания, которая состоит из трех основных частей

. sect" Vvod"

BEGIN:

; ввод отсчета

LDP#INAD

ININAD, INPORT

; умножение входного отсчета на ММ

LT INAD

MPYMM1

LDP#IN1

SPHIN1

. sect «Filter»

; вычисление выходного отсчета

ZAP; (ACC) = (PREG) = 0

LT S31; (S31) — > регистр T

MPY B21; (S31) * (B21) — > PREG

LTA S21; предыдущее (PREG) + (ACC) — > ACC, (S21) — > T

MPY B11; (S21) * (B11) — > PREG

APAC; предыдущее (PREG) + (ACC) — > ACC

EXAR; (ACC) <-> буфер BCC

LACCIN1,16; (IN1) — > ACC

LT S31; (S31) — >T

MPYA21; (S31) * (A21) — > PREG

LTAS21; предыдущее (PREG) + (ACC) — > ACC, (S21) — > T

MPYA11; (S21) * (A11) — > PREG

APAC; предыдущее (PREG) + (ACC) — > ACC

SACHS11; сохранение S11

LT S11; (S11) — > T

MPYB01; (S11) * (B01) — > PREG

EXAR; (ACC) <-> буфер BCC

APAC; предыдущее (PREG) + (ACC) — > ACC

SACH OUT1; сохранение выходного отчета

DMOV S21; сдвиг (S21) — > S31

DMOV S11; сдвиг (S11) — > S21

; 2-ое звено

LT OUT1; (OUT1) — > регистр T

LDP #MM2

MPY MM2

LDP #IN2

SPH IN2

ZAP

LT S32

MPY B22

LTA S22

MPY B12

APAC

EXAR

LACCIN2,16

LT S32

MPYA22

LTAS22

MPYA12

APAC

SACHS12

LT S12

MPYB02

EXAR

APAC

SACH OUT2

DMOV S22

DMOV S1

. sect «Vivod»

; Вывод выходного отсчета фильтра

LACCOUT2

LDP#OUTAD

SACLOUTAD

OUT OUTAD, OUTPORT

CLRCINTM; разрешение прерывания до следующего отсчета

RET

. end

2.5 Командный файл компоновки

; Командный файл компоновки для КИХ фильтра

v0; версия нулевая

e RESET; задание начального адреса счетчика программ после загрузки

m IIR. map; имя файла с таблицей компоновки

o IIR. out; имя выходного файла

IIR. obj; имена компонуемых файлов

; задание конфигурации памяти проектируемой системы

MEMORY

{

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

PAGE 0:

VECS: origin = 0×0000, length = 0×0040

PROG: origin = 0×0040, length = 0×0300

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

PAGE 1:

; предопределенный блок памяти для размещения регистров процессора, отраженных на; память

REGS: origin = 0×0000, length = 0×0060

; выделенные блоки в памяти данных для размещения секций исходной программы

BLOCK0: origin = 0×0100, length = 0×0100

BLOCK1: origin = 0×0200, length = 0×0100

}

; указания по размещению секций программы в блоках заданной выше памяти системы

SECTIONS

{

; размещение секции Vectors в блоке памяти программ VECS начиная с начального адреса; блока

Vectors: {}>VECS PAGE 0

; секции программы Init_main, Vvod, Filter, Vivod размещаются в блоке памяти программ; PROG в друг за другом в указанном порядке начиная с начального адреса блока; они; образуют чисто условный модуль MAIN в выходном файле

Main: {* (Initmain)

* (Vvod)

* (Filter)

* (Vivod)

}> PROG PAGE 0

; различные секции данных исходной программы размещаются в выделенных блоках; памяти данных

. data: {}>BLOCK0 PAGE 1

KOFVAR: {}>BLOCK1 PAGE 1

}

2.6 Командный файл программного имитатора

ma 0,0,0×1000,ram; Определение ПП типа RAM с адресами 0−0×1000

ma 0,1,0×05f, ram; Определение ПП типа RAM с адресами 0−0×05f

ma 0×100,1,0×400,ram; ПД типа RAM с адресами 0×100−0х4ff, блоки внутреннего DARAM; B0, B1

ma 0×800,1,0×1200,ram; Внешняя ПД с адресами 0×800 — 0хfff

; Команды задания входноговыходного параллельных портов и подключения к ним; файлов для чтения и записи

ma 0×50,2,1, iport

ma 0×51,2,1,oport

mc 0×50,2, infile. dat, READ

mc 0×51,2,outfile. dat, WRITE

; pincTINT

takealias. bat; загрузка файла с командами имитатора

loadIIR. out; загрузка исполняемой программы

? PC=0×00; установка начального значения программного счетчика

mem 0×0100; формирование и задание начальных адресов двух окон памяти

mem1 0×200

sound on; включение звуковой игнализации

2.7 Таблица значений импульсной характеристики

Номер отсчета

Значение ИХ в FD

Значение ИХ в программе

0.054

5.40 161 132 8125E-002

0.743 965

7.437 133 789 0625E-002

— 0.83 662

— 8.364 868 164 0625E-002

— 0.173 136

-.173 126 220 703 125

0.520 795

5.200 195 3125E-002

0.190 937

. 190 887 451 171 875

— 0.464 815

— 4.647 827 148 4375E-002

— 0.162 193

-.1 622 314 453 125

0.510 734

5.99 487 304 6875E-002

0.112 876

.11 285 400 390 625

2.7 Расчет максимально возможной частоты дискретизации

Количество тактов подпрограммы обслуживания прерывания: n=720.

Длительность одного такта: T =50 нс.

Время выполнения программы: t= 4.5 мкс.

Максимально возможная частота дискретизации f=222 кГц.

3. Расчет и результаты фильтра с помощью пакета Filter Design

3.1 КИХ фильтр

АЧХ фильтра.

ФЧХ фильтра.

ИХ фильтра.

3.2 БИХ фильтр

Характеристики фильтра.

1. Л. А. Яковлев, «Реализация ЦФ на цифровом процессоре обработки сигналов. Методические указания к выполнению курсовои? работы», СПб, 2004.

2. Л. А. Яковлев, «Цифровые процессоры обработки сигналов. Методические указания к выполнению лабораторных работ», СПб, 2003.

3. А. И. Солонина, Л. А. Яковлев, Д. Улахович, «Алгоритмы и процессы цифровой обработки сигналов», СПб, 2002.

Показать весь текст
Заполнить форму текущей работой