DIY ko'p funktsiyali signal generatori. Raqamli funktsiya generatori DDS. Jeneratör uchun quvvat manbai ko'rinishi

$15,3

Avvalo, DDS to'g'ridan-to'g'ri raqamli sintezator yoki raqamli signal sintezatori yoki mos yozuvlar chastotasidan ixtiyoriy shakl va chastotali signallarni sintez qilish uchun mo'ljallangan elektron qurilma.

Radio havaskoriga nima uchun generator kerakligini tushuntirmayman. Tayyor generatorlar arzon emas va adolatli vaznga ega, shuning uchun ularni jo'natish ham qimmatga tushadi. Shu sababli, DDS modullarini korpus va quvvat manbaisiz batafsil ko'rib chiqishga qaror qilindi.

Internetda DDS modullarini tanlash kichik bo'lib chiqdi. Ko'proq yoki kamroq arzon va bilan oddiy terish Men faqat 2 turdagi funksiyalarni topdim. Ular funktsional jihatdan bir xil, faqat boshqaruv elementlari va elektr ta'minotining joylashuvi bilan farqlanadi. Ulardan birini ishlatish uchun uchta kuchlanish kerak edi (+12V, -12V va +5V), ikkinchisi 7-9V bitta kuchlanishda ishlaydi. Bu hal qiluvchi edi; undan keyin uni quvvatlantirish osonroq bo'lar edi tugallangan blok quvvat manbai va siz elektr ta'minoti pallasini maxsus panjara qilishingiz shart emas.

Veb-saytdagi tavsifdan:

Ishlash kuchlanishi: DC7-9V
DDS chastota diapazoni: 1HZ-65534Hz.
8 MGts gacha bo'lgan yuqori tezlikdagi chastota (HS) chiqishi;
Ofset miqdorining DDS signalining amplitudasi ikkita potansiyometr tomonidan alohida sozlanishi mumkin;
DDS signallari: sinus to'lqini, kvadrat to'lqin, arra tishi, teskari arra tishi, uchburchak to'lqini, EKG to'lqini va shovqin to'lqini.
1602 LCD menyusi;
Intuitiv klaviatura.
Qiymatga bo'lim: 1,10,100,1000,10000 Hz;
Quvvat avtomatik ravishda oxirgi ishlatilgan konfiguratsiyani tiklaydi.
Ofset: 0,5pp-5Vpp
Amplituda miqdori: 0,5Vpp-14Vpp

Kengashning o'zi juda yuqori sifatli, lehimlash yaxshi, oqim yuviladi.

Qo'limda mos keladigan ulagichga ega 9V quvvat manbai bo'lmagani uchun men 5V quvvat manbaini uladim. Ajabo, hamma narsa ishladi. Men faqat LCD displeyning kontrastini biroz sozlashim kerak edi. Shu maqsadda displeyning o'zi ostida kesish qarshiligi mavjud.

Jeneratörda ko'k yorug'lik va juda ko'p boshqaruv tugmalari va 2 sozlash tugmalari bilan qulay alfanumerik LCD displey 1602 mavjud. Keling, tartibda boraylik. Quvvat ulagichi 8-9V (biz allaqachon bilib olganimizdek, u 5V dan ishonchli ishlaydi). Yoqish/o'chirish tugmasi. Yoqilganligini bildiruvchi LED.

  • yuqoriga va pastga - signal shaklini (funktsiyasini) tanlang;
  • o'ng va chap - avlod chastotasini tanlang (qadam Freq Step menyusida o'rnatiladi).
  • markaziy tugma - ishlab chiqarishni boshlash/to'xtatish.

Ikki boshqaruv tutqichi:

  • amplituda;
  • ofset 0,5 - 5 V.

Yon tomonda 2 ta BNC ulagichi mavjud. Biri DDS chiqishi uchun, ikkinchisi yuqori chastotali signal uchun.

Jeneratör quyidagi impuls shakllarini yaratishi mumkin:

  • EKG = elektrokardiogramma (O'FF holatida, chiqish chastotasini o'rnatish uchun "chap" va "o'ng" tugmalar. O'rta tugmachani ishga tushirish, quyidagi barcha to'lqin shakli o'rnatilgan)
  • NOISE = shovqin.
  • SawTooth = arra.
  • Rev Sawtooth = teskari arra.
  • Uchburchak = uchburchak.
  • Sinus = sinus to'lqin.
  • Kvadrat = to'rtburchaklar.

Signallarning ushbu DDS funktsiyasi generatori (versiya 2.0) AVR mikrokontrollerida yig'ilgan, yaxshi funksionallikka ega, amplitudani boshqarishga ega va shuningdek, bir tomonlama bosilgan elektron platada yig'ilgan.

Ushbu generator Jesper DDS generator algoritmiga asoslangan bo'lib, dastur AVR-GCC C uchun montaj kodlari qo'shimchalari bilan modernizatsiya qilingan. Jeneratör ikkita chiqish signaliga ega: birinchisi DDS signallari, ikkinchisi yuqori tezlikda (1..8 MGts) "to'rtburchaklar" chiqishi bo'lib, u noto'g'ri fuzzlar bilan MKni qayta tiklash va boshqa maqsadlarda ishlatilishi mumkin.
Yuqori tezlikdagi HS (High Speed) signali to'g'ridan-to'g'ri Atmega16 OC1A (PD5) mikrokontrolleridan olinadi.
DDS signallari rezistiv R2R matritsasi va LM358N mikrosxema orqali boshqa MC chiqishlaridan hosil bo'ladi, bu signal amplitudasi va ofsetini (Ofset) sozlash imkonini beradi. Ofset va amplituda ikki potansiyometr yordamida o'rnatiladi. Ofsetni +5V..-5V oralig'ida sozlash mumkin, amplituda esa 0...10V. DDS signallarining chastotasi 0... 65534 Gts oralig'ida sozlanishi mumkin, bu audio davrlarini va boshqa havaskor radio vazifalarini sinab ko'rish uchun etarli.

DDS generator V2.0 ning asosiy xususiyatlari:
- umumiy va arzon radioelementli oddiy sxema;
- bir tomonlama bosilgan elektron plata;
- o'rnatilgan elektr ta'minoti;
- 8 MGts gacha bo'lgan alohida yuqori tezlikli chiqish (HS);
- o'zgaruvchan amplitudali va ofsetli DDS signallari;
- DDS signallari: sinus, to'rtburchak, arra va teskari arra, uchburchak, EKG signali va shovqin signali;
- 2×16 LCD displey;
- intuitiv 5 tugmali klaviatura;
- chastotani sozlash bosqichlari: 1, 10, 100, 1000, 10000 Hz;
- quvvat yoqilgandan keyin oxirgi holatni eslash.

Quyidagi blok diagrammada funktsiya generatorining mantiqiy tuzilishi ko'rsatilgan:

Ko'rib turganingizdek, qurilma bir nechta besleme kuchlanishini talab qiladi: +5V, -12V, +12V. Signal amplitudasi va ofsetini tartibga solish uchun +12V va -12V kuchlanish ishlatiladi. Elektr ta'minoti transformator va bir nechta kuchlanish stabilizator chiplari yordamida ishlab chiqilgan:

Elektr ta'minoti alohida taxtada yig'iladi:

Elektr ta'minotini o'zingiz yig'ishni istamasangiz, barcha kerakli kuchlanishlar allaqachon mavjud bo'lgan kompyuterdan muntazam ATX quvvat manbaidan foydalanishingiz mumkin. ATX ulagichining joylashuvi.

LCD displey

Barcha harakatlar LCD displey orqali ko'rsatiladi. Jeneratör beshta tugma bilan boshqariladi

Yuqori/past tugmalari menyu bo'ylab harakatlanish uchun ishlatiladi, chap/o'ng tugmalar chastota qiymatini o'zgartirish uchun ishlatiladi. Markaziy tugma bosilganda tanlangan signal hosil bo'la boshlaydi. Tugmachani yana bosish generatorni to'xtatadi.

Chastotani o'zgartirish bosqichini o'rnatish uchun alohida qiymat beriladi. Agar siz chastotani keng diapazonda o'zgartirishingiz kerak bo'lsa, bu qulay.

Shovqin generatorida hech qanday sozlamalar yo'q. U DDS generatorining chiqishiga doimiy ravishda oziqlanadigan odatiy rand() funksiyasidan foydalanadi.

HS yuqori tezlikda chiqishi 4 chastota rejimiga ega: 1, 2, 4 va 8 MGts.

Sxematik diagramma

Funktsiya generatorining sxemasi oddiy va oson kirish mumkin bo'lgan elementlarni o'z ichiga oladi:
- AVR Atmega16 mikrokontrolleri, tashqi kvartsli 16 MGts;
- standart HD44780 tipidagi LCD displey 2×16;
- oddiy rezistorlardan tayyorlangan R2R DAC matritsasi;
- operatsion kuchaytirgich LM358N (KR1040UD1 ning mahalliy analogi);
- ikkita potansiyometr;
- beshta kalit;
- bir nechta ulagichlar.

To'lash:

Funktsional generator plastik qutiga yig'iladi:


Dasturiy ta'minot

Yuqorida aytganimdek, men dasturimni Jesper DDS generator algoritmiga asosladim. Men avlodni to'xtatishni amalga oshirish uchun bir necha qator montaj kodini qo'shdim. Endi algoritm 9 ta o'rniga 10 ta protsessor tsiklini o'z ichiga oladi.

bekor statik inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0)(
asm volatile("eor r18, r18 ;r18<-0″ "\n\t"
"eor r19, r19 ;r19<-0″ "\n\t"
"1:" "\n\t"
"r18 qo'shing, %0 ;1 sikl" "\n\t"
"adc r19, %1 ;1 sikl" "\n\t"
"adc %A3, %2 ;1 sikl" "\n\t"
"lpm ;3 sikl" "\n\t"
"out %4, __tmp_reg__ ;1 sikl" "\n\t"
"sbis %5, 2 ; agar o'tkazib yuborilmasa, 1 tsikl" "\n\t"
"rjmp 1b ;2 sikl. Jami 10 tsikl" "\n\t"
:
:"r" (ad0),,"r" (ad1),,"r" (ad2),,"e" (signal),,"I" (_SFR_IO_ADDR(PORTA)), "I" (_SFR_IO_ADDR(SPCR) ))
:"r18", "r19"
);}

DDS signal shakllari jadvali MK ning flesh-xotirasida joylashgan bo'lib, uning manzili 0xXX00 dan boshlanadi. Ushbu bo'limlar makefile faylida, tegishli xotira joylarida aniqlanadi:
#Signal jadvallarini saqlash uchun bo'limlarni belgilang
LDFLAGS += -Wl,-section-start=.MySection1=0x3A00
LDFLAGS += -Wl,-section-start=.MySection2=0x3B00
LDFLAGS += -Wl,-section-start=.MySection3=0x3C00
LDFLAGS += -Wl,-section-start=.MySection4=0x3D00
LDFLAGS += -Wl,-section-start=.MySection5=0x3E00
LDFLAGS += -Wl,-section-start=.MySection6=0x3F00

DDS generatori yoki to'g'ridan-to'g'ri raqamli sintez generatori hozirda yangilikdan uzoqdir. Internetda, asosan, AVR mikrokontrollerlarida taqdim etilgan ko'plab sxemalar mavjud. DAC asosan R-2R matritsasidir, lekin AD9850 chipida dizaynlar ham mavjud (darvoqe, ular narxi past emas). Ammo, afsuski (yoki xayriyatki?), ularda menga kerak bo'lgan narsa yo'q edi: kichik o'lcham va arzon narx. Natijada, ushbu sxema ishlab chiqildi.

Ushbu maqolada men ATmega8 mikrokontrollerida ishlab chiqarilgan DDS generatorini taqdim qilmoqchiman. Ma'lumotni ko'rsatish uchun grafik LCD LPH8731-3C ishlatiladi. Ushbu qurilma o'zboshimchalik shakli (100 ball) va belgilangan amplitudali davriy signalni olish imkonini beradi.

Texnik xususiyatlari:

  • Ta'minot kuchlanishi: 5V
  • Joriy iste'mol:<100мА
  • Min. chiqish kuchlanishi: 0,5V
  • Maks. chiqish kuchlanishi: 2,5V
  • Voltajni sozlash bosqichi: 0,5V
  • Min. Signal chastotasi: 10Hz
  • Maks. Signal chastotasi: 2kHz (10kHz)
  • Chastota qadami: 10Hz (100Hz)
  • Oldindan o'rnatilgan signallar soni: 8
  • Ma'lumotlar displeyi: grafik LCD
  • To'lqin shaklini "parvozda" qo'shish imkoniyati (miltillamasdan): yo'q
  • Orqa yorug'lik yorqinligi: sozlanishi, miltillashni talab qiladi
  • Maks. Xotiradagi shakllar soni: kamida 20

Qurilma diagrammasi quyida keltirilgan:

Sxemaning asosi, yuqorida aytib o'tilganidek, ATmega8-16AU mikrokontrolleridir. Indeks "...16" kerak, chunki sxema 16 MGts chastotali kvarts rezonatoridan foydalanadi. DAC R-2R matritsasida yaratilgan. Ushbu harakat sizga maxsus mikrosxemalardan foydalanishdan qochish imkonini beradi, lekin afsuski, bu sizga 10 .. 12 bitdan yuqori (havaskorlik sharoitida) haqiqiy DAC ruxsatiga erishishga imkon bermaydi. Operatsion kuchaytirgich matritsaning chiqishiga rezistiv kuchlanish bo'luvchi (R17, RV1) orqali ulanadi, takrorlanuvchi sxema bo'yicha ulanadi va oqimni kuchaytirishga xizmat qiladi.

Qurilma tugmalar yordamida boshqariladi. Old panelda faqat SB1-SB4 tugmachalarini joylashtirish tavsiya etiladi. SB5 tugmasi "funktsional" rolini o'ynaydi va SB1-SB4 tugmalari uchun "asosiy"lardan farqli harakatlardan foydalanishga imkon beradi. Switch SA1 mos ravishda "generatsiya" va boshqaruv tugmalarini yoqadi/o'chiradi. Uning birinchi holatida boshqaruv yoqiladi va signal ishlab chiqarish o'chiriladi, ikkinchisida esa vaziyat birinchisiga mutlaqo ziddir. J2 ulagichini plataga yo'naltirish shart emas, chunki u faqat mikrokontrollerni dasturlashda platani quvvat bilan ta'minlash uchun mo'ljallangan (lekin siz to'g'ridan-to'g'ri treklarga ulanishingiz kerak bo'ladi).

Qurilmaning bosilgan elektron platasi ikki tomonlama folga materialida ishlab chiqariladi va o'lchamlari (_ x _) ga ega. Uni ishlab chiqarishdagi asosiy qiyinchilik - bu mikrokontrollerni o'rnatish uchun yo'llarning tartibi, lekin agar siz bunday platalarni ishlab chiqarishda tajribaga ega bo'lsangiz va / yoki fotorezist / LUT dan foydalanish qobiliyatiga ega bo'lsangiz, ishlab chiqarish jarayonida hech qanday muammo bo'lmasligi kerak.

Qurilmani yig'ishda men vizalarning yaxshi lehimlanganligini va mikrokontroller oyoqlari va bosilgan elektron plata yo'llari orasidagi aloqa ishonchliligini tekshirishni qat'iy tavsiya qilaman. Men mikrokontrollerning faqat 1 ta lehimsiz pinini o'tkazib yubordim va natijada muammoni topish uchun bir necha kun kerak bo'ldi.

Mikrodastur

Mikrokontroller uchun proshivka yozilgan edi. .hex faylini to'ldirish uchun dasturchi va dasturiy ta'minot ishlatilgan. Quyida sug'urta bitlarini o'rnatish misoli bilan skrinshot keltirilgan. Bosilgan elektron platada dasturlash uchun maxsus ulagich bo'lmaganligi sababli, mikrokontrollerning dasturiy ta'minotini miltillash uchun siz vaqtincha mos keladigan treklarga (mikrokontroller pinlari "MISO", "MOSI", "SCK", "RESET") lehimlashingiz kerak bo'ladi.

Qurilmani yig'ish va joylashtirish

Qurilmani korpusga joylashtirishda SB5 tugmachasini uning yon tomoniga o'rnatish tavsiya etiladi. Mening versiyamdagi SA1 kaliti yukni ulash uchun ulagich kabi pastki uchida joylashgan edi. USB ulagichi korpusning yuqori qismida o'rnatilgan, chunki reja 3,7 -> 5V DC-DC konvertoridan foydalanish edi. Ammo men ko'p qirrali bo'lishni xohlaganim uchun, men bu blokni olinadigan qilishga qaror qildim.

Elementlarni almashtirish imkoniyati

Mikrokontrollerdan faqat ATmega8-16AU foydalanish mumkin. LM358 operatsion kuchaytirgichi SO-8 to'plamida o'xshash (masalan, NE532, OP04, OP221, OP290, ...) va mumkin bo'lgan pin mos kelmasligi haqida unutmasligingiz kerak. Transistor Q1 har qanday kam quvvatli n-p-n dan olinishi mumkin, masalan, mahalliy KT315 yoki KT3102. R1-R16 rezistorlarini minimal bardoshlik (0,5...1%) bilan qabul qilish tavsiya etiladi, lekin keng tarqalgan 2...5% ham ishlaydi (lekin bu erda signal shakli biroz yomonroq bo'lishi mumkin). Bundan tashqari, bir xil qiymatdagi rezistorlarni olish tavsiya etiladi (u 10 kOm bo'lsin), keyin 2R kerak bo'lganda, 10 kOm, R esa - 2x10 kOm parallel ravishda qo'ying. 22...33pF oralig'ida C1, C2 kondansatkichlarini olish maqsadga muvofiqdir. Amaldagi kvarts rezonatori past profilli, 16 MGts chastotada. Rezistor RV1 ko'p burilishli. Zener diyotini faqat 3,3V ga o'rnatish mumkin.

LCD displeydan faqat sariq fon va "LPH8731-3C" yozuvi bilan foydalanish mumkin. U Siemens A60, A65 va boshqalar mobil telefonlarida uchraydi va 101x80 piksel o'lchamiga ega.

Sozlamalar

To'g'ri yig'ilgan qurilma sozlashni talab qilmaydi va boshqaruvchi yig'ilgandan va miltillagandan so'ng darhol ishlashi kerak. Agar bu sodir bo'lmasa, bosilgan elektron platadagi qisqa yo'llarni, LCD displeyning to'g'ri ulanishini, SA1 kalitidan simlarning yaxlitligini, shuningdek zener diyotining va quvvat manbai / USB ning xizmat ko'rsatish qobiliyatini tekshiring. kabel.

Muvaffaqiyatli birinchi yoqilgandan so'ng, displeydagi sozlamalarga muvofiq chiqish signali darajasini sozlash uchun osiloskop va kesish rezistori RV1 dan foydalanishingiz kerak.

Tugmalarning maqsadi: SB1 - "Chapta" (Chiqish kuchlanishi kamroq), SB2 - "O'ng" (Chiqish kuchlanishi ko'proq), SB3 - "Chastotalar +10" (Chastotalar +100), SB4 - "Chastotalar -10" ( Chastotasi - 100)<-- SB5 - Отжата (Нажата).

Qurilmaning fotosurati va videosi:


Quyidagi ikkita fotosurat 2 kHz dan yuqori chastotani qanday olishingiz mumkinligini ko'rsatadi. Lekin bu signalning sifati bilan bog'liq (to'rtburchaklar uchun bu muhim emas).



Ushbu qurilma yordamida olingan signallarning oscillograms:





Tashqi ko'rinish yig'ilgan qurilma:


Radioelementlar ro'yxati

Belgilanish Turi Denominatsiya Miqdori EslatmaDo'konMening bloknotim
U1 MK AVR 8-bit

ATmega8A-AU

1 Bloknot uchun
U2 Operatsion kuchaytirgich

LM358

1 Uy-joy SO-8 (LM358D)) Bloknot uchun
1-savol Bipolyar tranzistor

BC547

1 Bloknot uchun
D1 Zener diyot

BZX55C3V3

1 Bloknot uchun
RV1 Trimmer qarshiligi220 kOm1 Bloknot uchun
R1-R9 Rezistor

2,2 kOm

9 0805, 1% Bloknot uchun
R10-R16, R32 Rezistor

1,1 kOm

8 0805, 1% Bloknot uchun
R17 Rezistor

100 kOm

1 0805 Bloknot uchun
R19-R23 Rezistor

5,6 kOm

5 0805 Bloknot uchun
R24-28, R18 Rezistor

10 kOm

5 0805 Bloknot uchun
R29, R30 Rezistor

220 Ohm

2 0805 Bloknot uchun
R31 Rezistor

75 Ohm

1 0805 Bloknot uchun
R33 Rezistor

510 Ohm

1 0805 Bloknot uchun
C1, C2 Kondensator27 pF2 0805

Maksimal chastota - 65534 Gts (va kvadrat to'lqinli 8 MGts gacha HS chiqishi). Va keyin men generatorni FPGA o'zini eng yaxshi ko'rsatishi mumkin bo'lgan ajoyib vazifa deb o'yladim. Sport masalasiga kelsak, men FPGA-da loyihani takrorlashga qaror qildim, shu bilan birga ikki hafta oxiri ichida belgilangan muddatlarni bajarib, parametrlarni aniq belgilanmagan, lekin maksimal mumkin. Bundan nima chiqqanini kesish ostida bilib olishingiz mumkin.

Nolinchi kun

Dam olish kunlari kelishidan oldin, men amalga oshirish haqida o'ylash uchun biroz vaqtim bor edi. Vazifamni soddalashtirish uchun men generatorni tugmalar va LCD displeyli alohida qurilma sifatida emas, balki USB orqali kompyuterga ulanadigan qurilma sifatida qilishga qaror qildim. Buning uchun menda USB2RS232 plata bor. Kengash haydovchilarni (CDC) talab qilmaydi, shuning uchun u Linux ostida ishlaydi deb o'ylayman (ba'zilar uchun bu muhim). Bundan tashqari, men allaqachon RS232 orqali xabarlarni qabul qilish bilan ishlaganimni yashirmayman. Men opencores.com saytidan RS232 bilan ishlash uchun tayyor modullarni olaman.

Sinus to'lqin signalini yaratish uchun sizga DAC kerak bo'ladi. Asl loyihada bo'lgani kabi DAC turini tanladim - R2R 8-bit. Bu sizga yuqori chastotalarda, megaherts tartibida ishlash imkonini beradi. Ishonchim komilki, FPGA buni engishi kerak

Men COM porti orqali ma'lumotlarni uzatish uchun dasturni qanday yozish haqida o'ylardim. Bir tomondan, siz Delphi7 da yozishingiz mumkin, sizda bunday dasturni yozish tajribangiz bor va bundan tashqari, bajariladigan fayl hajmi katta bo'lmaydi. Men HTML-sahifada java skripti ko'rinishida Serial bilan ishlash uchun biror narsani chizishga harakat qildim, lekin u ko'proq yoki kamroq faqat Chrome serial API orqali ishladi, lekin buning uchun plaginni o'rnatishingiz kerak ... umuman , bu ham gap emas. Men PyQt5-ni o'zim uchun yangilik sifatida sinab ko'rdim, lekin bunday loyihani tarqatishda siz bir nechta kutubxonalarni sudrab olishingiz kerak. PyQt loyihasini exe fayliga kompilyatsiya qilishga urinib ko'rganimizdan so'ng, u 10 MB dan ortiq bo'lib chiqdi. Ya'ni, u C++\Qt5 da yozilgan dasturdan yaxshiroq bo'lmaydi. Shuni ham hisobga olish kerakki, menda python-da rivojlanish bo'yicha tajribam yo'q, lekin Qt5da tajribam bor. Shuning uchun tanlov Qt5 ga tushdi. Beshinchi versiyadan boshlab serial bilan ishlash moduli paydo bo'ldi va men u bilan allaqachon ishlaganman. Qt5-ga asoslangan dasturni Linux va Mac-ga o'tkazish mumkin (ba'zilar uchun bu muhim) va 5.2 versiyasidan QWidgetlarga asoslangan ilovalar hatto smartfonga ham o'tkazilishi mumkin!

Yana nima kerak? Tabiiyki, platada FPGA mavjud. Menda ulardan ikkitasi bor (10 ming hujayra uchun Cyclone iv EP4CE10E22C8N va 5 ming hujayra uchun Cyclone ii EP2C5). Men faqat qulayroq ulagich tufayli chap tomonni tanlayman. Hajmi bo'yicha loyiha katta bo'lishni maqsad qilgan emas, shuning uchun u ikkalasiga ham mos keladi. Ular tezlikda farq qilmaydi. Ikkala platada ham bortda 50 MGts chastotali osilatorlar mavjud va FPGA ichida PLL mavjud, uning yordamida chastotani rejalashtirilgan 200 MGts ga oshirishim mumkin.

Birinchi kun

Sintezator loyihamda allaqachon DDS modulini yasaganim sababli, men darhol lehim temirini oldim va DACni rezistorlar bilan lehimlashni boshladim. Men prototip taxtasini oldim. O'rnatish yordamida amalga oshirildi. Texnologiyaga ta'sir qilgan yagona o'zgarish shundaki, men F38N kislotasidan voz kechib, TT ​​indikatorli oqim jeli foydasiga stendlarni qalay qildim. Texnologiyaning mohiyati oddiy: men tokchalarni bosilgan elektron plataga lehimlayman va bosilgan elektron plata tomonidan ularga rezistorlarni lehimlayman. Men etishmayotgan ulanishlarni burish orqali qilaman. Bundan tashqari, tokchalar qulay, chunki men ularni to'g'ridan-to'g'ri FPGA platasiga joylashtira olaman.

Afsuski, uyda 1 va 2 kilo-ohm rezistorlar mavjud emas edi. Do'konga borishga vaqt yo'q edi. Men qoidalarimdan biridan voz kechishim va eski keraksiz taxtadan rezistorlarni olib tashlashim kerak edi. U erda 15K va 30K rezistorlar ishlatilgan. Natijada bu Frankenshteyn:


Loyihani yaratgandan so'ng, siz maqsadli qurilmani o'rnatishingiz kerak: Menyu Assigments -> Device


Loyihada men boshqarilmaydigan asosiy DDS modulini belgilangan chastotaga kodladim.

1000 Hz generator moduli

modul signal_generator (clk50M, signal_out); kirish simi clk50M; sim chiqishi signal_out; tel clk200M; osc osc_200M reg akkumulyatori; signal_out = akkumulyatorni belgilash; //1000 Gts ni yaratishga harakat qiling //50 000 000 Gts - tashqi generatorning takt chastotasi //2^32 = 4,294,967,296 - DDS bit chuqurligi - 32 bit //1000Hz / 50,000,000 Gts ni ajrating / 29,000,000 Gts / har doim 2924, @729 = (posedge clk50M) akkumulyatorni ishga tushiring<= accumulator + 32"d42949; end endmodule


Shundan so‘ng, men “Kompilyatsiyani boshlash” tugmasini bosdim, shunda ishlab chiqish muhiti loyihaning asosiy modulida qanday kiritish/chiqish liniyalari borligi va ular qanday jismoniy PIN-kodlarga ulanganligini so‘raydi.Siz deyarli hamma bilan bog‘lanishingiz mumkin.Kompilyatsiyadan so‘ng, biz FPGA chipining haqiqiy PIN-kodlariga ko'rinadigan qatorlarni belgilang:

Menyu elementi Assigments -> Pin Planner

Iltimos, hozircha HS_OUT, key0 va key1 qatorlariga e'tibor bermang, ular loyihada keyinroq paydo bo'ladi, lekin boshida skrinshot olishga vaqtim yo'q edi.

Aslida, "Joylashuv" ustunida faqat PIN_nn-ni "ro'yxatdan o'tkazish" kifoya qiladi va qolgan parametrlar (I/U standarti, Current Strench va Slew Rate) sukut bo'yicha qoldirilishi mumkin yoki siz tomonidan taklif qilinganlarni tanlashingiz mumkin. hech qanday ogohlantirish bo'lmasligi uchun standart (standart) "ov.

Qaysi PIN-kod platadagi ulagich raqamiga mos kelishini qanday aniqlash mumkin?

Ulagichning pin raqamlari taxtada belgilangan


Va ulagich kontaktlari ulangan FPGA pinlari FPGA platasi bilan birga kelgan hujjatlarda tasvirlangan.




Pinlar tayinlangandan so'ng, men loyihani qayta kompilyatsiya qilaman va uni USB dasturchisi yordamida o'chirib qo'yaman. Agar sizda USB Byte blaster dasturchisi uchun drayverlar o'rnatilmagan bo'lsa, Windows-ga ular Quartus o'rnatilgan papkada joylashganligini ayting. Keyin uni o'zi topadi.

Dasturchi JTAG ulagichiga ulangan bo'lishi kerak. Va dasturlash uchun menyu elementi "Asboblar -> Dasturchi" (yoki asboblar panelidagi belgini bosing). "Ishga tushirish" tugmasi, quvonchli "Muvaffaqiyat" va proshivka allaqachon FPGA ichida va allaqachon ishlamoqda. Faqat FPGA-ni o'chirmang, aks holda u hamma narsani unutadi.

Asboblar -> Dasturchi


DAC FPGA plata ulagichiga ulangan. Men S1-112A osiloskopini DAC chiqishiga ulayman. Natijada "arra" bo'lishi kerak, chunki fazali akkumulyatorning DDS so'zining yuqori tartibli qismi 8 bitli chiqishga chiqariladi. Va u har doim to'lib toshib ketguncha ortadi.

Taxminan 1,5 soat va 1000 Gts chastotada men quyidagi oscillogrammani ko'raman:

Shuni ta'kidlashni istardimki, "arra" o'rtada kichik singan. Buning sababi rezistorlarning bir qator qiymatlarga ega bo'lishidir.

Yana bitta muhim nuqta, aniqlanishi kerak bo'lgan - bu DDS generatori ishlashi mumkin bo'lgan maksimal chastota. To'g'ri sozlangan TimeQuest parametrlari bilan "Tuzlama hisoboti" da kompilyatsiya qilingandan so'ng, kontaktlarning zanglashiga olib keladigan tezligi 200 MGts dan yuqori ekanligini ko'rishingiz mumkin. Bu PLL yordamida 50 MGts generator chastotasini 4 ga ko'paytiraman degan ma'noni anglatadi.DDS fazali akkumulyatorning qiymatini 200 MGts chastota bilan oshiraman. Bizning sharoitimizda olinishi mumkin bo'lgan oxirgi chastota diapazoni 0 - 100 MGts. Chastotani sozlash aniqligi:

200 000 000 Gts (clk) / 2^32 (DDS) = 0,047 Gts
Ya'ni, ~0,05 Gts dan yaxshiroqdir. Men bunday ish chastotalari diapazoni (0 ... 100 MGts) bo'lgan generator uchun hertsning bir qismining aniqligini etarli deb hisoblayman. Agar kimdir aniqlikni oshirishi kerak bo'lsa, buning uchun ular DDS bit chuqurligini oshirishi mumkin (TimeQuest Timing Analyzer-da mantiqiy zanjirning ishlash tezligi CLK = 200 MGts oralig'ida ekanligini tekshirishni unutmang, chunki bu toplayıcı) yoki oddiygina agar bunday keng chastota diapazoni talab qilinmasa, soat chastotasini kamaytiring.

TimeQuest vaqt tahlilchisi


Ekranda "ko'rdim" ni ko'rganimdan so'ng, oilaviy muammolar meni mamlakatga borishga majbur qildi (bu mening dam olish kunim edi). U erda men o'rgandim, pishirdim, mangal pishirdim va kechqurun meni kutayotgan syurpriz haqida hech qanday tasavvurga ega emasdim. Kechga yaqinroq, yotishdan oldin, men boshqa chastotalar uchun signal shakliga qarashga qaror qildim.

100 kHz chastota uchun

250 kHz chastota uchun

500 kHz chastota uchun

1 MGts chastota uchun

Ikkinchi kun

DAC 100 va 200 Ohm rezistorlarda qanday ishlashi qiziq bo'lganligi sababli, men darhol lehim temirini oldim. Bu safar DAC aniqroq bo'lib chiqdi va uni o'rnatish uchun kamroq vaqt kerak bo'ldi.

Biz DACni FPGA platasiga joylashtiramiz va uni osiloskopga ulaymiz

1 MGts tekshirilmoqda - VO! Bu butunlay boshqa masala!

10 MGts ni ko'rdim

25 MGts ni ko'rgan


10 MGts arra shakli hali ham to'g'ri shaklga o'xshaydi. Ammo 25 MGts chastotada u endi "chiroyli" emas. Biroq, C1-112a 10 MGts tarmoqli kengligiga ega, shuning uchun bu holda sabab allaqachon osiloskopda bo'lishi mumkin.

Asosan, DAC bilan bu masalani yopiq deb hisoblash mumkin. Endi yuqori tezlikdagi chiqishning to'lqin shakllarini olaylik. Buning uchun biz FPGA ning alohida PIN-kodiga eng muhim bitni chiqaramiz. Biz ushbu qator uchun ma'lumotlarni DDS akkumulyatorining eng muhim bitidan olamiz.

hs_out = akkumulyatorni belgilang;

Kvadrat to'lqin 1 MGts

Kvadrat to'lqin 5 MGts

Kvadrat to'lqin 25 MGts

50 MGts kvadrat to'lqin hozir deyarli ko'rinmas


Lekin menimcha, FPGA chiqishi qarshilik bilan yuklanishi kerak. Ehtimol, jabhalar tikroq bo'lar edi.

Sinus jadvalga muvofiq amalga oshiriladi. Jadval hajmi 8 bitning 256 qiymatidan iborat. Ko'proq olish mumkin edi, lekin menda allaqachon tayyor mif fayli bor edi. Sehrgardan foydalanib, mif faylidan sinus jadval ma'lumotlari bilan ROM elementini yaratamiz.

ROM yaratish - Asboblar -> Mega Wizard Plugin menejeri


1 port ROMni tanlang va modulga nom bering

Biz rozimiz

Bu erda biz ham rozi bo'lamiz

Browse-dan foydalanib, biz sinus jadvali bilan mif faylimizni topamiz

Biz bu erda ham hech narsani o'zgartirmaymiz.

Sine_rom_bb.v modulidan belgini olib tashlang - bu kerak emas. Keyingi tugatish. Quartus sizdan loyihaga modul qo'shishingizni so'raydi - biz rozimiz. Shundan so'ng, modul Verilog'dagi boshqa har qanday modul kabi ishlatilishi mumkin.


DDS akkumulyator so'zining yuqori 8 biti ROM manzili sifatida ishlatiladi va ma'lumotlar chiqishi sinus qiymati bo'ladi.

Kod

//sine rom sim sine_out; sine_rom sine1(.clock(clk200M), .manzil(akkumulyator), .q(sine_out));


Turli chastotalardagi sinus to'lqinining oscillogrammasi ... bir xil ko'rinadi.

Agar xohlasangiz, rezistor tarqalishi bilan bog'liq DAC muammolarini ko'rib chiqishingiz mumkin:

Xo'sh, dam olish kunlarining oxiri. Ammo kompyuterdan boshqarish uchun dasturiy ta'minot hali yozilmagan. Men rejalashtirilgan muddatlarni bajarmaganimni tan olishga majburman.

Uchinchi kun

Vaqt juda oz, shuning uchun dasturni shoshqaloqlik bilan yozamiz (eng yaxshi an'analarda). Ba'zi joylarda harflar sonini kamaytirish va klaviaturadan ma'lumotlarni kiritish qulayligi uchun vidjet nomi bilan hodisa filtri qo'llaniladi. Iltimos, tushuning va kechiring.

Interfeys

Analoglar bilan havolalar

To'liq ro'yxat emas
Funktsional DDS generatori. AVR asosida yaratilgan. Chastotalar 0… 65534 Hz.
GK101 DDS generatorini ko'rib chiqish. Altera MAX240 FPGA yordamida yaratilgan. 10 MGts gacha bo'lgan chastotalar.
PIC16F870 da ko'p funksiyali generator. Chastota diapazoni: 11 Hz - 60 kHz.
generatorlar
  • Qt5
  • Teglar qo'shing

    Men signal generatoridan uzoq vaqtdan beri foydalanaman. UDB1005S, muvofiq qurilgan DDS texnologiya, u Alida 30 dollarga sotib olingan.

    Qisqasi, seriya UDB100 x 3 ta modelni o'z ichiga oladi UDB1002, UDB1005, UDB1008, oxirgi raqam maksimal ish chastotasini aniqlaydi va oxiridagi S harfi, agar mavjud bo'lsa, generator qo'llab-quvvatlashini bildiradi. supurish_rejimi. Generator plis + mikron birikmasiga asoslanadi, mikron atrof-muhitga xizmat qiladi (tugmalar, kodlovchi, displey), plis esa signalni hosil qiladi.

    Generator amplituda va ofsetni sozlash qobiliyatiga ega bo'lgan bitta analog chiqishga ega doimiy kuchlanish, TTL darajali bitta raqamli, impuls hisoblagich rejimida va chastota hisoblagich rejimida ishlashi mumkin.

    Endi asosiy xususiyatlarni ko'rib chiqaylik.

    Analog chiqish:

    • Chiqish to'lqin shakli: sinus, kvadrat, arra tishi
    • Chiqish amplitudasi ≤9Vp-p (yuksiz)
    • Chiqish empedansi 50Ō±10%
    • DC ofset ± 2,5 V (yuksiz)
    • chastota diapazoni

      0,01Hz~2MHz(UDB1002S)
      0,01Hz~5MHz(UDB1005S)
      0,01Hz~8MHz(UDB1008S)

    • Chastota aniqligi ±5×10-6
    • Chastota barqarorligi ±1×10-6
    • Kvadrat to'lqinning ko'tarilish va tushish vaqti ≤100ns
    • Kvadrat to'lqin ish aylanishi 1% -99%
    TTL chiqishi:
    • chastota diapazoni

      0,01Hz~2MHz(UDB1002S)
      0,01Hz ~5MHz(UDB1005S)
      0,01Hz ~8MHz(UDB1008S)

    • Amplituda >3Vp-p
    • Yuk ko'tarish qobiliyati > 20TTL
    Hisoblagich funktsiyasi:
    • Puls hisoblagich diapazoni 0~4294967295
    • Chastotani o'lchagich diapazoni 1Hz ~ 60MHz
    • Kirish kuchlanish diapazoni 0,5Vp-p ~ 20Vp-p
    Tebranish chastotasi generatori(supurish_rejimi):
    • Chastota diapazoni fM1~fM2 (chastotalar oldindan o'rnatilgan)
    • Vaqt oralig'i 1s ~ 99s
    Qo'shimcha xususiyat: konfiguratsiyalarni saqlash va yuklash M0~M9(standart M0)

    Haqida supurish chastotasi generatori, uni sozlash uchun siz ikkita chastota qiymatini va generator chastotasi o'zgarishi vaqtini belgilashingiz kerak fM1 dan fM2 gacha. Agar kontaktlarning zanglashiga olib, turli chastotalarga qanday ta'sir qilishini bilib olishingiz kerak bo'lsa, bu juda qulaydir, masalan, supurish chastotasi generatoridan foydalanib, siz noma'lum elementlarga ega bo'lgan kontaktlarning zanglashiga olib keladigan chastotasini osongina topishingiz mumkin. Buning uchun generatorni nominal qiymati bir necha yuz Ohm bo'lgan ketma-ket ulangan rezistor orqali zanjirga ulaymiz va osiloskop probini kontaktlarning zanglashiga olib boramiz. Agar sxema ketma-ket bo'lsa, u holda rezonans chastotasida tebranish amplitudasi maksimal bo'ladi va parallel bo'lsa, u minimal bo'ladi. Osiloskop ekranida amplitudani yozib, kontaktlarning zanglashiga olib keladigan chastotasini bilib olishingiz mumkin.

    Ammo men mavzudan chetga chiqmayman, quyida men bir nechta oscillogrammalarni beraman turli xil turlari tebranishlar va turli chastotalar.
    Sinus 1 KHz


    Sinus 10 KHz


    Sinus 100 KHz


    Sinus 1 MGts


    Sinus 5 MGts

    1 KHz ni ko'rdim


    10 KHz ko'rdim


    100 KHz ko'rdim


    1 MGts ni ko'rgan


    5 MGts ni ko'rdim


    Bundan tashqari, arra moyilligini o'zgartirishingiz mumkin


    Kvadrat to'lqin 1 KHz


    Kvadrat to'lqin 10 KHz


    Kvadrat to'lqin 100 KHz


    Kvadrat to'lqin 1 MGts


    Kvadrat to'lqin 5 MGts

    TTL chiqishi bilan kvadrat to'lqin 100KHz


    TTL chiqishi bilan kvadrat to'lqin 1MHz


    TTL chiqishi bilan kvadrat to'lqin 5MHz

    Oscillogrammalar chastota barqarorligi e'lon qilinganidan juda farq qilishini ko'rsatadi; Shuni ham ta'kidlashni istardimki, agar to'rtburchaklar signalning chastotasi 1 MGts dan oshsa, signal kuchli titray boshlaydi.
    Chastotani o'lchagichni tekshirish uchun signal osiloskop kalibratoridan olingan; pasport ma'lumotlariga ko'ra, uning chiqishi 1KHz chastotali kvadrat to'lqinga ega bo'lishi kerak, chastota o'lchagich aniq 1KHz ni ko'rsatdi. Men puls hisoblagich rejimini sinab ko'rmadim.

    Yuqorida aytilganlarning barchasi afzalliklarga bog'liq bo'lishi mumkin, ammo $ 30 uchun signal generatoridan nimani xohlashingiz mumkin? Va endi salbiy tomonlari, ulardan faqat ikkitasi bor, nima uchun.....
    Umuman olganda, bu generator juda shovqinli bo'lgan kommutatsiya elektr ta'minoti tizimiga ega. Quyidagi oscillogramma generatorning chiqishida signal bo'lmaganda nima sodir bo'lishini ko'rsatadi.


    lekin bu amplitudani sozlash bilan solishtirganda kichik narsa; amplitudani sozlash tugmachasini aylantirganda, ikkinchisi sakrashda o'zgaradi, shuning uchun 100mV xatolik bilan kerakli amplitudani o'rnatish juda qiyin.

    YouTube-da "Ali signal generatori" ni tezkor qidirish shuni ko'rsatdiki, amplitudasi aniq o'rnatilishi mumkin bo'lgan signal generatori ancha qimmatroq, shuning uchun narx-navo nisbati bo'yicha bu generator tengsizdir.
    Men generator sotib oldim.



    mob_info