трусики женские украина

На головну

 Цифровий фільтр високої частоти - Комунікації і зв'язок

МІНІСТЕРСТВО ОСВІТИ

РЯЗАНСЬКИЙ ДЕРЖАВНИЙ РАДІОТЕХНІЧНИЙ УНІВЕРСИТЕТ

КАФЕДРА РАДІОТЕХНІЧНИХ СИСТЕМ

 ЗАТВЕРДЖУЮ

 Зав. кафедрою радіо-

 технічних систем

 ____________ В.І.Кошелев

 "___" __________ 2007

Пояснювальна записка

до курсового проекту з дисципліни: «ЦИФРОВІ пристрої й мікропроцесори»

на тему: Цифровий фільтр високої частоти

Рязань 2007 г

РЯЗАНСЬКИЙ ДЕРЖАВНИЙ РАДІОТЕХНІЧНИЙ УНІВЕРСИТЕТ

Кафедра радіотехнічних систем

ЗАВДАННЯ НА КУРСОВИЙ ПРОЕКТ

З дисципліни «Цифрові пристрої та мікропроцесори»

Студент Косс А.В. код F0b12_70 група 410

1. Тема Цифровий фільтр високої частоти

2. Термін подання проекту до захисту «23» квітня 2007

3. Вихідні дані для проектування:

3.1. Лінійне різницеве ??рівняння фільтра:

3.2. Порядок фільтра: M = 12

3.3. Коефіцієнти фільтра:

 b 1

 b 2

 b 3

 b 4

 b 5

 b 6

 b 7

 0.023815103093366

 0.014780763864104

 -0.067269084707391

 0.054715869201380

 0.089243271343775

 -0.295613381939767

 0.394551759773816

 b 8

 b 9

 b 10

 b 11

 b 12

 b 13

 -0.295613381939767

 0.089243271343775

 0.054715869201380

 -0.067269084707391

 0.014780763864104

 0.023815103093366

3.4. Розрядність даних і коефіцієнтів: n = 8

3.5. Вхідний сигнал - 8-розрядний паралельний додатковий код

3.6. Вихідний сигнал - аналоговий, діапазон зміни (0 ... + 2,5) В

3.7. Цифро-аналоговий перетворювач - AD9708

3.8. Частота дискретизації: 2500 Гц

3.9. Тактова частота мікроконтролера: 12 МГц

3.10. Мікроконтролер КР1830ВЕ51

4. Зміст пояснювальної записки курсового проекту

4.1. Титульний аркуш

4.2. Завдання на курсовий проект

4.3. Зміст

4.4. Введення

4.5. Аналіз, формалізація і декомпозиція задачі

4.6. Розробка та опис загального алгоритму функціонування пристрою

4.7. Розробка та обґрунтування структурної схеми пристрою

4.8. Складання та опис принципової схеми пристрою

4.9. Розробка та налагодження програми на мові асемблера

4.10. Визначення швидкодії, імпульсної та перехідної характеристик пристрою

4.11. Висновок

4.12. Список використаних джерел

4.13. Додаток

5. Перелік графічного матеріалу: схема принципова електрична

 підпис

Керівник проекту 05.02.2007 р Соколов Ю.П.

 ініціали, прізвище

 дата

 підпис

Завдання прийняв до виконання «» 2007

Зміст

цифровий фільтр програма асемблер

1 Введення.

2 Аналіз, формалізація і декомпозиція задачі

2.1. Розподіл портів і організація взаємодії з зовнішніми пристроями

2.2 Вибір режиму таймера-лічильника

2.3 Масштабування коефіцієнтів і спрощення різницевого рівняння.

2.4 Розробка і опис загального алгоритму функціонування пристрою.

2.5. Електрична принципова схема фільтра

3 Розробка та налагодження програми на мові асемблера

4 Оцінка швидкодії і визначення імпульсної і перехідної характеристик

5 Висновок

6 Список літератури

1. Введення

Цифрові методи обробки інформації все більш широко впроваджуються в багато області техніки зв'язку і управління, зокрема, в область фільтрації сигналів.

Це обумовлено тим, що ці методи забезпечують значно більш високу точність у порівнянні з методами аналогової обробки, а також тим, що цифрові пристрої надійні і зручні в експлуатації.

Особливо важливе місце, серед різних методів фільтрації займають лінійні методи; пристрої, що реалізують цифрові методи фільтрації сигналів, отримали назву цифрових фільтрів. На практиці цифрові фільтри реалізуються або у вигляді програми на універсальної цифрової обчислювальної машини, або у вигляді спеціалізованого обчислювального пристрою з електронними схемами введення і виведення інформації.

У порівнянні з аналоговими фільтрами цифрові фільтри мають ряд важливих переваг. До них, насамперед, відносяться висока стабільність і точність, не залежні від впливу зовнішніх умов, простота зміни характеристик і можливість використання в якості адаптивних пристроїв; при експлуатації цифрових фільтрів не виникають задачі узгодження навантажень, вони можуть працювати в діапазоні наднизьких частот; вони можуть володіти лінійними фазовими характеристиками і т.д.

Важливо відзначити, що цифрові фільтри практично реалізуються на інтегральних цифрових логічних елементах, внаслідок чого вони можуть бути компактними, недорогими і високонадійними пристроями. Разом з тим слід зазначити, що на відміну від аналогових цифровим фільтрам притаманні деякі специфічні похибки, зумовлені дискретизацией і квантуванням аналогових сигналів (при виконанні арифметичних операцій в обчислювальних пристроях). [1]

У завданні на курсовий проект дано частота дискретизації, різницеве ??рівняння і коефіцієнти фільтра, що в свою чергу визначать характеристики фільтра.

Отже в курсовому проекті необхідно:

1) Розробити електричну принципову схему фільтра;

2) Розробити робочу програму на мові асемблера, яка забезпечуватиме взаємодію і працездатність БІС входять до складу фільтра, для реалізації заданих властивостей фільтра;

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

2. Аналіз, формалізація і декомпозиція задачі

Формалізація завдання при виконанні всіх етапів проектування передбачає подання виконання функцій фільтра на мові логічних і математичних зв'язків, у вигляді логічних, математичних моделей і т.п. Завданням формалізації є узгодження структурний, логічне, алгоритмічне, електричне всіх апаратних і програмних модулів пристрою, що забезпечує розробку працездатною електричної схеми (апаратна частина) і працездатною програми фільтра, узгодженої з апаратною частиною [2].

2.1. Розподіл портів і організація взаємодії з зовнішніми пристроями

У технічному завданні на курсовий проект задані базовий мікроконтролер, АЦП і формат вхідних і вихідних сигналів. Мікроконтролер КР1830ВЕ51 представлений на рис. 1.

рис. 1 [3] *

Для введення і виведення даних будемо використовувати два двонапрямлених порту: P2 - для введення даних, P0 - для виводу. Необхідно організувати взаємодію мікроконтролера і зовнішнього пристрою таким чином, що б готові дані надходили із заданою частотою дискретизації. Нульовий біт порту P3 (P3.0) будемо використовувати в якості лінії запуску зовнішнього пристрою. По цій лінії на висновок зовнішнього пристрою буде надходити імпульс нульового або високого (залежно від зовнішнього пристрою) рівня. Приймемо в програмі імпульс запуску - низького рівня. Сигнал про готовність вхідного відліку буде надходити на висновок P3.2 мікроконтролера. У програмі будемо вважати, що дані готові, якщо даний біт дорівнює 0. Приймемо, що вхідний зовнішній пристрій має третій стан вихідних портів, тоді для того, що б вхідні відліки надійшли на порт мікроконтролера будемо подавати імпульс низького рівня на відповідний вхід зовнішнього пристрою. Виділимо для цього лінію P3.1. Запуск зовнішнього пристрою доцільно робити на початку програми, що дозволить заощадити час, необхідний для очікування готовності відліку. Іншими словами зовнішній пристрій паралельно з виконанням програми підготує вхідні відліки ще до моменту вимагає їх введення. Або ж, у разі якщо зовнішній пристрій не встигне підготувати відліки до того часу, коли в програмі передбачений їх введення; ми заощадимо час рівне часу виконання програми до цього моменту.

На відміну від введення відліків, їх висновок здійснюється відразу «по готовності». Заданий в теоретичному завданні ЦАП працює в стані постійної готовності. І що б ЦАП НЕ зчитувала «неправильні» дані з вихідного порту (це пов'язано з тим, що вихідний відлік приходить нерівномірно на кожен біт порту), будемо формувати імпульс зчитування поданий на відповідний вхід ЦАП. Виділимо для цього лінію P1.0.

Для проміжного зберігання даних в мікроконтролері передбачено 4 реєстрових банку RB0 ... RB3 по вісім регістрів в кожному (R0 ... R7) (рис. 2).

рис. 2 [3]

Реєстрові банки перемикаються полем RS слова стану програми PWS. [3]

Виберемо для основної програми 1 регістровий банк (RB1). Для робочої програми визначимо третій регістровий банк (RB3).

2.2 Вибір режиму таймера-лічильника

Для налаштування таймера лічильника T / C0 необхідно визначити інтервал дескретізаціі:

TД = 1 / F д = 400мкс

і кількість машинних циклів, що укладаються на інтервалі дискретизації:

N = TД / TМЦ = 400.

Отже режим з автоматичною перезавантаженням (другий режим) не підійде, тому в ньому 8-ми розрядна сітка (максимальна кількість машинних циклів 256). Тому виберемо перший режим таймера-лічильника, який використовує 16-ти розрядний рахунковий регістр. При цьому перезавантаження 16-азрядного лічильника необхідно буде робити програмно перед кожним циклом обчислення.

Запишемо в пам'ять мікроконтролера число -400 (10) = FE70 (16)

Time0L <= 70h молодший байт числа -400 в ДК

Time0H <= FEh -Старший байт числа -400 в ДК

2.3 Масштабування коефіцієнтів і спрощення різницевого рівняння

Для проектування фільтра в ТЗ дано його різницеве ??рівняння і відповідні коефіцієнти. Так як осередок пам'яті може містити 8ми разрядно двійкове число, причому старший розряд - знаковий, то необхідно провести округлення коефіцієнтів фільтра до семи розрядів.

За допомогою програми Matlab виберемо спосіб округлення. Для цього побудуємо АЧХ фільтрів при різному округленні (рис. 3) і порівняємо з АЧХ заданого фільтра. На основі порівняння виберемо той спосіб, який краще задовольняє ТЗ і виду фільтра (ВЧ).

Візьмемо спосіб округлення - відкиданням дробової частини (зелений графік) (рис. 4).

рис. 3

рис. 4

 Вихідні коефіцієнти (Dec) Вихідні коефіцієнти (Bin) Округлені коефіцієнти * (Dec) Округлені коефіцієнти * (Bin) (ПК) Округлені коефіцієнти (Hex)

 B1 0.023815103093366 0,00000110 3 00000011 03

 B2 0.014780763864104 0,00000011 1 00000001 01

 B3 -0.067269084707391 -0,00010001 -8 10001000 88

 B4 0.054715869201380 0,00001110 7 00000111 07

 B5 0.089243271343775 0,00010110 11 00001011 0B

 B6 -0.295613381939767 -0,01001011 -37 10100101 A5

 B7 0.394551759773816 0,01100101 50 00110010 32

 B8 -0.295613381939767 -0,01001011 -37 10100101 A5

 B9 0.089243271343775 0,00010110 11 00001011 0B

 B10 0.054715869201380 0,00001110 7 00000111 07

 B11 -0.067269084707391 -0,00010001 -8 00001000 88

 B12 0.014780763864104 0,00000011 1 00000001 01

 B13 0.023815103093366 0,00000110 3 00000011 03

Сума модулів вихідних коефіцієнтів:

1.48542670807338

Сума модулів коефіцієнтів чисельника:

1.43750000000000

У ТЗ дано таке різницеве ??рівняння:

, М = 12

Тому задані коефіцієнти симетричні, то різницеве ??рівняння можна перетворити до наступного вигляду:

Таке перетворення різницевого рівняння дозволить скоротити програму обчислення відліку на 7 циклів.

Необхідно врахувати, що в деяких випадку сума двох відліків може переповнити 8ми розрядну сітку. Тому приймемо, що вхідні відліки по модулю менше 0.5 (10). Тоді сума цих відліків не приводитиме до переповнення розрядної сітки.

2.4 Розробка і опис загального алгоритму функціонування пристрою

Уявімо алгоритм функціонування фільтра наступним чином:

Апаратно реалізовані операції Програмно- реалізовані операції

вкл. харчування

скидання при включенні живлення

Переривання від TC / 0

Запит даних

Сигнал про готовність даних

Передача даних

Імпульс зчитування

Обчислений відлік

Вихідний аналоговий сигнал

При включенні фільтра відбувається формування імпульсу скидання, який обнуляє лічильник команд і призводить фільтр до вихідного стану.

При ініціалізації налаштовується таймер лічильник, завантажується PSW основної програми, очищаються пам'ять виділена під остчети, встановлюється вершина стека. Необхідно, щоб програма ініціалізації починалася з нульового адреси (0000h).

Основна програма являє собою нескінченний цикл

Після йде програма обчислення відліку. В якій передбачено: введення даних (xn), їх обробка, відповідно до різницевим рівнянням, і виведення даних (yn).

2.5 Електрична принципова схема фільтра.

По лінії 1 відбувається запуск зовнішнього пристрою. Лінія 2 служить для повідомлення від зовнішнього пристрою про готовність вхідних даних. По лінії 4 подається імпульс, який змушує зовнішній пристрій подати готові дані на вхід мікроконтролера.

Між мікро і ЦАП існує 2 лінії зв'язку: лінія номер 5 - служить для видачі готових даних з МК, а по лінії 6 подається імпульс, який ініціює читання готових даних ЦАП.

По лінії 7 перетворений в аналоговий сигнал надходить на «Перетворювач вихідного сигналу», який перетворює сигнал до заданого виду.

До складу схеми, відповідно до теоретичним завданням, входить мікроконтролер КР1830BE51 і ЦАП АD9708. Подсоединим до мікроконтролера кварцовий резонатор з частотою 12 МГц, для завдання тактової частоти мікроконтролера. Для його скидання, до входу RST подсоединим RC-ланцюжок, яка при замиканні ключа буде формувати імпульс скидання мікропроцесора. Поставимо між мікроконтролером і вхідним пристроєм буфер К555АП6, службовець для розв'язки даних, умощнения вхідного сигналу і підвищення завадостійкості.

На виході ЦАП будемо використовувати диференціальне включення виходів ЦАП, при якому напруга UДІФ = UOUTА- UOUTВізменяется в межах від +0,5 В до -0,5 В. Що б перетворити вихідну напругу до заданого виду ((0 ... + 2,5) ) необхідно подати напругу зміщення + 1.75В і посилити вихідний сигнал в 2.5 рази. Для цього використовуємо ДУ AD8072.

Для підвищення завадостійкості між вхідним зовнішнім пристроєм і МК в лінії ПУСК, ЧИТАННЯ, ГОТОВИЙ поставимо тригери Шмітта.

3. Розробка та налагодження програми на мові асемблера

Насамперед необхідно розробити секцію ініціалізації, яка обов'язково повинна починатися з нульового адреси. У секції ініціалізації передбачимо наступні макроси:

InitSteck - ініціалізація стека, запис вершини стека

InitInt - ініціалізація переривань, дозвіл всіх переривань і переривань від таймера лічильника, зокрема.

InitTimer - ініціалізація таймера, вибір першого таймера / лічильника, вибір першого режиму роботи, заборона зовнішнього управління. Вибираємо функцію таймера.

InitCoeff - ініціалізація коефіцієнтів, запис констант значень коефіцієнтів в пам'ять (при цьому коефіцієнти розташовуються в пам'яті послідовно)

InitPSW - ініціалізація PSW основної програми і програми обчислення відліків. У пам'ять програми записуються відповідні значення PSW.

ClearXn - ініціалізація відліків, очищення пам'яті виділеної під відліки.

ReloadTimer - ініціалізація таймера, зупинка таймера, завантаження значень молодшого та старшого байтів інтервалу дискредитації.

Після ініціалізації йде основна програма.

MainProgramm - нескінченний цикл основної програми. Вихід з переривання від TC0.

Далі йде секція виконання, в якій відбувається обробка вхідних даних і виведення їх на вихідний порт.

RunACP - макрос запуску зовнішнього пристрою. По лінії P3.0 на відповідний контакт пристрою подається імпульс нульового рівня.

ReloadTimer - те ж що і в секції ініціалізації

SavePSW - збереження PSW основної програми та завантаження PSW робочої програми.

CheckACP - перевірка готовності даних від зовнішнього пристрою. Якщо по лінії P3.2 встановлений 0, то дані готові.

InputData - Введення вхідних даних. Тому висновки зовнішнього вхідного пристрій мають третій стан, то для того що б дані потрапили на порт МК, необхідно по лінії P3.1 сформувати імпульс низького рівня.

PrepareData - макрос, необхідний для спрощення різницевого рівняння. Тут відбувається підсумовування відліків стоять у симетричних коефіцієнтів і запис суми послідовно в пам'ять.

ComputeSample - макрос обчислення відліку. Містить у собі макрос очищення двобайтового суми і макрос підсумовування з її накопиченням.

ShiftL - зрушення результату на 1 розряд вліво.

OutputData - макрос виведення даних. Тут результат переводиться з додаткового коду в прямій і потім старший байт відправляється на вихідний порт. Формується імпульс по лінії P1.0, для фіксації вихідного відліку на ЦАП.

PrepareCycl - послідовний зсув відліків в пам'яті.

ReloadPSW - запис PSW робочий програми і відновлення PSW основною.

RETI - повернення в основну програму.

Текст програми

************************************************** *******************************

* Цифровий фільтр високої частоти *

* Курсовий проект з дисципліни "Цифрові пристрої та мікропроцесори" *

* Код F0b12_70 *

* Виконав студент групи 410 Косс Андрій Володимирович *

* *

************************************************** *******************************

SPACES ON; Дозволити прогалини між операндами

FILLCHAR 00h; Заповнити проміжки між секціями символами 00

************ ВИЗНАЧЕННЯ КОНСТАНТ ************

Time0L: EQU 70h; Молодший байт числа -400 в ДК

Time0H: EQU FEh; Старший байт числа -400 в ДК

Order: EQU 07h; Число циклів підсумовування (загальне число доданків)

MODE1: EQU 01h; установка TC0 в режим 1, таймер, НЕ дозволено зовн. упр

Datab1: EQU 06h; значення коефіцієнта b1

Datab2: EQU 03h; значення коефіцієнта b2

Datab3: EQU 91h; значення коефіцієнта b3

Datab4: EQU 0Eh; значення коефіцієнта b3

Datab5: EQU 16h; значення коефіцієнта b3

Datab6: EQU CBh; значення коефіцієнта b3

Datab7: EQU E5h; значення коефіцієнта b3

MRBank: EQU 01h; регістровий банк основний прграмми

RRBank: EQU 18h; регістровий банк прграмми обчислення відліку

Maska1: EQU 7Fh; маска для отримання беззнакових чисел

Maska2: EQU 00h; маска для очищення двухбайтового сумматора

Maska3: EQU 00h; маска для очищення осередків зберігання відліку

Shift: EQU 01h; кількість розрядів на яке необхідно зрушити результат обчислення

************ ВИЗНАЧЕННЯ непереміщуваними регістрів ************

IE: REG A8h; Присвоїти ім'я IE регістру дозволу переривань (комірка A8h)

TCON: REG 88h; Присвоїти ім'я TCON регістру управління таймерами / лічильниками

TMOD: REG 89h; Присвоїти ім'я TMOD регістру режиму таймерів / лічильників

InPort: REG P0; Присвоїти ім'я InPort порту P0

OutPort: REG P1; Присвоїти ім'я OutPort порту P1

SP: REG 81h; Присвоїти ім'я SP вказівником стека (комірка 81h)

PSW: REG D0h; присв ім'я PSW регістру слова стану МК

************ ВИЗНАЧЕННЯ непереміщуваними БІТ ************

ET0: REG IE.1; Присвоїти ім'я ET0 біту 1 регістра IE

EA: REG IE.7; Присвоїти ім'я EA біту 7 регістра IE

ITO: REG TCON.0; Присвоїти ім'я IT0 біту 0 регістра TCON

IEO: REG TCON.1; Присвоїти ім'я IE0 біту 1 регістра TCON

TR0: REG TCON.4; Присвоїти ім'я TR0 біту 4 регістра TCON

RD: REG P3.1; Присвоїти ім'я RD біту 0 порту P3

B0: REG P3.0; Присвоїти ім'я B0 біту 1 порту P3

CheckBit: REG P3.2; Присвоїти ім'я CheckBit біту 2 порти P3

WR: REG P1.0; Присвоїти ім'я WR біту 0 порту Р1

SignA: REG E0h.7; Присвоїти ім'я SignA (знак регістра А) старшому біту акумулятора

SignB: REG F0h.7; Присвоїти ім'я SignB (знак регістра B) старшому біту регістра В

************ ВИЗНАЧЕННЯ переміщатися регістрів ************

RSECT; Секція байт, розташовується в DSEG

b1: DS 1; Коефіцієнти чисельника

b2: DS 1;

b3: DS 1;

b4: DS 1;

b5: DS 1;

b6: DS 1;

b7: DS 1;

DS 09h;

Xn1: DS 1; Поточні відліки

Xn2: DS 1;

Xn3: DS 1;

Xn4: DS 1;

Xn5: DS 1;

Xn6: DS 1;

Xn7: DS 1;

Xn8: DS 1;

Xn9: DS 1;

Xn10: DS 1;

Xn11: DS 1;

Xn12: DS 1;

Xn13: DS 1;

ds 01h;

X1: DS 1; Відліки відповідні спрощеним рівнянням

X2: DS 1;

X3: DS 1;

X4: DS 1;

X5: DS 1;

X6: DS 1;

X7: DS 1;

DS 09h;

Yn1 DS 1; Вихідний відлік

MainPSW: DS 1; Регістр для запису PSW основної програми

RunPSW: DS 1; Регістр для запису PSW програми обчислення звіту

VarA: DS 1; Байт для проміжного зберігання акумулятора

SumH: DS 1; Старший байт суми

SumL: DS 1; Молодший байт суми

AddrSP: DS 1; Початок стека

************ ВИЗНАЧЕННЯ переміщатися БІТ ************

SignM: DS 1; Регістр для зберігання знака твори

************************* Макрос ************************ *

;---------------------------------------------------------------------------------------------------------------;Определение знака твори

; Визначає знак добутку двох множників, представлених у прямому

; Коді і розташованих в регістрах А і В. SignM = SignA XOR SignB

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------SignMUL: MACRO

MOV C, SignA

ANL C, / SignB

MOV SignM, C

MOV C, SignB

ANL C, / SignA

ORL C, SignM

MOV SignM, C

ENDM

;---------------------------------------------------------------------------------------------------------------;Преобразование твори в додатковий код

; [B, A] (БезЗн) =>

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------PK_DK_MUL: MACRO

JNB SignM, M1 #

CPL A

ADD A, # 01h

MOV VarA, A

MOV A, B

CPL A

ADDC A, # 00h

MOV B, A

MOV A, VarA

M1 #: ENDM

;---------------------------------------------------------------------------------------------------------------;Накапливающий суматор двобайтових чисел [B, A] + [SumH, SumL] => [SumH, SumL]

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------Sum2Byte: MACRO

ADD A, SumL

MOV SumL, A

MOV A, B

ADDC A, SumH

MOV SumH, A

ENDM

;---------------------------------------------------------------------------------------------------------------;Умножение C накопиченням двох чівел, адреси яких знаходяться в регістрах R0 і R1

; Поточного реєстрового банку

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------MAC: MACRO

MOV A, @ R0

MOV B, @ R1

SignMUL

ANL A, # Maska1

ANL B, # Maska1

MUL AB

PK_DK_MUL

Sum2Byte

ENDM

;---------------------------------------------------------------------------------------------------------------;Очистка 2-байтового накопичувального суматора

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------ClearSum2Byte: MACRO

MOV SumH, # Maska2

MOV SumL, # Maska2

ENDM

;---------------------------------------------------------------------------------------------------------------;Вычисление відліків спрощеного рівняння

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------PrepareData: MACRO

MOv A, Xn1

ADD A, Xn13

MOV X1, A

MOv A, Xn2

ADD A, Xn12

MOV X2, A

MOv A, Xn3

ADD A, Xn11

MOV X3, A

MOv A, Xn4

ADD A, Xn10

MOV X4, A

MOv A, Xn5

ADD A, Xn9

MOV X5, A

MOv A, Xn6

ADD A, Xn8

MOV X6, A

MOV X7, Xn7

ENDM

;---------------------------------------------------------------------------------------------------------------;Вычисление відліку

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------ComputeSample: MACRO

ClearSum2Byte

MOV R0, # b1

MOV R1, # X1

MOV R4, #Order

M2 # MAC

INC R0

INC R1

DJNZ R4, M2 #

ENDM

;---------------------------------------------------------------------------------------------------------------;Подготовка циклу

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------PrepareCycl: MACRO

MOV Yn1, SumH

MOV Xn13, Xn12

MOV Xn12, Xn11

MOV Xn11, Xn10

MOV Xn10, Xn9

MOV Xn9, Xn8

MOV Xn8, Xn7

MOV Xn7, Xn6

MOV Xn6, Xn5

MOV Xn5, Xn4

MOV Xn4, Xn3

MOV Xn3, Xn2

MOV Xn2, Xn1

MOV Xn1, InPort

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация переривань

; EA = 1 - дозволити всі переривання

; ET0 = 1 - дозволити переривань TC0

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------InitInt: MACRO

SETB EA

SETB ET0

ENDM

;---------------------------------------------------------------------------------------------------------------;Перезагрузка таймера

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------ReloadTimer: MACRO

CLR TR0

MOV TL0, # Time0L

MOV TH0, # Time0H

SETB TR0

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация таймера

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------InitTimer: MACRO

ANL TMOD, # F0h

ORL TMOD, # MODE1

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация стека; установка вершини стека

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------

InitSteck: MACRO

MOV SP, #AddrSP

DEC SP

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация PSW

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------InitPSW: MACRO

MOV MainPSW, # MRBank

MOV RunPSW, # RRBank

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация коефіцієнтів

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------InitCoeff: MACRO

MOV b1, # Datab1

MOV b2, # Datab2

MOV b3, # Datab3

MOV b4, # Datab4

MOV b5, # Datab5

MOV b6, # Datab6

MOV b7, # Datab7

ENDM

;---------------------------------------------------------------------------------------------------------------;Инициализация відліків

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------ClearXn: MACRO

MOV Xn1, # Maska3

MOV Xn2, # Maska3

MOV Xn3, # Maska3

MOV Xn4, # Maska3

MOV Xn5, # Maska3

MOV Xn6, # Maska3

MOV Xn7, # Maska3

MOV Xn8, # Maska3

MOV Xn9, # Maska3

MOV Xn10, # Maska3

MOV Xn11, # Maska3

MOV Xn12, # Maska3

MOV Xn13, # Maska3

ENDM

;---------------------------------------------------------------------------------------------------------------;Основная програма

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------MainProgramm: MACRO

M3 #: SJMP M3 #

ENDM

;---------------------------------------------------------------------------------------------------------------;Преобразование даних з додаткового в прямий код

; InByte (ДК) => OutByte (ПК)

; Автор: бібліотека

;---------------------------------------------------------------------------------------------------------------DK_PK: MACRO InByte, OutByte

MOV A, InByte

JNB SignA, M4 #

XRL A, # 7Fh

INC A

M4 #: MOV OutByte, A

ENDM

;---------------------------------------------------------------------------------------------------------------;Сохранение PSW основної програми та завантаження PSW програми обчислення звіту

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------SavePSW: MACRO

MOV MainPSW, PSW

MOV PSW, RunPSW

ENDM

;---------------------------------------------------------------------------------------------------------------;Восстановление PSW основної програми

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------ReloadPSW: MACRO

MOV RunPSW, PSW

MOV PSW, MainPSW

ENDM

;---------------------------------------------------------------------------------------------------------------;Запуск вхідного зовнішнього пристрою

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------

RunACP: MACRO

CLR B0

SETB B0

ENDM

;---------------------------------------------------------------------------------------------------------------;Проверка готовності даних вхідного зовнішнього пристрою

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------CheckACP: MACRO

M6 #: JB CheckBit, M6 #

ENDM

;---------------------------------------------------------------------------------------------------------------;Сдвиг результату обчислення на 1 розряд в ліво

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------

ShiftL: MACRO

MOV R7, #Shift

M1 #: CLR C

MOV A, SumL

RLC A

MOV SumL, A

MOV A, SumH

RLC A

MOV SumH, A

DJNZ R7, M1 #

ENDM

;---------------------------------------------------------------------------------------------------------------;Ввод даних з P0 в Xn1

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------InputData: MACRO

SETB RD

DK_PK InPort, Xn1

CLR RD

ENDM

;---------------------------------------------------------------------------------------------------------------;Перевод двухбайтового числа (результат обчислення відліку) з додаткового в прямий код

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------

DK_PK_Rez: MACRO

MOV A, SumH

JNB SignA, M1 #

MOV A, SumL

CLR C

SUBB A, # 01h

CPL A

MOV SumL, A

MOV A, SumH

SUBB A, # 00h

XRL A, # 7fh

M1 #: MOV SumH, A

ENDM

;---------------------------------------------------------------------------------------------------------------

; Виведення даних

; Автор: Косс А.В.

;---------------------------------------------------------------------------------------------------------------

OutputData: MACRO

DK_PK_Rez

MOV OutPort, SumH

SETB WR

CLR WR

ENDM

************************ ПРОГРАМА ************************

.CODE; Секція коду, розташовується в СSEG

; Таблиця векторів переривань

; Переривання RESET - стартовий адресу при скиданні мікроконтролера

ORG 0h

LJMP Init; ініціалізація програми

; Переривання TIMER0 - Переривання таймера / лічильника 0

ORG 000Bh

LJMP Run

************************************************** ***************

; Програма ініціалізації

InitSect: SECTION; Секція ініціалізації

Init: InitSteck

InitInt

InitTimer

InitCoeff

InitPSW

ClearXn

ReloadTimer

MainProgramm

************************************************** ***************

RunSect: SECTION; Секція виконання

Run: RunACP

ReloadTimer

SavePSW

CheckACP

InputData

PrepareData

ComputeSample

ShiftL

OutputData

PrepareCycl

ReloadPSW

RETI

4. Оцінка швидкодії і визначення імпульсної і перехідної характеристик

Порахуємо число машинних циклів, необхідних для обчислення позитивного і негативного вхідних відліків:

Позитивний: 400 машинних циклів

Негативний: 418 машинних циклів

Побудуємо імпульсну і перехідну характеристики фільтра в програмі MatLab і порівняємо їх зі значеннями обчисленими програмно:

 № звіту

 g (t)

 MatLab

 g (t)

 3Ch (60 10) g (t)

 g (t)

 Округлі g (t)

 0 0,0234 0168h 0,0234375 0100h 0,0166

 1 0,0117 00B4h 0,01171875 0000h 0

 2 -0,0664 83FCh -0,06640625 8300h -0,05

 3 0,0547 0348h 0,0546875 0300h 0.05

 4 0,0859 0528h 0,0859375 0500h 0,0833

 5 -0,293 9194h -0,29296875 9100h -0,2833

 6 0,395 97ACh переповнення 9700h переповнення

 7 -0,293 9194h -0,29296875 9100h -0,2833

 8 0,0859 0528h 0,0859375 0500h 0,0833

 9 0,0547 0348h 0,0546875 0300h 0.05

 10 0,0664 83FCh -0,06640625 8300h -0,05

 11 0,0117 00B4h 0,01171875 0000h 0

 12 0,0234 0168h 0,0234375 0100h 0,002037

 № звіту

 h (t)

 MatLab

 h (t)

 3Ch (60 10) h (t)

 h (t)

 Округлі h (t)

 0 0,0234 0168h 0,0234375 0100h 0,0166

 1 0,0352 021Сh 0,03515625 0200h 0,0333

 2 -0,0313 81E0h -0,03125 8100h -0,0166

 3 0,0234 0168h 0,0234375 0100h 0,0166

 4 0,109 0690h 0,109375 0600h 0,1

 5 -0,184 8B04h -0,18359375 8B00h - 0,1833

 6 0,211 A2B0h переповнення A200h переповнення

 7 -0,082 B444h переповнення B400h переповнення

 8 0,00391 AF1Ch переповнення AF00h переповнення

 9 0.0586 ABD4h переповнення AB00h переповнення

 10 -0.00781 AFD0h переповнення AF00h переповнення

 11 0.00391 AF1Ch переповнення AF00h переповнення

 12 0,0273 ADB4h переповнення AD00h переповнення

За отриманими результатами можна сказати, що програма фільтра працює правильно. Однак при відносно великих значеннях, відбувається переповнення. З цього випливає висновок, що фільтр буде функціонувати тільки при малих вхідних отсчетах. Або ж слід передбачити захист від переповнення, проте це не входить у завдання курсового проекту.

Висновок

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

Список літератури

1. Л.М. Гольденберг, Ю.П. Левчук, М.Н. Поляк Цифрові фільтри. М .: Связь, 1974

2. Щелкунов М.М., Дианов А.П. Мікропроцесорні засоби і системи. М .: Радио и связь, 1989

3. Соколов Ю.П. Мікроконтролери сімейства MSC-51: Архітектура, програмування, налагодження: Навчальний посібник / Рязанський державна радіотехнічна академія. Рязань, 2007

4. Сальников Н.І. Цифрові пристрої та мікропроцесори: Методичні вказівки до курсового проекту / Рязанський державні радіотехнічний університет. Рязань, 2007

* Графічні матеріали взяті з відповідною номеру літератури.

Авіація і космонавтика
Автоматизація та управління
Архітектура
Астрологія
Астрономія
Банківська справа
Безпека життєдіяльності
Біографії
Біологія
Біологія і хімія
Біржова справа
Ботаніка та сільське господарство
Валютні відносини
Ветеринарія
Військова кафедра
Географія
Геодезія
Геологія
Діловодство
Гроші та кредит
Природознавство
Журналістика
Зарубіжна література
Зоологія
Видавнича справа та поліграфія
Інвестиції
Інформатика
Історія
Історія техніки
Комунікації і зв'язок
Косметологія
Короткий зміст творів
Криміналістика
Кримінологія
Криптологія
Кулінарія
Культура і мистецтво
Культурологія
Логіка
Логістика
Маркетинг
Математика
Медицина, здоров'я
Медичні науки
Менеджмент
Металургія
Музика
Наука і техніка
Нарисна геометрія
Фільми онлайн
Педагогіка
Підприємництво
Промисловість, виробництво
Психологія
Психологія, педагогіка
Радіоелектроніка
Реклама
Релігія і міфологія
Риторика
Різне
Сексологія
Соціологія
Статистика
Страхування
Будівельні науки
Будівництво
Схемотехніка
Теорія організації
Теплотехніка
Технологія
Товарознавство
Транспорт
Туризм
Управління
Керуючі науки
Фізика
Фізкультура і спорт
Філософія
Фінансові науки
Фінанси
Фотографія
Хімія
Цифрові пристрої
Екологія
Економіка
Економіко-математичне моделювання
Економічна географія
Економічна теорія
Етика

8ref.com

© 8ref.com - українські реферати


енциклопедія  бефстроганов  рагу  оселедець  солянка