Шукати в цьому блозі

пʼятниця, 3 серпня 2012 р.

PDM ( Pulse density modulation ) controller, besed on error diffusion algorithm ( Part II ).


 PDM контроллер на основі алгоритму дефузії помилки.

[1] http://www.icct.ru/Practicality/Papers/01-11-2010/Invertor-03.php

Модуляція щільності  іимпульсів (PDM – Pulse Density Modulation)

Проект розроблено в Altera MAX+plusII. 
Download project  -->  PDM_error_diffusion.rar

Схему принципову PDM модулятора на основі алгоритма дефузії помилки було розроблено на основі інформації [1]. Де алгоритм роботи дуже детально описаний. Цей алгоритм був реалізований в статті на базі мікроконтроллера. Тому в цій статті буде запропонована схема рис.1 реалізації алгоритму для CPLD/FPGA фирми Аltera. Запропонована реалізація схеми вийшла достатньо компактною тому для  синтезу схеми в конкретну CPLD достатньо серії MAX3064


Рис.1 Схема принципова модулятора PDM на основі алгоритму дифузії помилки

 Як і в [1] попередній розрахунок було проведено в Excel, файл error_diffusion.xls проекту доданий в архів. На рис. 2  наведено алгоритм роботи і часова діаграма симуляції проекту, з якого видно що при вхідному значенні 60 в комірці С4, бітова комбінація на виході модулятора стовпчик G ( позначено 4) співпадає з результатами часової діагарми, яка наведена під таблицею.


Рис.2 Таблиця із роботою алгоритма і часовою діаграмою.

 Для синхронізації елементів схеми , алгоритм роботи  було розбито на 4 кроки, відповідно в схемі було введено елемент лічильник prog_counter як мікропрограмний автомат, який синхронізує всі елементи схеми. При цьому вихідна частота модулятора в чотири рази менша  в порівнянні із вхідною частотою. Тобто на один вихідний імпульс витрачається чотири вхідних.

Алгоритм роботи (псевдокод):
Крок1. Додаєм вхідне значення із значенням яке записане в регістрі помилки(dff_pdm елемент схеми), якщо  в регістрі значення <149 . Якщо значення в регістрі >149 тобто записане відємне число, тоді віднімаєм від вхідного значення ,  яке записане в регістр помилки, але при цьому число інвертується і додається 1.
Крок2-3. Первірка якщо результат після Кроку1, >50 тоді відняти 100 , якщо <50 і >149 тоді відняти 0.
Крок4. Запис результату в регістр помилки після Кроку2-3.


Немає коментарів:

Дописати коментар