Përmbajtje:

Sekuencer dixhital me 4 hapa: 19 hapa (me fotografi)
Sekuencer dixhital me 4 hapa: 19 hapa (me fotografi)

Video: Sekuencer dixhital me 4 hapa: 19 hapa (me fotografi)

Video: Sekuencer dixhital me 4 hapa: 19 hapa (me fotografi)
Video: Rihanna - Umbrella (Orange Version) (Official Music Video) ft. JAY-Z 2024, Korrik
Anonim
Sekuencer dixhital me 4 hapa
Sekuencer dixhital me 4 hapa
Sekuencer dixhital me 4 hapa
Sekuencer dixhital me 4 hapa

CPE 133, Cal Poly San Luis Obispo

Krijuesit e projektit: Jayson Johnston dhe Bjorn Nelson

Në industrinë e sotme muzikore, një nga "instrumentet" më të përdorur është sintetizuesi dixhital. Çdo zhanër i muzikës, nga hip-hop në pop dhe madje edhe country, përdor një sintetizues dixhital në studio për të krijuar ritmet dhe tingujt që u duhen për të sjellë në jetë muzikën e tyre. Në këtë tutorial, ne do të krijojmë një sintetizues shumë të thjeshtë me tabelën Basys 3 FPGA.

Sintetizuesi do të jetë në gjendje të luajë katër shënime të përzgjedhura tremujore me një numër konstant të rrahjeve në minutë. Përdoruesit do të përdorin çelsin për të caktuar çdo shënim tremujor në një fushë muzikore. Për këtë projekt ne po përdorim një konvertues dixhital në analog 4-bit (DAC) për të marrë daljen nga bordi dhe për ta kthyer atë në një sinjal analog. Dalja nga DAC më pas do të furnizohet me një altoparlant standard të kompjuterit, duke krijuar muzikën tonë. Gjashtëmbëdhjetë terrene diskrete janë të mundshme. Ne do ta kufizojmë sintetizuesin tonë në një oktavë të vetme prej 12 notash, të cilat bien midis C mesme (261.6 Hz) dhe B4 (493.9 Hz). Përdoruesi gjithashtu do të ketë mundësinë e caktimit të shënimeve të shumta në të njëjtën kohë, si dhe caktimin e një pushimi duke goditur caktimin ndërsa asnjë nga çelsat e hapjes nuk zhvendoset lart. Ndërsa çdo notë zgjidhet dhe luhet, shënimi i shkronjës shfaqet në ekranin me 7 segmente. Ne gjithashtu do të përdorim tre nga butonat në tabelë, një për të luajtur dhe ndaluar muzikën, një për të rivendosur sintetizuesin dhe për ta vënë atë në modalitetin "përzgjedhje", dhe i treti për t'i caktuar secilës shënim një hap kur jeni në modalitetin e përzgjedhjes.

Pasi përdoruesi të jetë i kënaqur me zgjedhjen e shënimeve të tij, dhe pasi të ketë shtypur butonin e luajtjes, sintetizuesi do të luajë secilën shënim njëra pas tjetrës derisa përdoruesi ose të shtypë pauzë ose të zgjedhë.

Këtu është një listë e pajisjeve të kërkuara:

  • Vivado (ose ndonjë hapësirë pune VHDL)
  • Basys 3 ose bordi i ngjashëm FPGA
  • Konvertuesi dixhital në analog (min. 4-bit)
  • Altoparlant me prizë kufje
  • Teli i telave

Hapi 1: Funksionimi i përdoruesit të sekuencerit dixhital

Funksionimi i Përdoruesit të Sekuencerit Dixhital
Funksionimi i Përdoruesit të Sekuencerit Dixhital

Hapat e mëposhtëm janë për të përdorur sekuencerin dixhital. Sekuenceri dixhital mbështet riprodhimin e 12 fushave të dallueshme (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B), të cilat variojnë nga 261.6 Hz në 493.9 Hz.

1. Shtypni butonin e majtë për ta vendosur tabelën në modalitetin e përzgjedhjes. Kur jeni në këtë mënyrë, 4 ndërprerësit më të majtë (çelsat 13 në 16) secili do të përdoret për të ruajtur një vlerë të veçantë të lartësisë.

2. Për të bërë një përzgjedhje, rrokullisni njërin nga çelsat e majtë dhe më pas përdorni 4 çelsat më të djathtë (çelsat 1 deri në 4) për të zgjedhur lartësinë e dëshiruar. Hapi i lidhur me një kombinim specifik të çelsave të djathtë do të shfaqet në ekranin me shtatë segmente dhe ekrani do të azhurnohet në hapin e ri të lidhur sa herë që çelsat e djathtë zhvendosen në një kombinim të ri. Një pushim mund të caktohet duke mos i caktuar kurrë një hap në njërin nga çelsat e majtë, ose duke caktuar një hap të treguar si 0 në ekran në shënim. Pasi të gjendet niveli i dëshiruar dhe të shfaqet në ekran, shtypni butonin e poshtëm të caktimit për të caktuar atë lartësi të veçantë në shënim.

3. Përsëriteni hapin 2 për tre shënimet e mbetura, duke rrokullisur secilin nga ndezësit e mbetur të majtë individualisht, duke zgjedhur hapin përkatës me çelsat e djathtë dhe duke shtypur butonin e poshtëm për të caktuar lartësinë në shënim. Shënime të shumëfishta mund të caktohen në të njëjtën lartësi duke zhvendosur më shumë se një nga çelsat e majtë lart në të njëjtën kohë.

4. Tani që të gjitha fushat e shënimeve janë caktuar, sekuencuesi dixhital është gati për t'u luajtur. Për të luajtur shënimet në altoparlant, thjesht shtypni butonin e duhur të luajtjes/pauzës për të filluar të luani muzikë. Rendi i sekuencës së riprodhimit pasqyron hapat që lidhen me çelsat e majtë, nga e majta në të djathtë. Shënimet do të luhen me një numër të caktuar të rrahjeve në minutë, në rendin 1, 2, 3, 4, 1, 2…. Ekrani do të tregojë shënimin që po luhet aktualisht ndërsa altoparlantët luajnë muzikë. Për të ndaluar luajtjen e muzikës, thjesht shtypni butonin e djathtë dhe pastaj muzika do të ndalojë së luajturi dhe një simbol pauzë do të shfaqet në ekran. Shtypja e butonit të djathtë përsëri do të rifillojë riprodhimin.

Hapi 2: Detajet teknike

Detaje teknike
Detaje teknike

Sintetizuesi ynë përdor shumë përbërës të ndryshëm dixhitalë. Përfshihen makina me gjendje të fundme, regjistra, multiplexerë, ndarës të orës dhe më shumë. Për të ndërtuar sintetizuesin tonë, kemi përdorur 10 skedarë modularë unikë. Në vend që ta bëjmë secilin modul një komponent, ne i ndamë skedarët modularë sipas funksionit. Shumica e moduleve, si rezultat, janë më shumë se një përbërës. Vini re se imazhi i mësipërm tregon çdo bllok të lidhur së bashku në modelin tonë kryesor.

Ne do të diskutojmë secilin modul duke përshkruar hyrjet dhe rezultatet, duke zbërthyer përbërësit e tij dhe duke shpjeguar qëllimin e tij në modelin e përgjithshëm. Një skedar ZIP përfshihet në fund të instruksionit, i cili përmban çdo skedar të kodit VHDL të përdorur në projekt.

Hyrjet

  • Clk (sinjali i orës amtare)
  • PP (luajtje/pauzë)
  • Sel (vendos sintetizuesin në modalitetin e përzgjedhjes)
  • Cakto (cakto një hap në një katran)
  • Hapi (shënimet e pozicionit)
  • Freq (çelsat që krijojnë lartësinë e dëshiruar)

Daljet

  • Anoda (anodat me 7 segmente)
  • Katodë (katodë me 7 segmente)
  • DAC (4-bit që drejton DAC-në)

Hapi 3: Detajet teknike

Detaje teknike
Detaje teknike

Hapi 4: Ndarës i orës me 7 segmente

Ndarës i orës me 7 segmente
Ndarës i orës me 7 segmente

Sintetizuesi ynë përdor tre ndarës të orës, të gjithë prodhojnë sinjale që i shërbejnë një qëllimi të ndryshëm në projektin tonë. Një ndarës i orës merr një sinjal të orës vendase dhe prodhon një sinjal të ndryshuar i cili ka një frekuencë që është më e vogël se sinjali i orës origjinale. Ora amtare e Basys 3 është 100 MHz. Kjo është frekuenca që përdorin ndarësit tanë të orës. Nëse jeni duke përdorur një bord tjetër FPGA me një frekuencë të ndryshme të orës amtare, mund t'ju duhet të ndryshoni kodin.

Ndarësi i orës me 7 segmente prodhon një sinjal i cili drejton skedarin seg_display. Ne do të shpjegojmë se si funksionon ky skedar në mënyrë më të detajuar kur të arrijmë në seksionin e tij. Në thelb, ky ndarës i orës prodhon një sinjal 240 Hz që do të përdoret për të kaluar midis anodave dhe katodave në ekran. Sinjali është 240 Hz sepse frekuenca në të cilën syri i njeriut nuk mund të njohë mungesën e dritës është 60 Hz. Ne po përdorim dy shifra, kështu që duke dyfishuar këtë frekuencë, secila shifër do të lëkundet në 60 Hz. Pastaj ne e dyfishojmë atë për të marrë 240 Hz sepse sistemi po ndryshon vetëm kur sinjali shkon lartë, jo kur bie ulët.

Për ta arritur këtë, ndarësi merr sinjalin vendas 100 MHz dhe numëron në çdo skaj në rritje. Kur numëruesi arrin 416667, prodhimi do të shkojë nga i ulët në i lartë, ose anasjelltas.

Hyrjet

Clk (sinjali i orës amtare)

Daljet

Clk_7seg (te seg_display)

Komponentët

  • D regjistrohu
  • MUX
  • Inverter
  • Adder

Hapi 5: Rrahjet në minutën e ndarësit të orës

Rrahjet në minutën e ndarësit të orës
Rrahjet në minutën e ndarësit të orës

Ndarësi i orës BPM punon në një mënyrë të ngjashme. Ky ndarës prodhon frekuencën e orës e cila nxit kalimin midis katër hapave kur nxjerr tonet në gjendjen e lojës. Ne vendosëm të kalojmë midis shënimeve në 100 BPM. Në 100 BPM, çdo notë do të luhet për 3/5 e sekondës. Sinjali që rezulton do të ketë një frekuencë prej 1.67 Hz.

Për të prodhuar një sinjal të kësaj frekuence, ne përsëri përdorëm një sistem numërimi, por këtë herë numërimi ishte 60 milion. Sa herë që sporteli godiste 60 milionë, sinjali i daljes do të kalonte lart ose poshtë.

Hyrjet

Clk (frekuenca e orës amtare)

Daljet

Clk_BPM (në output_FSM)

Komponentët

  • D regjistrohu
  • MUX
  • Inverter
  • Adder

Hapi 6: Pitches Clock Divider

Pitches Clock Divider
Pitches Clock Divider

Ndarësi i orës së Pitches është më i madhi nga ndarësit tanë të orës. Ky ndarës nxjerr 12 sinjale të ndryshme që korrespondojnë me 12 notat e ndryshme që sintetizuesi ynë mund të luajë. Duke përdorur njohuritë themelore të teorisë së muzikës, ne arritëm në përfundimin se një bit ose bus mund të lëkundej me një ritëm që korrespondon me frekuencën e notave muzikore. Për të parë frekuencat që kemi përdorur, shikoni këtu. Ne përdorëm oktavën e katërt të fushave.

I njëjti sistem numërimi përdoret këtu. Për vlerat specifike ku kemi numëruar, shihni skedarin e etiketuar Clk_div_pitches.

Hyrjet

Clk (frekuenca e orës amtare)

Daljet

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (për të zgjedhur_prodhimin)

Komponentët

  • D regjistrohu
  • MUX
  • Inverter
  • Adder

Hapi 7: Luaj/Ndalo/Zgjidh Makinën Shtetërore

Luaj/Ndalo/Zgjidh Makinën e Gjendjes
Luaj/Ndalo/Zgjidh Makinën e Gjendjes

Në projektin tonë ka dy makina me gjendje të fundme (FSM). Një FSM është një pajisje logjike që mund të ekzistojë në vetëm një gjendje nga një sasi e kufizuar gjendjesh. Duke përdorur një FSM, një qark dixhital mund të kalojë në një gjendje të re bazuar në një kombinim të hyrjeve. Duke përdorur logjikën hyrëse, gjendja e një FSM do të ndryshojë kur ka një avantazh në rritje të orës. Nga gjendja dhe hyrjet në qark, mund të krijoni logjikë dalëse që jep dalje që ekzistojnë vetëm nëse FSM është në një gjendje të caktuar.

Makina shtetërore PPS është FSM e parë në qarkun tonë. Ekzistojnë tre shtete në këtë FSM; Modaliteti i luajtjes, pauzës dhe përzgjedhjes. Për të lëvizur nëpër gjendje të ndryshme, ne përdorëm butonat PP dhe Selection. Shihni diagramin e gjendjes më lart për të parë se si ndodhin kalimet midis gjendjeve. Ne e bëmë këtë tranzicion FSM në skajin në rritje të orës vendase 100 MHz, në mënyrë që të ishte e pamundur që makina të mos kalonte kur të shtypet një prej butonave, edhe për një kohë shumë të shkurtër. Gjendja aktuale (P_state) është dalja e vetme nga ky modul.

Hyrjet

  • Clk (frekuenca e orës amtare)
  • Sel (butoni i majtë)
  • PP (butoni i djathtë)

Daljet

P_state (gjendja aktuale, në output_FSM, nota_assign, seg_dsiplay, final_select)

Komponentët

  • MUX
  • D regjistrohu

Hapi 8: Luaj/Ndalo/Zgjidh Makinën Shtetërore

Luaj/Ndalo/Zgjidh Makinën e Gjendjes
Luaj/Ndalo/Zgjidh Makinën e Gjendjes

Hapi 9: Dalja e FSM

Dalja FSM
Dalja FSM

Kjo është FSM e dytë e referuar në pjesën e mëparshme. Ky FSM shërben për një funksion të ndryshëm nga tjetri, por baza për këtë është në thelb e njëjtë.

FSM dalëse funksionon vetëm nëse gjendja aktuale nga FSM e parë është "01" (gjendja e lojës). Në thelb, kjo është aktivizimi i modulit. Nëse gjendja është "01", atëherë FSM do të kalojë midis gjendjeve në skajin në rritje të sinjalit të orës BPM. Ne e bëjmë këtë sepse output_FSM po kontrollon se cili numër binar për hapin e zgjedhur dërgohet në modulet e zgjedhjes_prodhimit dhe seg_display. FSM ka një hyrje 16-bit që vjen nga moduli i caktimit të shënimeve, i cili do të mbulohet më tej. Në gjendjen "00" për output_FSM, moduli do të dalë "xxxx" për shënimin e parë të caktuar. Pastaj në "01", do të dalë "yyyy" për shënimin e dytë dhe kështu me radhë për secilën shënim para se të kthehet në shënimin e parë. Shikoni diagramin e gjendjes më lart.

Ky FSM ndryshon nga i pari sepse nuk ka logjikë hyrëse për të kontrolluar kalimin midis gjendjeve. Në vend të kësaj, FSM do të funksionojë vetëm kur gjendja nga FSM e parë është "01", dhe pastaj kjo FSM do të kalojë midis shteteve vetëm në skajin në rritje të sinjalit të orës. Një tjetër ndryshim është se ky modul ka logjikë dalëse, që do të thotë se nuk nxjerr gjendjen aktuale, por nxjerr numrin binar për katranin në atë gjendje.

Hyrjet

  • Clk_BPM (sinjali i orës BPM nga pjesëtuesi i orës)
  • FSM1_state (PS nga PPS FSM)
  • Pitch_in (fusha nga shënimi_caktimi)

Daljet

Pitch_out (një hap në të njëjtën kohë, për të zgjedhur_zgjedhjen dhe seg_display)

Komponentët

  • MUX
  • D regjistrohu

Hapi 10: Dalja e FSM

Dalja FSM
Dalja FSM

Hapi 11: Shënim Cakto

Shënim Cakto
Shënim Cakto

Moduli i caktimit të shënimeve është përgjegjës për caktimin e vërtetë të një hapi në shënimin ose hapin pozicionues. Ky modul është në të vërtetë mjaft i thjeshtë. Së pari kontrollon nëse qarku është në gjendjen "përzgjedhëse" dhe nëse një ndërprerës hapash (shumë majtas) është i lartë. Nëse kjo është e vërtetë dhe shtypet butoni i caktimit, dalja e modulit do të jetë e barabartë me numrin binar të përfaqësuar nga ndërprerësit e frekuencës (ekstremisht djathtas).

Fillimisht, ne u përpoqëm të bënim një modul që në të vërtetë do të ruante një nga sinjalet e orës së katranit në dalje, por ne përjetuam probleme me ndryshimin e daljes për të ndjekur sinjalet e orës hyrëse. Ky është moduli i vetëm i përdorur më shumë se një herë në modelin përfundimtar. Çdo hap ka një modul note_assign të lidhur me të, dhe për shkak të kësaj, çdo shembull i modulit merr një bit të autobusit Step.

Hyrjet

  • P_state (gjendja aktuale nga PPS FSM)
  • Sel (butoni i majtë)
  • Ndërprerës (ndërprerës me një hap)
  • Freq (ndërron ekstremin e djathtë për fushën)
  • Cakto (butoni i poshtëm, cakton një shënim)

Daljet

Katran (numri binar, në output_FSM)

Komponentët

  • MUX
  • D regjistrohu

Hapi 12: Output Select

Output Select
Output Select

Zgjedhja e daljes është përgjegjëse për marrjen e numrit binar për një hap dhe lidhjen e tij me sinjalin përkatës të orës. Pavarësisht nga madhësia e tij, ky është gjithashtu një modul relativisht i thjeshtë. Output_select është në thelb një dekodues binar, që dekodon numrin binar për një hap në një sinjal të caktuar të orës. Në të vërtetë caktimi i daljes në një frekuencë të orës funksionoi më mirë këtu në krahasim me modulin note_assign, sepse gjithçka që duhej të bënte ky modul ishte MUX sinjalet e orës me numrin binar që përfaqësonte hyrjen e kontrollit.

Ju kërkojmë ndjesë për drejtimin e çuditshëm, Vivado organizoi sinjalet e katranit në mënyrë alfabetike për skedarin clk_div_pitches, por për këtë skedar i organizoi ato duke u rritur në numrin binar, duke bërë që fushat të ishin në një renditje tjetër. Gjithashtu vini re se nëse numri binar nga output_FSM ishte "0000" ose ndonjë gjë më e madhe se "1100", atëherë MUX dërgohet përmes një sinjali të sheshtë '0'.

Hyrja

  • Katran (nga output_FSM);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (sinjalet e orës së katranit)

Dalje

Ton (një bit i vetëm që përputhet me sinjalin e orës së zgjedhur, me valën katrore)

Komponentët

MUX

Hapi 13: Vala Katrore Gjene

Vala Katrore Gjene
Vala Katrore Gjene

Moduli katror_vala është gjeneratori i valës katrore që del nga bordi në DAC. Duke përdorur sinjalin e tonit nga skedari i mëparshëm, kjo valë katrore përmbys numrin 4 bit midis "0000" dhe "1111" në skajin në rritje të Tonit. Toni është një frekuencë specifike e katranit, kështu që vala_ katrore prodhon një valë me një frekuencë të ndryshme kur output_FSM kalon në një gjendje tjetër. Dalja 4-bitëshe nga ky modul shkon në modulin fin_sel, ku logjika dikton nëse ky autobus do të dalë në bazë të gjendjes nga PPS FSM.

Një alternativë ndaj këtij gjeneratori të valës katrore po prodhon një valë sinus. Ndërsa kjo ka shumë të ngjarë të prodhojë një ton përfundimtar më të mirë, është shumë më e vështirë të zbatohet, kështu që ne zgjodhëm të gjenerojmë vetëm një valë katrore.

Hyrjet

Ton (bit lëkundës nga përzgjedhja e prodhimit)

Daljet

DAC_input (autobus lëkundës 4-bit që ndryshon në të njëjtën frekuencë toni)

Komponentët

  • Inverter
  • D regjistrohu

Hapi 14: Ekrani me 7 segmente

Ekran me 7 segmente
Ekran me 7 segmente

Moduli seg_display kontrollon ekranin me 7 segmente në tabelën tonë të bazës. Brenda modulit, ndodhin dy procese. Procesi i parë dekodon Freq kur është në gjendjen "përzgjedhje" ose Pitch kur është në modalitetin "luaj". Në modalitetin "pauzë", moduli dekodon për të treguar simbolin e pauzës. Duke parë kodin VHDL, mund të shihni se deshifruesi binar në fakt dekodon hyrjen në dy sinjale të ndryshme, katodën1 dhe katodën2. Katoda 1 përfaqëson shkronjën që korrespondon me lartësinë që do të shfaqet, dhe katoda 2 përfaqëson simbolin e sheshtë (b) nëse ka një të tillë. Arsyeja për këtë lidhet me procesin e dytë të bërë nga moduli seg_display.

Në një tabelë basys3, ekrani i segmentit ka katoda të zakonshme. Ndërsa anodat kontrollojnë se cila shifër është e ndezur, katodat kontrollojnë se cilat segmente janë të ndezura. Meqenëse ekrani ka katode të zakonshme, kjo do të thotë që ju mund të shfaqni vetëm një grup segmentesh në të njëjtën kohë. Kjo paraqet një problem për këtë projekt sepse duam të shfaqim një shkronjë në shifrën e parë dhe simbolin e sheshtë, nëse është e nevojshme, në të njëjtën kohë. Tani e mbani mend sinjalin e orës 7seg? Për të kapërcyer këtë çështje, ne ndryshojmë anodat dhe katodat mbrapa dhe me radhë në sinjalin e orës 7seg. Për shkak se sinjali i orës është 240 Hz dhe ne po përdorim dy shifra, secila shifër do të lëkundet në 60 Hz. Për syrin e njeriut, do të duket sikur shifrat nuk po luhaten fare.

Gjithashtu vini re se ekrani i tabelës basys3 përdor logjikë negative. Kjo do të thotë nëse një anodë ose katodë është vendosur në '0', ai shifër ose segment do të jetë i ndezur dhe anasjelltas.

Hyrjet

  • Katran (numër binar për një shënim, i përdorur në gjendjen e lojës)
  • Freq (çelësat e frekuencës, të përdorura kur janë në gjendje përzgjedhjeje)
  • P_state (gjendja aktuale nga PPS FSM)
  • Clk_240Hz (sinjali i orës nga Clk_div_7seg, dyfish 120 sepse ne po përdorim vetëm skajin në rritje)

Daljet

  • Katodë (autobusi që kontrollon segmentet në ekran, dalja përfundimtare)
  • Anoda (autobusi i cili kontrollon shifrat në ekran, dalja përfundimtare)

Komponentët

  • Shul
  • MUX
  • D regjistrohu

Hapi 15: Zgjedhja përfundimtare

Përzgjedhja përfundimtare
Përzgjedhja përfundimtare

Zgjedhja përfundimtare është moduli i fundit i përdorur në këtë projekt. Një modul tjetër i thjeshtë, ky modul kontrollon daljen përfundimtare që do të shkojë në DAC. Kur jeni në gjendjen "përzgjedhje" ose "pauzë", moduli do të nxjerrë një "0000" statik në mënyrë që asnjë muzikë të mos luhet nga altoparlantët. Në gjendjen "luaj", moduli do të nxjerrë 4-bitët lëkundëse siç përcaktohet nga vala_ katrore.

Hyrjet

  • P_state (gjendja aktuale nga PPS FSM)
  • Hyrja DAC (4-bitët lëkundëse nga vala_ katrore)

Daljet

DAC (e barabartë me hyrjen DAC_ në gjendjen e lojës, dalja përfundimtare)

Komponentët

MUX

Hapi 16: Pajisjet e jashtme: DAC

Pajisjet e jashtme: DAC
Pajisjet e jashtme: DAC

Një konvertues dixhital në analog (DAC) merr një sinjal diskret dhe e konverton atë në një sinjal të vazhdueshëm. DAC ynë ka katër bit dhe është bërë nga një përforcues përmbledhës. Duke përdorur një raport të rezistencave në lakun e furnizimit dhe reagimit, ne ishim në gjendje të krijonim një sistem që del në 16 nivele të ndryshme duke krijuar nga "përmbledhja" e secilës degë. Bit0, dega e lartë, mban peshën më të vogël dhe kontribuon në potencialin më të vogël kur është e lartë për shkak të asaj degeve rezistencë më të lartë. Pesha rritet me zbritjen e degëve. Nëse do të numëronit në binar lart dhe më pas të tërhiqeni duke përdorur hyrjet e bitit, tensionet e daljes do të dukeshin si një valë sinus hap pas hapi. Hyrja në DAC ishte e lidhur me një nga PMOD-të në tabelë për të transferuar sinjalin 4-bit.

DAC fillimisht u mblodh për një klasë të Inxhinierisë Elektrike dhe ishte projektuar dhe bashkuar nga ne, jo e blerë nga një dyqan. Më sipër është një imazh i skedarit të projektimit për krijimin e tabelës së qarkut të shtypur.

Hapi 17: Pajisjet e jashtme: Altoparlanti

Pajisjet e jashtme: Altoparlant
Pajisjet e jashtme: Altoparlant

Për këtë projekt, nuk do të dëshironi të blini një palë altoparlantësh super të bukur. Siç mund ta kuptoni, tingulli është mjaft themelor. Ne shkuam dhe blemë një grup altoparlantësh kompjuterikë prej 8 dollarësh nga Best Buy. Çdo gjë me një prizë kufje funksionon mirë. Monotoni gjithashtu funksionon mirë. Ju madje mund të përdorni kufje, por mund t'i fryni ato!

Për të lidhur daljen e DAC me altoparlantët, ne përdorëm kabllo kërcyes dhe më pas e mbajtëm kabllon dalës në majë të prizës së kufjeve dhe kabllon për tokëzim në bazë. Ne u përpoqëm të përdorim kasetë elektrike për të mbajtur kabllot në vend, por kjo shkaktoi shumë ndërhyrje. Provimi i një stili të ndryshëm kasetë mund ta zgjidhë këtë çështje.

Për folësit tanë, ne i kthyem ato në cilësimin më të lartë dhe morëm një zhurmë mjaft të lartë.

Dhe ky është hapi i fundit për krijimin e një sekuencuesi dixhital nga një tabelë FPGA! Shkoni te dy seksionet e ardhshme për të shkarkuar të gjithë kodin tonë VHDL dhe shikoni sekuencerin në veprim.

Hapi 18: Demo video

Kjo video tregon versionin përfundimtar të projektit të punës, duke përfshirë procesin e caktimit të çelsave në 4 zona të dallueshme, dhe folësit që luajnë shënimet përkatëse.

Hapi 19: Kodi VHDL

Këtu është kodi për të gjithë projektin, përfshirë kufizimet dhe skedarët sim të përdorur gjatë ndërtimit të sekuencerit. Vini re se skedarët e dizajnit të papërdorur thonë kështu në arkitekturë.

Recommended: