Пристрій поділу цифрового потоку даних

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Частина 1. Опис пристрою та принципів його роботи

1.1 Обгрунтування вибору теми

1.2 Короткий опис та можливі варіанти виконання

1.2.1 Підключення мікросхеми ЦАП AD1851

1.2.1.1 Спосіб 1. Переривання тактового сигналу

1.2.1.2 Спосіб 2. Використання регістра зсуву

1.2.1.3 Спосіб 3. Регістр зсуву для підключення по шині I2S

1.2.2 Підключення мікросхеми ЦАП AD1852 (AD1853)

Частина 2. Схемна реалізація

2.1 Визначення вимог до застосовуваних цифровим мікросхем

2.2 Схеми електричні принципові

2.2.1 Схема пристрою поділу потоку даних для підключення мікросхеми ЦАП AD1851

2.2.2 Схема пристрою поділу потоку даних для монофонічного підключення мікросхеми ЦАП AD1852 (AD1853)

2.2.3 Загальні зауваження до схем

Частина 3. Тимчасові діаграми

3.1 Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD1851

3.2 Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD1852

Частина 4. Реалізація схеми в проекті VHDL

Висновки

Частина 1. Опис пристрою та принципів його роботи

1.1 Обгрунтування вибору теми

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

На жаль, людині, яка бажає якісно слухати улюблені записи, зараз доводиться або змиритися з вищесказаним, або платити досить великі суми за якісну апаратуру. Є правда і ще один варіант: цю апаратуру можна зібрати своїми руками на сучасній елементній базі.

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

Найбільш часто зустрічається ситуація, коли приймач цифрового сигналу здатний видавати дані в форматі IIS (найбільш універсальний і повнофункціональний формат), а мікросхема ЦАП здатна приймати дані в форматі Right Justifited. Також слід врахувати те, що приймач сигналу видає дані обох стерео каналів по одній шині в той час як найбільш якісні мікросхеми ЦАП є монофонічними. Саме питанню перетворення цифрового потоку з формату IIS в Right Justifited з одночасним поділом на канали і присвячена половина даної курсової роботи. Друга половина присвячена поділу каналів у разі використання монофонічного включення стерео-ЦАП.

1.2 Короткий опис та можливі варіанти виконання

У рамках даної курсової роботи передбачається використовувати мікросхеми ЦАП AD 1851 (1916 bit mono) і AD 1852 (1924 bit 192 kHz stereo) виробництва Analog Devices.

1.2.1 Підключення мікросхеми ЦАП AD 1851

Розглянемо цифровий інтерфейс AD 1851:

Схематично внутрішній устрій мікросхеми можна представити наступним чином:

Рис. 1. - Внутрішня структура AD 1851

Згідно з документацією мікросхема має три цифрових входу: CLK, DATA і LE. Дані надходять у вхідний послідовний регістр зсуву через вхід DATA і тактується по передньому фронті сигналу CLK. Ємність вхідного регістра становить 16 біт. Коли у вхідний регістр повністю завантажені дані, по задньому фронті сигналу LE інформація переноситься в паралельний 16 бітовий регістр безпосередньо модуля ЦАП, при цьому вихідна величина (мікросхема здатна працювати як у варіанті з струмовим виходом, так і у варіанті з виходом по напрузі) оновлюється і утримується до наступного перепаду сигналу LE від високого рівня до низького. Тимчасова діаграма необхідних вхідних сигналів представлена ​​на малюнку 2:

Рис. 2. - Тимчасова діаграма вхідних сигналів AD1851

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

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

Найбільш простим для роботи вихідним форматом даних цифрових приймачів є формат Right Justifited:

Рис. 3. - Формат передачі даних Right Justifited

У цьому форматі дані лівого і правого каналів передаються послідовно по одному провідникові SDATA, дані якого саме каналу передаються в даний момент, визначає стан сигналу LRCLK, тактові імпульси передаються за допомогою сигналу SCLK. Першими передаються дані лівого каналу (LRCLK = '1 '), потім правого (LRCLK = 0 "). Дані надходять у форматі MSB First, і вирівняні щодо перепаду сигналу LRCLK по правому (задньому) фронту.

Для правильного перетворення даних необхідно завантажити дані кожного каналу в свою мікросхему ЦАП і одночасно подати сигнал поновлення LE. В іншому випадку ми отримаємо зсув по фазі між аналоговими сигналами правого і лівого каналів, залежить від частоти сигналу.

Класичний випадок описаний Паулем Шкрітеком в "Довідковому посібнику звуковий схемотехніці", видавництво "Світ", голова 17.7.1 "Перетворювачі Ц / А в мультиплексному режимі". Цитата: "Якщо дані на ЦАП двох каналів надходять зі зсувом у часі на dT, то між каналами виникає зсув по фазі, що залежить від частоти: dF = 360 * f * dT". І далі: "У разі, коли обидва каналу обслуговує один ЦАП, що працює з тимчасовим ущільненням, тимчасової зрушення у нормальних умовах складає dT = T / 2 = 11.3 мксек, що викликає фазовий зсув між сигналами лівого і правого каналу dF = 82 градуси на частоті 20кГц ".

Існує кілька способів зробити необхідне з'єднання.

1.2.1.1 Спосіб 1. Переривання тактового сигналу

Як вже відомо, дані в мікросхемі ЦАП спочатку потрапляють у вхідний послідовний регістр, тактируемого сигналом CLK. У форматі Right Justifited дані передаються вирівняними по правому фронті сигналу LRCLK, дані лівого каналу першими, дані правого каналу наступними. Вихід мікросхем ЦАП необхідно оновити по завантаженню даних обох каналів, тобто по наростаючому фронті сигналу LRCLK. При відсутності сигналу CLK дані у вхідний регістр ЦАП вантажитися не будуть. При завантаженні в регістр понад 16 біт даних, у вхідному регістрі залишаються лише останні 16 біт інформації. Таким чином, необхідно завантажити дані лівого каналу в одну мікросхему ЦАП, потім перервати надходження тактових імпульсів на неї і дочекатися завантаження даних правого каналу в другу мікросхему. Сигналом оновлення при цьому буде інвертований сигнал LRCLK. Він же буде керуючим для переривника тактових імпульсів. Входи даних обох мікросхем ЦАП при такому включенні паралелями.

Дану операцію можна зробити за допомогою всього однієї логічної мікросхеми:

Рис. 4. - Формування сигналів методом переривання тактових імпульсів

На жаль, даний метод не є ідеальним, оскільки деякі мікросхеми ЦАП відмовляються працювати в такому включенні. Наприклад, Алекс Петровський на своєму сайті писав, що в такому включенні відмовилися працювати мікросхеми PCM1704 виробництва Burr-Brown і AD 1856 виробництва Analog Devices. Це відбувається в основному через вимогу безперервності тактового сигналу або з-за підвищеної чутливості логічних ланцюгів мікросхеми до тимчасових співвідношенням між сигналами.

1.2.1.2 Спосіб 2. Використання регістра зсуву

Для використання цього методу також зручно скористатися вихідним форматом Right Justifited приймача цифрових сигналів. При цьому необхідно відзначити, що стандартною довжиною послідовності даних за один відлік є 64 біта. При цьому на кожен канал доводиться по 32 тактових імпульсу. Перші 16 імпульсів при цьому не використовуються, за рештою 16 передаються дані. При цьому перший біт даних правого каналу передається через 32 тактових імпульсу після першого біта даних лівого каналу. Таким чином, якщо затримати всю послідовність даних на 32 тактових імпульсу, то на виході схеми затримки будуть дані лівого каналу в той момент, коли у вихідному сигналі будуть передаватися дані правого каналу. В якості такої схеми дуже зручно використовувати 32 розрядний зсувний регістр. Оновлення виходу мікросхем ЦАП відбувається по наростаючому фронті сигналу LRCLK. Схематично це можна зобразити наступним чином:

Рис. 5. - Використання 32 розрядного сдвигового регістра для поділу цифрового потоку

1.2.1.3 Спосіб 3. Регістр зсуву для підключення по шині I 2 S

У деяких випадках необхідно приймати дані не у форматі Right Justifited, а у форматі I 2 S. Така необхідність виникає при побудові ЦАП не у вигляді окремого модуля, а як частини готового програвача компакт-дисків або якого-небудь іншого цифрового аудіо пристрою. Крім того, даний формат передачі обов'язково підтримується цифровими приймачами та інтерфейсним мікросхемами. Таким чином, один раз грамотно спроектована рішення для підключення безпосередньо на шину I 2 S буде не тільки найбільш правильним, а й найбільш універсальним. Пристрій на основі такого рішення вже доцільно виконати у вигляді ПЛМ і надалі використовувати як якийсь "чорний ящик" виконує всі необхідні процедури.

Розглянемо формат передачі даних I 2 S:

Рис. 6. - Формат передачі даних I2S

У цьому форматі дані лівого і правого каналів передаються послідовно по одному провідникові SDATA, дані якого саме каналу передаються в даний момент, визначає стан сигналу LRCLK, тактові імпульси передаються за допомогою сигналу SCLK. Першими передаються дані лівого каналу (LRCLK = 0 "), потім правого (LRCLK = '1 '). Дані надходять у форматі MSB First, і вирівняні щодо перепаду сигналу LRCLK по лівому (переднього) фронту і затримані на 1 тактовий імпульс.

Легко помітити, що даний формат відрізняється від Right Justifited лише вирівнюванням послідовності даних і інвертованим станом сигналу LRCLK. Таким чином, для перетворення формату I 2 S до формату Right Justifited досить затримати всю послідовність даних на (32 - [розрядність ЦАП] -1) тактових імпульсу і інвертувати сигнал, що визначає дані якого каналу передаються в даний момент. Далі можна використовувати вже наявний варіант зі зсувними регістром.

З урахуванням того, що мінімальна розрядність сучасних мікросхем аудіо ЦАП складає 16 біт, використання 16 бітного сдвигового регістру дозволяє вибором перемички здійснювати підключення ЦАП будь розрядності (від 16 до 24 біт) до 16 бітному джерела даних без втрати якості. Також можливе підключення джерела сигналу більшої розрядності до мікросхеми ЦАП меншою розрядності з втратою тільки молодших біт даних, що в деяких випадках також може виявитися зручним, оскільки дає сумісність з новими форматами.

Структурна схема такого перетворювача форматів даних представлена ​​на наступному малюнку:

Рис. 7. - Універсальний зсувний регістр

1.2.2 Підключення мікросхеми ЦАП AD 1852 (AD 1853)

Мікросхема ЦАП AD 1852 являє собою стереофонічний дельта-сигма ЦАП з вбудованим цифровим фільтром і виходом по напрузі. AD 1853 відрізняється від неї лише струмовим виходом. Дані мікросхеми підтримують всі існуючі на сьогоднішній день найбільш популярні аудіо формати, включаючи 24 bit 192 kHz, що робить їх дуже зручним рішенням для побудови універсального модуля ЦАП придатного як для високоякісного прослуховування аудіо компакт-дисків, так і для перегляду фільмів у форматі DVD.

Мікросхеми спочатку мають досить високі якісні параметри і підключаються безпосередньо до шини I 2 S. Тим не менш, при бажанні отримання максимального можливо якості, можливо додаткове поліпшення характеристик кінцевого пристрою шляхом застосування монофонічного включення даних мікросхем. При цьому необхідно в кожну мікросхему двічі завантажувати дані відповідного їй каналу, перший раз у початковому вигляді, другий раз на інвертованому. Так само, як і у випадку з підключенням AD 1851, необхідно стежити за одночасністю надходження даних обох каналів.

Монофонічне підключення мікросхеми AD 1852 показано на наступному малюнку (взято з файлу технічної документації від Analog Devices):

Рис. 8. - Монофонічний підключення AD1852

Для здійснення необхідних маніпуляцій над даними складемо пристрій на основі регістра зсуву. Його загальна структурна схема наведена на рис. 9. Як видно з тимчасової діаграми роботи, максимальний інтервал часу, протягом якого необхідно зберігати дані, становить 1 фрейм, або 1 період сигналу LRCLK, або 64 періоду сигналу SCLK. При цьому інвертовані дані зрушені на 32 періоду сигналу SCLK щодо даних вихідних. Дані поділяються наступним чином:

  • Дані знімаються одночасно з декількома часовими затримками, потрібна порція даних вибирається схемою вибірки

Рис. 9. - Структурна схема пристрою розділення даних

  • У той момент часу, коли на вхідних шині передаються дані правого каналу, на виході першого 32 розрядного сдвигового регістру будуть знаходитися дані лівого каналу

  • Під час передачі на вхідних шині даних лівого каналу на вихід першого сдвигового регістру будуть дані правого каналу попереднього відліку, а на виході другого регістру ще тільки дані лівого каналу попереднього відліку

  • Які саме дані подавати на вихідні шини, визначає схема вибірки (також за 1й на кожен канал)

  • Управління інверторами і схемами вибірки здійснюється від сигналу LRCLK

  • Сам сигнал LRCLK на вихідні шини надходить в інвертованому вигляді

Частина 2. Схемна реалізація

2.1 Визначення вимог до застосовуваних цифровим мікросхем

Оскільки обробка даних відбувається лише вибором необхідної послідовності і не передбачає безпосередньої зміни бітів інформації у кожній посилці, даний пристрій не вносить спотворень у вихідний сигнал блоку ЦАП прямим чином. Тим не менш, слід враховувати, що музичний сигнал визначається не тільки змістом пакетів даних, а й часом їх приходу. Таким чином, необхідно враховувати частотні властивості застосовуваних мікросхем. Необхідна мінімальна швидкодія регістрів становить 64 Fs, а краще мати запас в 3-4 рази. Для сигналів при перегляді фільмів у форматі DVD Fs становить 192 KHz. Отже, регістри повинні працювати з частотами не менше 13 MHz. З урахуванням бажаності запасу за швидкодією, слід вибирати мікросхеми, здатні працювати на частотах 40 MHz і вище.

Важливо пам'ятати, що дані на шині SDATA є правильними під час наростаючого фронту імпульсу SCLK. Отже, завантаження в регістр необхідно також проводити по наростаючому фронті.

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

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

З урахуванням усього, вище сказаного, зупиняємося на сдвиговом регістрі 74 HC 164. Він являє собою 8-бітний зсувний регістр з паралельним виходом, виконаний по КМОП технології і здатний працювати на частотах до 50 MHz. Функціональним аналогом даного регістра є мікросхема К155ІР8.

Логічні мікросхеми будемо використовувати також серії 74 HC, що дозволить уникнути проблем узгодження рівнів. Швидкодія логічних вентилів цієї серії дозволяє працювати на частотах до 100 MHz і вище.

2.2 Схеми електричні принципові

2.2.1 Схема пристрою поділу потоку даних для підключення мікросхеми ЦАП AD 1851

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

Для забезпечення стійкості даних під час завантаження, сигнал CLK для мікросхем ЦАП інвертований щодо сигналу SCLK, по якому відбувається завантаження даних в регістри і зсув. Це дозволяє завантажити дані в мікросхеми ЦАП в той момент, коли на виходах регістрів отримані стійкі стану даних. Для того щоб при цьому не виникало зсуву між сигналом LE і DOR / DOL, сигнал LRCLK тактується сигналом SCLK. Для цього використовується D-тригер 74 HC 74, функціональним аналогом якого є мікросхема К155ТМ2. Також у зв'язку з подачею на мікросхеми ЦАП інвертованого сигналу SCLK виникає необхідність забезпечити додаткове зсув усієї послідовності вхідних даних ще на один жмут.

Рис. 10. - Схема електрична принципова пристрою розділення даних для підключення мікросхеми ЦАП AD1851

На вході встановлені буфери на мікросхемі 74 HC 04, час поширення сигналу для якої становить 8 nS, що є досить малою величиною і не відображається на швидкодії пристрою в цілому.

Конденсатори C 1 - C 16 встановлюються безпосередньо біля висновків живлення мікросхем. C 1 - C 8 - конденсатори з твердим електролітом SANYO Os - Con SA 10 m x 6.3 V, С9-С16 - керамічні конденсатори для поверхневого монтажу типорозміру 1206, ємністю 100 n і групою ТКЕ X 7 R. Такий вибір обумовлює максимальну ефективність придушення завад з харчування при збереженні щодо невисокої вартості пристрою.

2.2.2 Схема пристрою поділу потоку даних для монофонічного підключення мікросхеми ЦАП AD 1852 (AD 1853)

Рис. 11. - Схема електрична принципова пристрою розділення даних для монофонічного підключення мікросхеми ЦАП AD1852 (AD1853)

Входи і виходи на схемі позначені подібно позначенням на схемі з документації на AD 1852.

Для забезпечення стійкості даних під час завантаження, сигнал BCLK _ O для мікросхем ЦАП інвертований щодо сигналу BCLK, по якому відбувається завантаження даних в регістри і зсув. Це дозволяє завантажити дані в мікросхеми ЦАП в той момент, коли на виходах регістрів отримані стійкі стану даних. Для того щоб при цьому не виникало зсуву між сигналом LRCLK і SDATA _ L / SDATA _ R, сигнал LRCLK тактується сигналом BCLK. Мультиплексори на мікросхемах DD 10, DD 11 управляються вже тактироваться сигналом LRCLK. Для цього використовується D-тригер 74 HC 74, функціональним аналогом якого є мікросхема К155ТМ2. Оскільки AD 1852 (AD 1853) також використовує сигнал MCLK (128 Fs / 256 Fs / 384 Fs), який пов'язаний з сигналом BCLK, сигнал MCLK _ O також інвертований. Також у зв'язку з подачею на мікросхеми ЦАП інвертованого сигналу SCLK виникає необхідність забезпечити додаткове зсув усієї послідовності вхідних даних ще на один жмут, що виконується D-тригером DD 12 A.

При необхідності на вході встановлюються буферні елементи.

Конденсатори C 1 - C 24 встановлюються безпосередньо біля висновків живлення мікросхем. C 1 - C 12 - конденсатори з твердим електролітом SANYO Os - Con SA 10 m x 6.3 V, С13-С24 - керамічні конденсатори для поверхневого монтажу типорозміру 1206, ємністю 100 n і групою ТКЕ X 7 R. Такий вибір обумовлює максимальну ефективність придушення завад з харчування при збереженні щодо невисокої вартості пристрою.

2.2.3 Загальні зауваження до схем

Вхід схем RESET підключається до генератора скидання системи. Активним рівнем скидання є рівень логічного "0". Цей вузол може бути виконаний, наприклад, на мікросхемі ADM 707.

Незважаючи на те, що мікросхеми ЦАП часто мають харчування цифрової частини 5 V, має сенс виділити для них окреме джерело живлення, а не використовувати одне джерело для схеми поділу цифрового потоку і ЦАП одночасно. Це дозволить зменшити рівень перешкод, що проникають з цифрової частини мікросхеми ЦАП в аналогову частину пристрою і поліпшить звучання системи.

Частина 3. Тимчасові діаграми

3.1 Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD 1851

Рис. 12. - Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD1851

3.2 Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD 1852

Рис. 13. - Тимчасова діаграма роботи пристрою розділення даних для мікросхеми ЦАП AD1852

Частина 4. Реалізація схеми в проекті VHDL

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

Коди на мові VHDL представлені нижче з короткими поясненнями, де це необхідно.

Для початку виберемо необхідні компоненти і складемо їх моделі:

- Components. Vhd

- 16-bit Serial to Parallel Shift Register with asynchronous reset

library ieee;

use ieee.std_logic_1164.all;

entity SPREG16R is

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end SPREG16R;

architecture v1 of SPREG16R is

signal sreg16: std_logic_vector (15 downto 0);

begin

process (RST, CLK)

begin

if RST = '1 'then

sreg16 <= (others => '0 ');

elsif CLK = '1 'and CLK'event then

sreg16 <= sreg16 (14 downto 0) & SI;

end if;

end process;

Q15 <= sreg16 (15) after 1 ns;

Q14 <= sreg16 (14) after 1 ns;

Q13 <= sreg16 (13) after 1 ns;

Q12 <= sreg16 (12) after 1 ns;

Q11 <= sreg16 (11) after 1 ns;

Q10 <= sreg16 (10) after 1 ns;

Q9 <= sreg16 (9) after 1 ns;

Q8 <= sreg16 (8) after 1 ns;

Q7 <= sreg16 (7) after 1 ns;

Q6 <= sreg16 (6) after 1 ns;

Q5 <= sreg16 (5) after 1 ns;

Q4 <= sreg16 (4) after 1 ns;

Q3 <= sreg16 (3) after 1 ns;

Q2 <= sreg16 (2) after 1 ns;

Q1 <= sreg16 (1) after 1 ns;

Q0 <= sreg16 (0) after 1 ns;

end v1;

- 32-bit Serial to Parallel Shift Register with asynchronous reset

library ieee;

use ieee.std_logic_1164.all;

entity SPREG32R is

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q31, Q30, Q29, Q28, Q27, Q26, Q25, Q24: out std_logic;

Q23, Q22, Q21, Q20, Q19, Q18, Q17, Q16: out std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end SPREG32R;

architecture v1 of SPREG32R is

signal sreg32: std_logic_vector (31 downto 0);

begin

process (RST, CLK)

begin

if RST = '1 'then

sreg32 <= (others => '0 ');

elsif CLK = '1 'and CLK'event then

sreg32 <= sreg32 (30 downto 0) & SI;

end if;

end process;

Q31 <= sreg32 (31) after 1 ns;

Q30 <= sreg32 (30) after 1 ns;

Q29 <= sreg32 (29) after 1 ns;

Q28 <= sreg32 (28) after 1 ns;

Q27 <= sreg32 (27) after 1 ns;

Q26 <= sreg32 (26) after 1 ns;

Q25 <= sreg32 (25) after 1 ns;

Q24 <= sreg32 (24) after 1 ns;

Q23 <= sreg32 (23) after 1 ns;

Q22 <= sreg32 (22) after 1 ns;

Q21 <= sreg32 (21) after 1 ns;

Q20 <= sreg32 (20) after 1 ns;

Q19 <= sreg32 (19) after 1 ns;

Q18 <= sreg32 (18) after 1 ns;

Q17 <= sreg32 (17) after 1 ns;

Q16 <= sreg32 (16) after 1 ns;

Q15 <= sreg32 (15) after 1 ns;

Q14 <= sreg32 (14) after 1 ns;

Q13 <= sreg32 (13) after 1 ns;

Q12 <= sreg32 (12) after 1 ns;

Q11 <= sreg32 (11) after 1 ns;

Q10 <= sreg32 (10) after 1 ns;

Q9 <= sreg32 (9) after 1 ns;

Q8 <= sreg32 (8) after 1 ns;

Q7 <= sreg32 (7) after 1 ns;

Q6 <= sreg32 (6) after 1 ns;

Q5 <= sreg32 (5) after 1 ns;

Q4 <= sreg32 (4) after 1 ns;

Q3 <= sreg32 (3) after 1 ns;

Q2 <= sreg32 (2) after 1 ns;

Q1 <= sreg32 (1) after 1 ns;

Q0 <= sreg32 (0) after 1 ns;

end v1;

- 64-bit Serial to Parallel Shift Register with asynchronous reset

library ieee;

use ieee.std_logic_1164.all;

entity SPREG64R is

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q63, Q62, Q61, Q60, Q59, Q58, Q57, Q56: out std_logic;

Q55, Q54, Q53, Q52, Q51, Q50, Q49, Q48: out std_logic;

Q47, Q46, Q45, Q44, Q43, Q42, Q41, Q40: out std_logic;

Q39, Q38, Q37, Q36, Q35, Q34, Q33, Q32: out std_logic;

Q31, Q30, Q29, Q28, Q27, Q26, Q25, Q24: out std_logic;

Q23, Q22, Q21, Q20, Q19, Q18, Q17, Q16: out std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end SPREG64R;

architecture v1 of SPREG64R is

signal sreg64: std_logic_vector (63 downto 0);

begin

process (RST, CLK)

begin

if RST = '1 'then

sreg64 <= (others => '0 ');

elsif CLK = '1 'and CLK'event then

sreg64 <= sreg64 (62 downto 0) & SI;

end if;

end process;

Q63 <= sreg64 (63) after 1 ns;

Q62 <= sreg64 (62) after 1 ns;

Q61 <= sreg64 (61) after 1 ns;

Q60 <= sreg64 (60) after 1 ns;

Q59 <= sreg64 (59) after 1 ns;

Q58 <= sreg64 (58) after 1 ns;

Q57 <= sreg64 (57) after 1 ns;

Q56 <= sreg64 (56) after 1 ns;

Q55 <= sreg64 (55) after 1 ns;

Q54 <= sreg64 (54) after 1 ns;

Q53 <= sreg64 (53) after 1 ns;

Q52 <= sreg64 (52) after 1 ns;

Q51 <= sreg64 (51) after 1 ns;

Q50 <= sreg64 (50) after 1 ns;

Q49 <= sreg64 (49) after 1 ns;

Q48 <= sreg64 (48) after 1 ns;

Q47 <= sreg64 (47) after 1 ns;

Q46 <= sreg64 (46) after 1 ns;

Q45 <= sreg64 (45) after 1 ns;

Q44 <= sreg64 (44) after 1 ns;

Q43 <= sreg64 (43) after 1 ns;

Q42 <= sreg64 (42) after 1 ns;

Q41 <= sreg64 (41) after 1 ns;

Q40 <= sreg64 (40) after 1 ns;

Q39 <= sreg64 (39) after 1 ns;

Q38 <= sreg64 (38) after 1 ns;

Q37 <= sreg64 (37) after 1 ns;

Q36 <= sreg64 (36) after 1 ns;

Q35 <= sreg64 (35) after 1 ns;

Q34 <= sreg64 (34) after 1 ns;

Q33 <= sreg64 (33) after 1 ns;

Q32 <= sreg64 (32) after 1 ns;

Q31 <= sreg64 (31) after 1 ns;

Q30 <= sreg64 (30) after 1 ns;

Q29 <= sreg64 (29) after 1 ns;

Q28 <= sreg64 (28) after 1 ns;

Q27 <= sreg64 (27) after 1 ns;

Q26 <= sreg64 (26) after 1 ns;

Q25 <= sreg64 (25) after 1 ns;

Q24 <= sreg64 (24) after 1 ns;

Q23 <= sreg64 (23) after 1 ns;

Q22 <= sreg64 (22) after 1 ns;

Q21 <= sreg64 (21) after 1 ns;

Q20 <= sreg64 (20) after 1 ns;

Q19 <= sreg64 (19) after 1 ns;

Q18 <= sreg64 (18) after 1 ns;

Q17 <= sreg64 (17) after 1 ns;

Q16 <= sreg64 (16) after 1 ns;

Q15 <= sreg64 (15) after 1 ns;

Q14 <= sreg64 (14) after 1 ns;

Q13 <= sreg64 (13) after 1 ns;

Q12 <= sreg64 (12) after 1 ns;

Q11 <= sreg64 (11) after 1 ns;

Q10 <= sreg64 (10) after 1 ns;

Q9 <= sreg64 (9) after 1 ns;

Q8 <= sreg64 (8) after 1 ns;

Q7 <= sreg64 (7) after 1 ns;

Q6 <= sreg64 (6) after 1 ns;

Q5 <= sreg64 (5) after 1 ns;

Q4 <= sreg64 (4) after 1 ns;

Q3 <= sreg64 (3) after 1 ns;

Q2 <= sreg64 (2) after 1 ns;

Q1 <= sreg64 (1) after 1 ns;

Q0 <= sreg64 (0) after 1 ns;

end v1;

- D Flip Flop w asynchronous reset

library ieee;

use ieee.std_logic_1164.all;

entity DFFR is

port (RST: in std_logic;

CLK: in std_logic;

D: in std_logic;

Q: out std_logic;

QN: out std_logic

);

end DFFR;

architecture v1 of DFFR is

signal n1: std_logic;

begin

process (RST, CLK)

begin

if RST = '1 'then

n1 <= 0 "after 1 ns;

elsif (CLK'event and CLK = '1 ') then

n1 <= D after 1 ns;

end if;

end process;

Q <= n1 after 1 ns;

QN <= not n1 after 1 ns;

end v1;

- 2-input NAND

library ieee;

use ieee.std_logic_1164.all;

entity NAND2 is

port (

IN1, IN0: in std_logic;

Z: out std_logic

);

end NAND2;

architecture v1 of NAND2 is

begin

Z <= not (IN1 and IN0) after 1 ns;

end v1;

- Inverter

library ieee;

use ieee.std_logic_1164.all;

entity INV is

port (

IN0: in std_logic;

Z: out std_logic

);

end INV;

architecture v1 of INV is

begin

Z <= not IN0 after 1 ns;

end v1;

- Buffer

library ieee;

use ieee.std_logic_1164.all;

entity BUF is

port (

IN0: in std_logic;

Z: out std_logic

);

end BUF;

architecture v1 of BUF is

begin

Z <= IN0 after 1 ns;

end v1;

- 2-1 Multiplexer

library ieee;

use ieee.std_logic_1164.all;

entity MUX21 is

port (IN0, IN1, SEL: in std_logic;

Z: out std_logic

);

end MUX21;

architecture v1 of MUX21 is

begin

Z <= IN0 after 1 ns when SEL = 0 "else IN1;

end;

- 4-1 Multiplexer

library ieee;

use ieee.std_logic_1164.all;

entity MUX41 is

port (IN0, IN1, IN2, IN3, SEL0, SEL1: in std_logic;

Z: out std_logic

);

end MUX41;

architecture v1 of MUX41 is

signal SEL: std_logic_vector (1 downto 0);

begin

SEL <= SEL1 & SEL0;

Z <= IN0 when SEL = "00" else

IN1 when SEL = "01" else

IN2 when SEL = "10" else

IN3;

end;

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

- DS1851. Vhd

- Data Separator for AD1851/AD1861/AD1862/AD1865 parallel DAC

library ieee;

use ieee.std_logic_1164.all;

entity DS1851 is

port (

RST: in std_logic;

SCLK: in std_logic;

SDATA: in std_logic;

LRCLK: in std_logic;

RL1: in std_logic;

RL0: in std_logic;

LE: out std_logic;

CLK: out std_logic;

DOL: out std_logic;

DOR: out std_logic

);

end DS1851;

architecture v1 of DS1851 is

component SPREG16R

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end component;

component SPREG32R

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q31, Q30, Q29, Q28, Q27, Q26, Q25, Q24: out std_logic;

Q23, Q22, Q21, Q20, Q19, Q18, Q17, Q16: out std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end component;

component DFFR

port (RST: in std_logic;

CLK: in std_logic;

D: in std_logic;

Q: out std_logic;

QN: out std_logic

);

end component;

component INV

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

component BUF

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

component MUX41

port (IN0, IN1, IN2, IN3, SEL0, SEL1: in std_logic;

Z: out std_logic

);

end component;

signal nLRCLK, pLRCLK, nSCLK, pSCLK, nSDATA, pSDATA: std_logic;

signal i24b, i20b, i18b, i16b: std_logic;

signal RESET, iDOL, iDOR, iCLK, iLE: std_logic;

begin

RSTI: INV port map (IN0 => RST, Z => RESET);

DD1A: INV port map (IN0 => SCLK, Z => nSCLK);

DD1D: INV port map (IN0 => nSCLK, Z => pSCLK);

DD1B: INV port map (IN0 => SDATA, Z => nSDATA);

DD1E: INV port map (IN0 => nSDATA, Z => pSDATA);

DD1C: INV port map (IN0 => LRCLK, Z => nLRCLK);

DD1F: INV port map (IN0 => nLRCLK, Z => pLRCLK);

CLKB: BUF port map (IN0 => nSCLK, Z => iCLK);

DD2: SPREG16R port map (RST => RESET, CLK => pSCLK, SI => pSDATA,

Q7 => i24b, Q11 => i20b, Q13 => i18b, Q15 => i16b);

DDMX: MUX41 port map (IN0 => i24b, IN1 => i20b, IN2 => i18b, IN3 => i16b,

SEL0 => RL0, ​​SEL1 => RL1, Z => iDOR);

DD4: DFFR port map (RST => RESET, D => pLRCLK, CLK => pSCLK, Q => iLE);

DD5: SPREG32R port map (RST => RESET, CLK => pSCLK, SI => iDOR,

Q31 => iDOL);

BUFE: BUF port map (IN0 => iLE, Z => LE);

BUFC: BUF port map (IN0 => iCLK, Z => CLK);

BUFL: BUF port map (IN0 => iDOL, Z => DOL);

BUFR: BUF port map (IN0 => iDOR, Z => DOR);

end v1;

- DS1853. Vhd

- Data Separator for AD1852/AD1853 delta-sigma DAC

library ieee;

use ieee.std_logic_1164.all;

entity DS1853 is

port (

RST: in std_logic;

BCLK: in std_logic;

SDATA: in std_logic;

LRCLK: in std_logic;

MCLK: in std_logic;

BCLK_O: out std_logic;

LRCLK_O: out std_logic;

SDATA_L: out std_logic;

SDATA_R: out std_logic;

MCLK_O: out std_logic

);

end DS1853;

architecture v1 of DS1853 is

component SPREG64R

port (RST: in std_logic;

CLK: in std_logic;

SI: in std_logic;

Q63, Q62, Q61, Q60, Q59, Q58, Q57, Q56: out std_logic;

Q55, Q54, Q53, Q52, Q51, Q50, Q49, Q48: out std_logic;

Q47, Q46, Q45, Q44, Q43, Q42, Q41, Q40: out std_logic;

Q39, Q38, Q37, Q36, Q35, Q34, Q33, Q32: out std_logic;

Q31, Q30, Q29, Q28, Q27, Q26, Q25, Q24: out std_logic;

Q23, Q22, Q21, Q20, Q19, Q18, Q17, Q16: out std_logic;

Q15, Q14, Q13, Q12, Q11, Q10, Q9, Q8: out std_logic;

Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0: out std_logic

);

end component;

component DFFR

port (RST: in std_logic;

CLK: in std_logic;

D: in std_logic;

Q: out std_logic;

QN: out std_logic

);

end component;

component INV

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

component BUF

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

component MUX21

port (IN0, IN1, SEL: in std_logic;

Z: out std_logic

);

end component;

signal iBCLK, iSDATA, iLRCLK, iMCLK: std_logic;

signal RESET, nLRCLK, pLRCLK: std_logic;

signal o31, o63, o31n, o31p, o63n, bSDATA: std_logic;

begin

INBB: BUF port map (IN0 => BCLK, Z => iBCLK);

INBS: BUF port map (IN0 => SDATA, Z => bSDATA);

INBL: BUF port map (IN0 => LRCLK, Z => iLRCLK);

INBM: BUF port map (IN0 => MCLK, Z => iMCLK);

RSTI: INV port map (IN0 => RST, Z => RESET);

DD12A: DFFR port map (RST => RESET, D => iLRCLK,

CLK => iBCLK, Q => pLRCLK, QN => nLRCLK);

DD12B: DFFR port map (RST => RESET, D => bSDATA,

CLK => iBCLK, Q => iSDATA);

DD1: SPREG64R port map (RST => RESET, SI => iSDATA,

CLK => iBCLK, Q31 => o31, Q63 => o63);

O31B: BUF port map (IN0 => o31, Z => o31p);

O31I: INV port map (IN0 => o31, Z => o31n);

O63I: INV port map (IN0 => o63, Z => o63n);

MUXL: MUX21 port map (IN0 => o63n, IN1 => o31p,

SEL => pLRCLK, Z => SDATA_L);

MUXR: MUX21 port map (IN0 => o31n, IN1 => iSDATA,

SEL => pLRCLK, Z => SDATA_R);

INVL: INV port map (IN0 => pLRCLK, Z => LRCLK_O);

INVB: INV port map (IN0 => iBCLK, Z => BCLK_O);

INVM: INV port map (IN0 => iMCLK, Z => MCLK_O);

end v1;

Далі необхідно скласти код для генератора налагоджувальної послідовності.

- Tester1851. Vhd

- Test signal generator for DS1851

library ieee;

use ieee.std_logic_1164.all;

entity Tester1851 is

port (

CLK: in std_logic

);

end Tester1851;

architecture v1 of Tester1851 is

component TS1851

port (

RST: out std_logic;

SCLK: in std_logic;

SDATA: out std_logic;

LRCLK: out std_logic

);

end component;

component DS1851

port (

RST: in std_logic;

SCLK: in std_logic;

SDATA: in std_logic;

LRCLK: in std_logic;

RL1: in std_logic;

RL0: in std_logic;

LE: out std_logic;

CLK: out std_logic;

DOL: out std_logic;

DOR: out std_logic

);

end component;

component BUF

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

signal SCLK, SDATA, LRCLK, RST: std_logic;

signal LD1, LD2, LD3, RD1, RD2, RD3, DSReg: std_logic_vector (31 downto 0);

begin

D0: BUF port map (IN0 => CLK, Z => SCLK);

D2: DS1851 port map (RST => RST, SCLK => SCLK,

SDATA => SDATA, LRCLK => LRCLK,

RL1 => '1 ', RL0 => "1");

Test: process

begin

LD1 <= "01100110000000011000000000000000";

RD1 <= "01111000000001111000000000000000";

LD2 <= "01100110000111111000000000000000";

RD2 <= "01111000011111111000000000000000";

LD3 <= "01100111111111111000000000000000";

RD3 <= "01111111111111111000000000000000";

SDATA <= '0 ';

LRCLK <= '1 ';

RST <= '0 ';

wait for 50ns;

RST <= '1 ';

wait on SCLK until SCLK = '0 ';

DSReg <= LD1;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD1L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD1L;

wait on SCLK until SCLK = '0 ';

DSReg <= RD1;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD1L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD1L;

wait on SCLK until SCLK = '0 ';

DSReg <= LD2;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD2L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD2L;

wait on SCLK until SCLK = '0 ';

DSReg <= RD2;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD2L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD2L;

wait on SCLK until SCLK = '0 ';

DSReg <= LD3;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD3L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD3L;

wait on SCLK until SCLK = '0 ';

DSReg <= RD3;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD3L: for i in 30 downto 0 loop

wait on SCLK until SCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD3L;

wait on SCLK until SCLK = '0 ';

DSReg <= LD1;

wait for 10ns;

LRCLK <= '0 ';

wait;

end process;

end v1;

- Tester1853. Vhd

- Test signal generator for DS1853

library ieee;

use ieee.std_logic_1164.all;

entity Tester1853 is

port (

CLK: in std_logic

);

end Tester1853;

architecture v1 of Tester1853 is

component TS1853

port (

RST: out std_logic;

SCLK: in std_logic;

SDATA: out std_logic;

LRCLK: out std_logic

);

end component;

component DS1853

port (

RST: in std_logic;

BCLK: in std_logic;

SDATA: in std_logic;

LRCLK: in std_logic;

MCLK: in std_logic;

BCLK_O: out std_logic;

LRCLK_O: out std_logic;

SDATA_L: out std_logic;

SDATA_R: out std_logic;

MCLK_O: out std_logic

);

end component;

component BUF

port (

IN0: in std_logic;

Z: out std_logic

);

end component;

signal BCLK, SDATA, LRCLK, RST: std_logic;

signal LD1, LD2, LD3, RD1, RD2, RD3, DSReg: std_logic_vector (31 downto 0);

begin

D0: BUF port map (IN0 => CLK, Z => BCLK);

D2: DS1853 port map (RST => RST, BCLK => BCLK,

SDATA => SDATA, LRCLK => LRCLK,

MCLK => BCLK);

Test: process

begin

LD1 <= "01100110000000011000000000000000";

RD1 <= "01111000000001111000000000000000";

LD2 <= "01100110000111111000000000000000";

RD2 <= "01111000011111111000000000000000";

LD3 <= "01100111111111111000000000000000";

RD3 <= "01111111111111111000000000000000";

SDATA <= '0 ';

LRCLK <= '1 ';

RST <= '0 ';

wait for 50ns;

RST <= '1 ';

wait on BCLK until BCLK = '0 ';

DSReg <= LD1;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD1L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD1L;

wait on BCLK until BCLK = '0 ';

DSReg <= RD1;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD1L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD1L;

wait on BCLK until BCLK = '0 ';

DSReg <= LD2;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD2L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD2L;

wait on BCLK until BCLK = '0 ';

DSReg <= RD2;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD2L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD2L;

wait on BCLK until BCLK = '0 ';

DSReg <= LD3;

wait for 10ns;

LRCLK <= '0 ';

SDATA <= DSReg (31);

LD3L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop LD3L;

wait on BCLK until BCLK = '0 ';

DSReg <= RD3;

wait for 10ns;

LRCLK <= '1 ';

SDATA <= DSReg (31);

RD3L: for i in 30 downto 0 loop

wait on BCLK until BCLK = '0 ';

DSReg <= DSReg (30 downto 0) & 0 ";

wait for 10ns;

SDATA <= DSReg (31);

end loop RD3L;

wait on BCLK until BCLK = '0 ';

DSReg <= LD1;

wait for 10ns;

LRCLK <= '0 ';

wait;

end process;

end v1;

Висновки

При виконанні роботи були розглянуті питання реалізації поділу цифрового потоку від приймача сигналу SPDIF (та / або AES / EBU) для подачі його безпосередньо на мікросхеми ЦАП. З набору найбільш часто використовуваних способів реалізації були обрані найбільш універсальні і кращим чином відповідають вимогам стандарту.

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

В результаті виконання роботи були отримані працюючі схеми, придатні до втілення в готовому пристрої. Робота схем була промодульована мовою VHDL. Крім VHDL моделей був отриманий готовий код, придатний для прошивки кристала ПЛМ.

Тим не менш, основним результатом роботи слід вважати закріплення знань з дисциплін "Прикладна теорія цифрових автоматів", "Цифрова схемотехніка" і "Моделювання на мові VHDL", а також підвищення досвіду роботи з відповідними засобами і способами розробки.


Додати в блог або на сайт

Цей текст може містити помилки.

Комунікації, зв'язок, цифрові прилади і радіоелектроніка | Курсова
169кб. | скачати


Схожі роботи:
Пристрій збору даних
Аналіз потоку грошових коштів
Розробка вимірювача потоку рідини
Вимірювання щільності потоку енергії НВЧ випромінювання
Розрахунок штучного освітлення за методом світлового потоку
Розподіл Пуассона Аксіоми найпростішого потоку подій
Дослідження потоку рідини в каналі змінного перерізу
Визначення параметрів транспортного потоку на регульованому перехресті
Модель кругового потоку як макроекономічний інструмент екологічної політики
© Усі права захищені
написати до нас