Mundarija:

4 bosqichli raqamli ketma -ketlik: 19 qadam (rasmlar bilan)
4 bosqichli raqamli ketma -ketlik: 19 qadam (rasmlar bilan)

Video: 4 bosqichli raqamli ketma -ketlik: 19 qadam (rasmlar bilan)

Video: 4 bosqichli raqamli ketma -ketlik: 19 qadam (rasmlar bilan)
Video: Sehrli kvadratcha. Магический квадрат. Matematika. #shorts 2024, Noyabr
Anonim
4 bosqichli raqamli ketma -ketlik
4 bosqichli raqamli ketma -ketlik
4 bosqichli raqamli ketma -ketlik
4 bosqichli raqamli ketma -ketlik

CPE 133, Cal Poly San -Luis Obispo

Loyiha mualliflari: Jeyson Jonston va Byorn Nelson

Zamonaviy musiqa sanoatida eng ko'p ishlatiladigan "asboblar" dan biri bu raqamli sintezator. Musiqaning har bir turi, xip-xopdan pop va hatto mamlakatgacha, o'z musiqalarini jonlantirish uchun zarur bo'lgan zarba va tovushlarni yaratish uchun studiyada raqamli sintezatordan foydalanadi. Ushbu qo'llanmada biz Basys 3 FPGA platasi bilan juda oddiy sintezatorni yaratamiz.

Sintezator to'rtta tanlangan chorak notani daqiqada doimiy zarbada ijro eta oladi. Foydalanuvchilar har choraklik notani musiqiy maydonga tayinlash uchun kalitlardan foydalanadilar. Ushbu loyiha uchun biz 4-bitli raqamli-analogli konvertordan (DAC) foydalanamiz, bortdan chiqishni olib, uni analog signalga aylantiramiz. Keyin DAC chiqishi standart kompyuter dinamikiga beriladi, bu bizning musiqamizni yaratadi. O'n oltita alohida maydonchalar bo'lishi mumkin. Biz sintezatorimizni 12 notadan iborat bitta oktava bilan cheklaymiz, ular C (261,6 Gts) va B4 (493,9 Gts) o'rtasida joylashgan. Shuningdek, foydalanuvchi bir vaqtning o'zida bir nechta eslatmalarni tayinlashi mumkin, shuningdek, tugmachalarni yuqoriga siljitmagan holda, tayinlash orqali dam olishni belgilash mumkin. Har bir nota tanlangan va ijro etilayotganda, harfli nota 7 segmentli displeyda ko'rsatiladi. Shuningdek, biz bortdagi uchta tugmachadan foydalanamiz, bittasi musiqani ijro etish va to'xtatib turish uchun, bittasi sintezatorni qayta o'rnatish va "tanlash" rejimiga o'tkazish uchun, uchinchisi esa har bir notaga tanlov rejimida balandlik berish.

Foydalanuvchi eslatmalarni tanlashdan qoniqqanidan so'ng va ijro tugmachasini bosgandan so'ng, sintezator har bir eslatmani ketma -ket ijro etadi, foydalanuvchi pauza yoki tanlash tugmachasini bosmaguncha.

Bu erda kerakli uskunalar ro'yxati:

  • Vivado (yoki har qanday VHDL ish joyi)
  • Basys 3 yoki shunga o'xshash FPGA kartasi
  • Raqamli-analogli konvertor (min. 4-bit)
  • Eshitish vositasi ulagichi bo'lgan karnay
  • Tel o'tkazgichlari

1 -qadam: Raqamli ketma -ketlikning foydalanuvchilar bilan ishlashi

Raqamli ketma -ketlikning foydalanuvchilar bilan ishlashi
Raqamli ketma -ketlikning foydalanuvchilar bilan ishlashi

Raqamli ketma -ketlikni ishga tushirish uchun quyidagi qadamlar qo'yiladi. Raqamli ketma -ketlik 261,6 Gts dan 493,9 Gts gacha bo'lgan 12 ta aniq maydonni (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B) ijro etishni qo'llab -quvvatlaydi.

1. Taxtani tanlash rejimiga o'tkazish uchun chap tugmani bosing. Qachonki bu rejimda, eng chapdagi 4 ta kalit (13 dan 16 gacha) har biri aniq balandlik qiymatini saqlash uchun ishlatiladi.

2. Tanlovni amalga oshirish uchun chap tugmachalardan birini aylantiring, so'ngra o'ng burchakdagi 4 ta kalitni (1dan 4gacha o'tuvchi) ishlatib kerakli balandlikni tanlang. O'ng kalitlarning ma'lum bir kombinatsiyasi bilan bog'liq qadam etti segmentli displeyda ko'rsatiladi va o'ng kalitlar yangi kombinatsiyaga o'tkazilganda, displey yangi bog'langan maydonga yangilanadi. Qolganini hech qachon chap tugmachalarga bermaslik yoki yozuvga displeyda 0 sifatida ko'rsatilgan balandlikni belgilash orqali tayinlash mumkin. Kerakli balandlik topilgach va displeyda ko'rsatilgandan so'ng, pastki qismni belgilash tugmachasini bosib, ma'lum bir ohangni notaga tayinlang.

3. Qolgan uchta kalit uchun 2 -bosqichni takrorlang, qolgan chap kalitlarning har birini alohida -alohida aylantiring, o'ng tugmachalari bilan mos keladigan balandlikni tanlang va pastdagi tugmani bosib notani notaga belgilang. Bir vaqtning o'zida bir nechta chap tugmachani yuqoriga siljitish orqali bir nechta eslatmalarni bir xil balandlikka berish mumkin.

4. Endi barcha nota maydonlari tayinlanganidan so'ng, raqamli sekvener o'ynashga tayyor. Karnayda yozuvlarni ijro etish uchun musiqani ijro etishni boshlash uchun o'ngdagi ijro/pauza tugmasini bosish kifoya. Ijro etish tartibining tartibi chapdan o'ngga, chap tugmalar bilan bog'liq maydonlarni aks ettiradi. Notalar 1, 2, 3, 4, 1, 2 tartibda, daqiqada belgilangan sonda uriladi. Karnay musiqani ijro etayotganda displeyda hozirda ijro etilayotgan nota ko'rsatiladi. Musiqani to'xtatib turish uchun o'ng tugmani bosish kifoya qiladi, shundan so'ng musiqa to'xtaydi va displeyda pauza belgisi paydo bo'ladi. O'ng tugmachani qayta bosish ijro etishni davom ettiradi.

2 -qadam: Texnik tafsilotlar

Texnik tafsilotlar
Texnik tafsilotlar

Bizning sintezatorimiz turli xil raqamli komponentlardan foydalanadi. Cheklangan davlat mashinalari, registrlar, multipleksorlar, soat ajratgichlar va boshqalar kiradi. Sintezatorni yaratish uchun biz 10 ta noyob modulli fayllardan foydalanganmiz. Har bir modulni komponentga aylantirish o'rniga, biz funktsional modulli fayllarni ajratdik. Modullarning aksariyati, natijada, bir nechta komponentdan iborat. E'tibor bering, yuqoridagi rasmda har bir blok bizning eng yaxshi dizaynimizda bog'langan.

Biz har bir modulni kirish va chiqishlarni tavsiflash, uning tarkibiy qismlarini ajratish va umumiy dizayndagi maqsadini tushuntirish orqali muhokama qilamiz. Ko'rsatmalarning pastki qismiga ZIP fayli kiritilgan, u loyihada ishlatiladigan har bir VHDL kodli faylni o'z ichiga oladi.

Kirishlar

  • Clk (mahalliy soat signali)
  • PP (ijro etish/pauza)
  • Sel (sintezatorni tanlash rejimiga qo'ying)
  • Tayinlash (qadamga qadam qo'ying)
  • Qadam (pozitsion eslatmalar)
  • Freq (kerakli balandlikni yaratadigan kalitlar)

Chiqish

  • Anod (7 segmentli anodlar)
  • Katod (7 segmentli katodlar)
  • DAC (DACni boshqaruvchi 4-bit)

3 -qadam: Texnik tafsilotlar

Texnik tafsilotlar
Texnik tafsilotlar

4-qadam: 7 segmentli soatni ajratuvchi

7 segmentli soatni ajratuvchi
7 segmentli soatni ajratuvchi

Bizning sintezatorimiz uchta soat taqsimlagichidan foydalanadi, ularning barchasi bizning loyihamizda boshqa maqsadga xizmat qiladigan signallarni ishlab chiqaradi. Soat taqsimlagichi mahalliy soat signalini oladi va chastotasi asl soat signalidan past bo'lgan o'zgartirilgan signal chiqaradi. Basys 3 ning mahalliy soati - 100 MGts. Bu bizning soat taqsimlagichlarimiz ishlatadigan chastota. Agar siz boshqa mahalliy chastotali boshqa FPGA kartasidan foydalansangiz, kodni o'zgartirishingiz kerak bo'ladi.

7 segmentli soat ajratgichi seg_display faylini boshqaradigan signal chiqaradi. Biz uning bo'limiga kirganimizda, bu fayl qanday ishlashini batafsilroq tushuntiramiz. Asosan, bu soatni ajratuvchi 240 gigagertsli signalni ishlab chiqaradi, u displeyda anodlar va katodlar o'rtasida almashish uchun ishlatiladi. Signal 240 Gts, chunki inson ko'zining yorug'lik yo'qligini aniqlay olmaydigan chastotasi 60 Gts. Biz ikkita raqamdan foydalanmoqdamiz, shuning uchun bu chastotani ikki baravar oshirish orqali har bir raqam 60 Gts da tebranadi. Keyin biz 240 Gts tezlikni ikki barobarga oshiramiz, chunki tizim past bo'lganda emas, balki signal baland bo'lganda o'zgaradi.

Bunga erishish uchun bo'linuvchi 100 MGts chastotali mahalliy signalni oladi va har bir ko'tarilgan chekkada hisoblaydi. Hisoblagich 416667 ga yetganda, chiqish pastdan yuqoriga o'tadi yoki aksincha.

Kirishlar

Clk (mahalliy soat signali)

Chiqish

Clk_7seg (seg_displayga)

Komponentlar

  • D ro'yxatga olish
  • MUX
  • Inverter
  • Adder

5 -qadam: Har daqiqada soat taqsimoti

Har bir daqiqada urish
Har bir daqiqada urish

BPM soat taqsimlagichi xuddi shunday ishlaydi. Bu bo'luvchi soat chastotasini ishlab chiqaradi, bu esa o'yin holatida ohanglarni chiqarishda to'rt bosqichni o'zgartiradi. Biz 100 BPM da eslatmalarni almashtirishga qaror qildik. 100 BPMda har bir nota soniyaning 3/5 qismini o'ynaydi. Olingan signal 1,67 Gts chastotaga ega bo'ladi.

Bu chastotali signalni ishlab chiqarish uchun biz yana hisoblash tizimidan foydalandik, lekin bu safar bu raqam 60 mln. Har safar hisoblagich 60 millionga tushganda, chiqish signali yuqori yoki pastga o'tadi.

Kirishlar

Clk (mahalliy soat chastotasi)

Chiqish

Clk_BPM (output_FSM ga)

Komponentlar

  • D ro'yxatga olish
  • MUX
  • Inverter
  • Adder

6 -qadam: soatni ajratuvchi

Pitch Clock Divider
Pitch Clock Divider

Pitch Clock Divider - bu bizning soat taqsimlagichlarining eng kattasi. Bu ajratuvchi bizning sintezatorimiz o'ynashi mumkin bo'lgan 12 xil yozuvga mos keladigan 12 xil signal chiqaradi. Musiqa nazariyasi haqidagi asosiy bilimlardan foydalanib, biz bit yoki avtobus musiqiy notalar chastotasiga mos keladigan tezlikda tebranishi mumkinligini aniqladik. Biz ishlatgan chastotalarni ko'rish uchun mana bu erga qarang. Biz to'rtinchi oktavli maydonlardan foydalandik.

Bu erda ham xuddi shunday hisoblash tizimi ishlatiladi. Biz hisoblagan aniq qiymatlar uchun Clk_div_pitches faylini ko'ring.

Kirishlar

Clk (mahalliy soat chastotasi)

Chiqish

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (chiqish_ tanlash uchun)

Komponentlar

  • D ro'yxatga olish
  • MUX
  • Inverter
  • Adder

7 -qadam: o'ynash/pauza qilish/davlat mashinasini tanlash

Davlat mashinasini ijro etish/to'xtatib turish/tanlash
Davlat mashinasini ijro etish/to'xtatib turish/tanlash

Bizning loyihamizda ikkita cheklangan davlat mashinasi (FSM) mavjud. FSM - bu cheklangan miqdordagi holatlardan faqat bitta holatda bo'lishi mumkin bo'lgan mantiqiy qurilma. FSM -dan foydalanib, raqamli sxema kirishlar kombinatsiyasi asosida yangi holatga o'tishi mumkin. Kirish mantig'idan foydalangan holda, FSM holati soat qirrasi ko'tarilganda o'zgaradi. Sxema holatidan va kirishlaridan siz faqat FSM ma'lum bir holatda bo'lsa, mavjud bo'lgan chiqish mantig'ini yaratishingiz mumkin.

PPS davlat mashinasi - bizning davrimizdagi birinchi FSM. Ushbu FSMda uchta holat mavjud; O'ynash, pauza qilish va tanlash rejimi. Turli holatlarda harakat qilish uchun biz PP va Tanlash tugmalaridan foydalanganmiz. Shtatlar orasidagi o'tish qanday sodir bo'lishini bilish uchun yuqoridagi holat diagrammasini ko'ring. Biz bu FSM o'tishni 100 MGts chastotali soatning yuqori chetida qildik, shunda tugmalardan biri bosilganda, hatto juda qisqa vaqt davomida ham, mashinaning o'tib ketishi mumkin emas edi. Hozirgi holat (P_state) - bu moduldan yagona chiqish.

Kirishlar

  • Clk (mahalliy soat chastotasi)
  • Sel (chap tugma)
  • PP (o'ng tugma)

Chiqish

P_state (hozirgi holat, output_FSM, note_assign, seg_dsiplay, final_select)

Komponentlar

  • MUX
  • D ro'yxatga olish

8 -qadam: o'ynash/pauza qilish/davlat mashinasini tanlash

Davlat mashinasini ijro etish/to'xtatib turish/tanlash
Davlat mashinasini ijro etish/to'xtatib turish/tanlash

9 -qadam: FSM chiqish

FSM chiqish
FSM chiqish

Bu oldingi bo'limda ko'rsatilgan ikkinchi FSM. Bu FSM boshqasidan farqli vazifani bajaradi, lekin buning asosi mohiyatan bir xil.

Chiqish FSM faqat birinchi FSMdan hozirgi holat "01" (ijro holati) bo'lsa ishlaydi. Asosan, bu modulni yoqish. Agar holat "01" bo'lsa, FSM BPM soat signalining ko'tarilgan chekkasidagi holatlar o'rtasida almashadi. Biz buni qilamiz, chunki output_FSM tanlangan maydon uchun qaysi ikkilik raqamni output_select va seg_display modullariga yuborilishini nazorat qiladi. FSMda eslatmani belgilash modulidan keladigan 16-bitli kirish bor, u keyingi bo'limda ko'rib chiqiladi. Output_FSM uchun "00" holatida, modul tayinlangan birinchi eslatma uchun "xxxx" ni chiqaradi. Keyin "01" da, u ikkinchi notaga "yyyy" ni chiqaradi va shunga o'xshash har bir eslatma uchun birinchi notaga o'tishdan oldin. Yuqoridagi holat diagrammasini ko'ring.

Bu FSM birinchisidan farq qiladi, chunki holatlar o'rtasida o'tishni boshqarish uchun kirish mantig'i yo'q. Buning o'rniga, FSM faqat birinchi FSM holati "01" bo'lganida ishlaydi, keyin bu FSM faqat soat signalining ko'tarilgan chekkasida joylashgan davlatlar o'rtasida o'tadi. Yana bir farq shundaki, bu modul chiqish mantig'iga ega, ya'ni u hozirgi holatni chiqarmaydi, shu holatdagi balandlik uchun ikkilik raqamni chiqaradi.

Kirishlar

  • Clk_BPM (soat taqsimlagichidan BPM soat signali)
  • FSM1_state (PPS FSM dan PS)
  • Pitch_in (note_assign -dan ovozlar)

Chiqish

Pitch_out (bir vaqtning o'zida bitta chiqish, chiqish_ tanlash va seg_display uchun)

Komponentlar

  • MUX
  • D ro'yxatga olish

10 -qadam: FSM chiqish

FSM chiqish
FSM chiqish

11 -qadam: Eslatma tayinlash

Eslatma tayinlash
Eslatma tayinlash

Eslatmalarni belgilash moduli, pozitsion eslatma yoki qadamga haqiqatdan ham ovoz berish uchun javobgardir. Bu modul aslida juda oddiy. U birinchi navbatda, sxemaning "tanlash" holatida ekanligini va qadam tugmasi (chapda) balandligini tekshiradi. Agar bu rost bo'lsa va tayinlash tugmasi bosilsa, modulning chiqishi chastota kalitlari bilan ko'rsatilgan ikkilik raqamga teng bo'ladi (o'ngda).

Dastlab, biz signalli signallardan birini chiqishda saqlaydigan modul yaratishga harakat qilgan edik, lekin biz kirish soati signallariga rioya qilish uchun chiqish o'zgarishi bilan bog'liq muammolarga duch keldik. Bu oxirgi dizaynda bir necha bor ishlatilgan yagona modul. Har bir qadamda u bilan bog'liq note_assign moduli mavjud va shuning uchun modulning har bir nusxasi Step avtobusining bir qismini oladi.

Kirishlar

  • P_state (hozirgi holat PPS FSM dan)
  • Sel (chap tugma)
  • Kalit (bir qadamli o'tish)
  • Chastotani (balandlikni o'ngga almashtirish)
  • Belgilash (pastki tugma, eslatmani belgilaydi)

Chiqish

Pitch (ikkilik raqam, output_FSM uchun)

Komponentlar

  • MUX
  • D qayta ro'yxatdan o'tish

12 -qadam: Chiqishni tanlash

Chiqish tanlash
Chiqish tanlash

Chiqish tanlovi ikkilik raqamni balandlik uchun qabul qilish va uni tegishli soat signaliga ulash uchun javobgardir. Hajmiga qaramay, bu ham nisbatan oddiy modul. Output_select asosan ikkilik dekoder bo'lib, ikkilik raqamni ma'lum bir soat signaliga aylantiradi. Chiqishni soat chastotasiga belgilash, bu erda note_assign moduliga qaraganda yaxshiroq ishladi, chunki bu modulni boshqaruvchi kirishni ifodalovchi ikkilik raqamli MUX soat signallari etarli edi.

G'alati marshrut uchun uzr so'raymiz, Vivado clk_div_pitches fayli uchun signallarni alifbo tartibida uyushtirgan, lekin bu fayl uchun ularni ikkilik raqamning ko'tarilishi bilan tartibga solgan, bu esa maydonlarni boshqa tartibda bo'lishiga olib kelgan. Shuni ham unutmangki, agar output_FSM dan ikkilik raqam "0000" yoki "1100" dan katta bo'lsa, MUX tekis "0" signali orqali yuboriladi.

Kiritish

  • Pitch (output_FSM dan);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (pitch soat signallari)

Chiqish

Ohang (tanlangan soat signaliga mos keladigan bitta bit, kvadrat_ to'lqin uchun)

Komponentlar

MUX

13 -qadam: Kvadrat to'lqinlar generali

Kvadrat to'lqin Gen
Kvadrat to'lqin Gen

Square_wave moduli - bu DAC -ga taxtadan uzatiladigan kvadrat to'lqinlar uchun generator. Oldingi fayldagi ohang signalidan foydalanib, bu square_wave 4 -bitli raqamni "0000" va "1111" orasidagi ohangning ko'tarilgan chetiga teskari aylantiradi. Ohang - bu ma'lum bir chastota chastotasi, shuning uchun square_wave chiqish_FSM boshqa holatga o'tganda boshqa chastotali to'lqin hosil qiladi. Ushbu moduldan 4-bitli chiqish fin_sel moduliga o'tadi, bu erda mantiq bu avtobusning PPS FSM holatiga qarab chiqarilishini belgilaydi.

Bu kvadrat to'lqin generatoriga muqobil sinus to'lqin ishlab chiqaradi. Bu, ehtimol, yaxshiroq yakuniy ohangni yaratsa -da, uni amalga oshirish ancha qiyin, shuning uchun biz faqat kvadrat to'lqinni yaratishni tanladik.

Kirishlar

Ohang (output_select dan tebranuvchi bit)

Chiqish

DAC_input (bir xil ohang chastotasida o'zgarib turuvchi 4-bitli tebranuvchi avtobus)

Komponentlar

  • Inverter
  • D ro'yxatga olish

14-qadam: 7 segmentli displey

7 segmentli displey
7 segmentli displey

Seg_display moduli bizning bazamizdagi 7 segmentli displeyni boshqaradi. Modul ichida ikkita jarayon sodir bo'ladi. Birinchi jarayon "tanlash" holatida yoki "ijro" rejimida Pitch -da Freq kodini ochadi. "To'xtatib turish" rejimida modul dekodlanadi va pauza belgisini ko'rsatadi. VHDL kodiga qarab, ikkilik dekoder aslida kirishni ikki xil signalga, katod1 va katod2 ga ajratishini ko'rishingiz mumkin. Katod1 ko'rsatiladigan maydonga mos keladigan harfni, katod2 esa yassi belgini (b) ifodalaydi. Buning sababi seg_display moduli tomonidan bajarilgan ikkinchi jarayon bilan bog'liq.

Basys3 taxtasida segment displeyi umumiy katodlarga ega. Anodlar qaysi raqam yoqilganligini nazorat qilsa, katodlar qaysi segmentlar yoqilganligini boshqaradi. Displeyda umumiy katodlar bo'lgani uchun, siz bir vaqtning o'zida faqat bitta segmentlar guruhini ko'rsatishingiz mumkin. Bu loyiha uchun muammo tug'diradi, chunki biz bir vaqtning o'zida birinchi raqamdagi harfni va tekis belgini ko'rsatishni xohlaymiz. Endi 7seg soat signalini eslaysizmi? Bu muammoni hal qilish uchun biz anod va katodlarni 7seg soat signalida oldinga va orqaga o'zgartiramiz. Chunki soat signali 240 Gts va biz ikkita raqamdan foydalanamiz, har bir raqam 60 Gts da tebranadi. Inson ko'ziga, raqamlar umuman tebranmaganga o'xshaydi.

Shuni ham unutmangki, basys3 taxtali displeyi salbiy mantiqdan foydalanadi. Bu shuni anglatadiki, agar anod yoki katod "0" ga o'rnatilgan bo'lsa, bu raqam yoki segment yoniq bo'ladi va aksincha.

Kirishlar

  • Pitch (notaning ikkilik raqami, o'yin holatida ishlatiladi)
  • Chastotani (chastota kalitlari, tanlash holatida ishlatiladi)
  • P_state (hozirgi holat PPS FSM dan)
  • Clk_240Hz (Clk_div_7seg dan soat signali, ikki barobar 120, chunki biz faqat ko'tarilgan chetidan foydalanmoqdamiz)

Chiqish

  • Katod (displey segmentlarini boshqaruvchi avtobus, yakuniy chiqish)
  • Anod (displeydagi raqamlarni boshqaruvchi avtobus, yakuniy chiqish)

Komponentlar

  • Mandal
  • MUX
  • D ro'yxatga olish

15 -qadam: Yakuniy tanlov

Yakuniy tanlov
Yakuniy tanlov

Yakuniy tanlov - bu loyihada ishlatiladigan oxirgi modul. Yana bir oddiy modul, bu modul DAC ga o'tadigan yakuniy chiqishni boshqaradi. "Tanlash" yoki "pauza" holatida, modul statik "0000" ni chiqaradi, shunda dinamiklardan musiqa eshitilmaydi. "O'ynash" holatida, modul kvadrat_wave tomonidan aniqlangan 4-bitli tebranishni chiqaradi.

Kirishlar

  • P_state (hozirgi holat PPS FSM dan)
  • DAC_input (square_wave-dan 4-bitli tebranuvchi)

Chiqish

DAC (o'yin holatida DAC_input ga teng, yakuniy chiqish)

Komponentlar

MUX

16 -qadam: Tashqi qurilmalar: DAC

Tashqi qurilmalar: DAC
Tashqi qurilmalar: DAC

Raqamli -analogli konvertor (DAC) diskret signalni oladi va uni uzluksiz signalga aylantiradi. Bizning DAC to'rtta bitga ega va yig'ish kuchaytirgichidan qilingan. Ta'minot va teskari aloqa davridagi rezistorlar nisbatidan foydalanib, biz har xil bo'laklarning "yig'indisi" yordamida 16 xil darajadagi chiqadigan tizimni yaratishga muvaffaq bo'ldik. Bit0, eng yuqori novda, eng kam vaznga ega va yuqori qarshilikka ega bo'lgani uchun eng kichik salohiyatga ega. Filiallardan tushganingizda og'irlik oshadi. Agar siz bitli kirishlar yordamida ikkilikni yuqoriga, so'ngra orqaga qaytarishni hisoblasangiz, chiqish kuchlanishlari sinus to'lqiniga o'xshaydi. DAC-ga kirish 4-bitli signalni uzatish uchun bortdagi PMOD-lardan biriga ulangan.

DAC dastlab "Elektrotexnika" sinfiga yig'ilgan va uni biz do'kondan sotib olmaganmiz. Yuqorida bosilgan elektron kartani yaratish uchun dizayn faylining tasviri.

17 -qadam: Tashqi qurilmalar: Karnay

Tashqi qurilmalar: dinamik
Tashqi qurilmalar: dinamik

Ushbu loyiha uchun siz juda yaxshi karnaylarni sotib olishni xohlamaysiz. Aytganingizdek, ovoz juda oddiy. Biz borib, Best Buydan 8 dollarlik kompyuter dinamiklarini sotib oldik. Eshitish vositasi ulagichi bo'lgan hamma narsa yaxshi ishlaydi. Monoton ham yaxshi ishlaydi. Siz hatto minigarnituralardan ham foydalanishingiz mumkin, lekin siz ularni portlatib yuborishingiz mumkin!

DAC chiqishini karnaylarga ulash uchun biz o'tish kabellarini ishlatdik, keyin chiqish kabelini eshitish jakining uchiga va topraklama kabelini taglikka tutdik. Kabellarni joyida ushlab turish uchun elektr tasmasini ishlatishga harakat qildik, lekin bu juda ko'p shovqinlarni keltirib chiqardi. Boshqa uslubdagi lentani sinab ko'rish bu muammoni hal qilishi mumkin.

Spikerlarimiz uchun biz ularni eng yuqori darajaga o'tkazdik va juda baland ovozga ega bo'ldik.

Va bu FPGA kartasidan raqamli sekanser yaratishning oxirgi bosqichi! Keyingi ikkita bo'limga o'ting, bizning barcha VHDL kodimizni yuklab oling va ketma -ketlikni amalda ko'ring.

18 -qadam: video demo

Bu videoda ishchi loyihaning yakuniy versiyasi, shu jumladan, kalitlarni 4 ta aniq maydonga tayinlash jarayoni va ma'ruzachilar tegishli yozuvlarni ijro etishlari ko'rsatilgan.

19 -qadam: VHDL kodi

Bu erda butun loyihaning kodi, shu jumladan sekvener tuzishda ishlatiladigan cheklovlar va sim fayllar. E'tibor bering, ishlatilmaydigan dizayn fayllari arxitekturada shunday deyilgan.

Tavsiya: