Satura rādītājs:

Modinātājs Basys 3: 9 soļi
Modinātājs Basys 3: 9 soļi

Video: Modinātājs Basys 3: 9 soļi

Video: Modinātājs Basys 3: 9 soļi
Video: ДОЛГОЖДАННЫЙ??? Радиоприемник XHDATA D-109 или все таки TECSUN PL-320? 2024, Oktobris
Anonim
Modinātājs Basys 3
Modinātājs Basys 3

Mūsu projekts rada modinātāju, izmantojot Basys 3 FPGA plati, Arduino un skaļruņu draivera paneli. Lietotājs var ievadīt tāfeles pašreizējo laiku, izmantojot 11 Basys 3 ievades slēdžus, un fiksēt vērtību, izmantojot tāfeles vidējo pogu. Pēc tam lietotājs var ievadīt modinātāja laiku, izmantojot tos pašus slēdžus, bet nospiediet kreiso pogu, lai bloķētu modinātāja laiku. Ja tiek ievadīts nepareizs laiks, var nospiest atiestatīšanas pogu (augšējā poga) un pašreizējais pulksteņa laiks un modinātāja laiks tiks iestatīts uz 00:00. Pēc tam lietotājs var iedarbināt pulksteni, izmantojot kreisāko slēdzi, un ieslēgt modinātāju, izmantojot nākamo slēdzi. Kad modinātājs ir ieslēgts, modinātājs izdod skaņu, kad pulkstenis un iestatītais modinātāja laiks sakrīt.

1. darbība: Melnās kastes diagramma

Melnās kastes diagramma
Melnās kastes diagramma
Melnās kastes diagramma
Melnās kastes diagramma

Mēs sākām savu projektu, uzzīmējot melnās kastes diagrammu, lai vizualizētu mūsu programmā vajadzīgos ievadus un rezultātus. Šādas mūsu programmas ievades, piemēram, 5 bitu ievade (Hour_in), tika inicializētas, lai norādītu 24 stundu laiku, 6 bitu (Min_in) ieeju, lai parādītu līdz 60 minūtēm, un atiestatīšanas (Rst_b) pogu, lai lietotājs varētu mainīt savu laika ievadi, 1 bitu ievadi (alm_en), kas ielādē trauksmes ieeju, 1 bitu ieeju (alarm_sw), lai izslēgtu modinātāju, kad tas ir aktivizēts, 1 bitu ievadi (e_sec), kas kontrolē skaitītāja darbību darbosies sekundes, 1 bitu ievade (Led_btn), kas nosaka pašreizējo laiku, un visbeidzot 1 bitu ievade (clk), kas kontrolē Basys 3 plates parādīto laiku. Izejas ir (alm_on), kas sūta signālu uz Arduino, sseg izeja, kas parāda ievades laiku Basys 3, un anoda izeja, kas kontrolē, kur ieejas tiek parādītas septiņu segmentu displejā.

2. solis: lēns pulkstenis

Lēns pulkstenis
Lēns pulkstenis

Lēnais pulkstenis vai clock_div2 fails izveido pulksteni, kura frekvence ir 2 hz. Ja mēs piegādāsim šo pulksteni mūsu sekundes skaitītājam, sekunžu vērtība katru sekundi palielināsies par vienu. Lēnais pulkstenis tiek izmantots, lai izveidotu uzticamu pulksteņa signālu, kas reizi sekundē mainās no zema uz augstu.

3. solis: skaitītājs

Skaitītājs
Skaitītājs
Skaitītājs
Skaitītājs

Komponentu skaitītājs (minūtes un sekundes):

Minūtes un sekundes pamatfunkcija ir tā, ka tās ir skaitītāji. Minūšu skaitītājs ievada ievadi (Vin), kas ir signāls no ieejām (Min_in), un pēc tam tiek skaitīts, līdz tiek sasniegta vajadzīgā ievade. Sekundes ievada tikai slēdža (e_Sec) ievadi, jo to nevar parādīt septiņos segmentos, un skaitās fonā, tiklīdz slēdzis ir augstu '1'. Viņi abi izvada tur vērtību (Qout), un pēc tam tā tiek saglabāta (datos), kas to nosūta uz SSEG, kas tiek darīts saistīšanas failā. Turklāt, kad minūtes un sekundes sasniedz vērtības 59, tas tiek atiestatīts, un to iznākums ir “1”, lai palielinātu minūtes/stundu. To var arī kartēt ar atiestatīšanu (rst_b) to ievadēm.

4. solis: skaitītāja stunda

Pretējā stunda
Pretējā stunda
Pretējā stunda
Pretējā stunda

Komponentu skaitītāja stunda

Līdzīgi arī minūšu un sekunžu komponentu skaitītājam stundas komponents ievada ievades s, piemēram, (Vin), kas ir signāls no sasaistes faila ievades (Hour_in), un tai ir izejas, kas tādā pašā veidā ir saistītas minūtes un sekundes. Kad stundu skaitīšanas vērtība sasniedz 24 00, tā tiek atiestatīta uz 00 00.

5. darbība: modinātājs

Modinātājs
Modinātājs
Modinātājs
Modinātājs
Modinātājs
Modinātājs
Modinātājs
Modinātājs

Modinātāja.vhd failu veido d-flip-flops, kas ir atmiņas ierīces, kas var saglabāt digitālos datus. Trauksmes fails tiek izmantots, lai saglabātu laiku, kurā modinātājs tiks aktivizēts. Lai saglabātu stundu (5 bitu ievade) un minūšu (6 bitu ievade) datus, trauksmes failā ir jāizspiež 11 d-flip-flops. Lai to izdarītu, mums vispirms jāimportē loģika, kas regulē d-flip-flops darbību, un jāapzīmē komponenti. Katrs no 11 d-flip-flops saglabās vienu datu bitu no ieejām un ļaus datus kartēt trauksmes faila izejās. Tā kā d-flip-flops glabā datus, mēs varam tos izmantot vēlāk, pat ja ir mainīti ievades slēdži.

6. darbība: universālais septiņu segmentu displeja draiveris

Universāls septiņu segmentu displeja draiveris
Universāls septiņu segmentu displeja draiveris
Universāls septiņu segmentu displeja draiveris
Universāls septiņu segmentu displeja draiveris
Universāls septiņu segmentu displeja draiveris
Universāls septiņu segmentu displeja draiveris

Universālais septiņu segmentu displeja draiveris saņem ieejas no pulksteņa un pulksteņa iestatījuma un var tos izvadīt uz tāfeles septiņu segmentu displeja. Vadītājs vienlaikus var izvadīt divus atsevišķus skaitļus uz tāfeles. Mēs izmantojām šo funkciju, lai atsevišķi parādītu gan stundas, gan minūtes laiku. Septiņu segmentu displejs vienlaikus var aktivizēt tikai vienu numuru, tāpēc sseg failam jāizmanto multipleksēšana, lai vienlaikus parādītu visus laika skaitļus. Dēļa pulksteņa signāls tiek ievadīts ssegā, lai saglabātu pareizo multipleksēšanas laiku. Lai pārveidotu ievades failā tādā formā, kuru var izvadīt septiņu segmentu displejā, ir nepieciešams binārais uz bināro kodēto decimālo kodētāju. Sseg faila galīgā izvade tiek kartēta uz septiņu segmentu displeju, un displejā tiek parādīts pareizais laiks.

7. darbība: saistiet failu

Saites fails
Saites fails
Saites fails
Saites fails
Saites fails
Saites fails

Saites fails savieno visus pārējos programmas aspektus un kartē signālus to pareizajā vietā. Katrs komponents tiek ievests un parādīts failā. Signāli tiek izmantoti datu pārsūtīšanai no viena komponenta uz otru. Portu kartēšana notiks pēc iepriekš uzskaitītās melnās kastes diagrammas. Saites failā ir arī loģika, kas regulē trauksmes aktivizēšanu. Lielākā daļa projekta tiks pabeigta līdz šim brīdim. Atlikušais darbs ir katra signāla novirzīšana uz atbilstošo vietu.

8. solis: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino tiek izmantots, lai aktivizētu skaļruni, kā arī kontrolētu skaļrunī atskaņotās piezīmes toni un ilgumu. Arduino nolasa digitālo signālu no Basys 3 plates. Kad šis signāls ir augsts, arduino izvadīs PWM signālu, kas kontrolē trauksmes signālu un ilgumu. Izvades signāls no arduino savienojas ar skaļruņa draivera plates ieejas signālu, kas palielina skaļruņa skaļumu. Arduino šo procesu veic ļoti ātri, atkārtojot daudzas reizes sekundē.

9. solis: kabeļu maršrutēšana

Kabeļu maršrutēšana
Kabeļu maršrutēšana

Arduino un Basys 3 platei jābūt fiziski savienotai, lai pārsūtītu signālus starp dēļiem. Pirmais vads pie vadiem būs no Basys 3 JA PMOD zemējuma tapas līdz arduino zemējuma tapai. Pēc tam pievienojiet vadu no Basys 3 JA PMOD 1. tapas līdz arduino 7. digitālajai tapai. Pēc tam savienojiet divas arduino iezemētās tapas ar skaļruņu draivera zemējuma tapām. Pēc tam pievienojiet arduino 3,3 V izeju skaļruņu draivera Vcc tapai. Pēc tam pievienojiet arduino digitālo tapu 9 skaļruņa draivera ieejai.

Ieteicams: