Розробка та синтез високоточних DDS генераторів(Direct
digital synthesis)
на CPLD фірми Altera.
Використані
матеріали:
Download project file -> dds_my.rar
Рис.1 Схема DDS функціональна
Функціональна
схема DDS (генератора прямого
синтеза), показана на рис.1 основні елементи схеми це “Суматор”, “Регістр”, “Пам'ять (таблиця синусів)”,
“Вхідний регістр” може і не використовуватись оскільки вхідний вектор частоти
може задаватися напряму через входи (джампери). Розрахуємо розрядність в бітах
усіх основних елементів схеми, і почнемо з тактової частоти, нехай Fclk = 12500000 Гц або 12,5 MHz.
Основний елемент схеми “Суматор” буде сумувати значення “Регістр” із кроком в
“Вхідний регістр” (він же буде індикатором вихідної частоти, тобто коли на
вході буде 0000 0000 0000 0000 0000 0001, то частота виходу DDS буде 1 Гц
і крок буде також 1 Гц). При такій умові в схемі потрібно проводити перевірку
на виході “Регістра”, при переповненні значення більше ніж на число 12 500 000,
потрібно записати в “Регістр” значення всіх розрядів в “0”. Для визначення
розрядності елементів схеми переведемо 12 500 000(10) = 1011 1110 1011 1100
0010 0000(2), отримаємо 24 розряди(біти). Отже елементи “Суматор” та “Регістр”
будуть 24 бітними, оскільки максимальне значення для 24 біт (1111 1111 1111 1111 1111 1111 ) в
десятковому форматі буде 16 777 215(10), саме тому ми ввели функцію запис в
“Регістр” всіх 24 біт в “0”. Далі в “Пам'ять (таблиці синусів)” поступає кодове
значення із 8 старших бітів “Регістра” які далі виділені 1011 1110 1011 1100 0010 0000(2) перевівши із двійкового 1011
1110(2) в десятковий формат отримаємо число 190 це і буде кількість кроків в
повному періоді (2p) тобто
дискретність. При збільшенні кодового слова на один біт, тобто взявши 9 старших біти
“Регістра” 101111101,
дискретність періоду збільшиться і буде складатись із 381-го кроку за повний
період (2p). При необхідності дискретність можна збільшувати
і далі, але при цьому слід пам’ятати, що буде збільшуватись і “Пам'ять (таблиці
синусів)”. Скориставшись інформацією в джерелах [6],[7] побудуємо таблицю
синусів (8x7 - тобто вхідні кодові (дискретні) комбінації 8
бітні, а вихідні квантові 7 бітні ) в Microsoft Excel (файл DDS_table.xls доданий до архіву проекту). Результат побудови графіка показано на
рис.2 в якому Ряд1- результати без округлення, Ряд2- результати з округленням.
Рис.2 Графіки таблиці синусів
Після отриманих
результатів розрахунку в Excel, створимо
файл проекту в AlteraHDL коді за основу взявши
методику [1] і розробку дешифраторів (decoder) в AlteraHDL. Отримаємо
такий код
в файлі functab7x6.tdf проекту:
Провівши всі необхідні
розрахунки схеми спроектуємо схему в середовищі Max+plusII Altera в графічному середовищі файл dds.gdf. Принципова схема генератора DDS відображена на рис.3.
Рис.3
Схема принципова DDS.
Результати симуляції схеми рис.4
Рис.4 Симуляція схеми.
Із схеми видно що був
доданий ще один регістр out_ddf 7 біт, типу DFF на вихід для збереження вихідних результатів із таблиці синусів functab7x6.tdf. Він потрібен для того щоб зменшити шуми які виникають в
наслідок затримок в середині CPLD і
виводу їх на ЦАП (DAC). Нижче буде наведена схема
без регістра і результати симуляції рис.5 схема без вихідного регістра, рис. 6
результати симуляції схеми.
Рис.5 Схема без вихідного регістра.
Рис.6 Результати симуляції схеми.
На наступних двох
рисунках показано як перехідні процеси і затримки в схемі впливають на вихідні
результати в збільшеному вигляді. І як вихідних регістр фільтрує результати.
Відповідно рис.7 перехідні процеси в збільшеному вигляді з вихідним регістром ;
рис.8 перехідні процеси в збільшеному вигляді без вихідного регістра.
Рис.7 Перехідні процеси в збільшеному вигляді з
вихідним регістром.
Рис.8
Перехідні процеси в збільшеному вигляді без вихідного регістра.
Інформація про
результати синтезу
Chip
Input Output Bidir Shareable
POF Device Pins
Pins Pins LCs
Expanders % Utilized
dds EPM9320LC84-15 22 32 0 167 83 52 %
User Pins: 22 32 0
Немає коментарів:
Дописати коментар