ዝርዝር ሁኔታ:

ዚቦ ቦርድ ላይ ሌዘር ሃር ሲንተሲዘር 10 ደረጃዎች (ከስዕሎች ጋር)
ዚቦ ቦርድ ላይ ሌዘር ሃር ሲንተሲዘር 10 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ዚቦ ቦርድ ላይ ሌዘር ሃር ሲንተሲዘር 10 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ዚቦ ቦርድ ላይ ሌዘር ሃር ሲንተሲዘር 10 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: ባሌ የልጅ ፍቅርኛ ሆኑ አገኛሁት 😥ዚቦ ከባሎ ጋር 2024, ሀምሌ
Anonim
በዚቦ ቦርድ ላይ የሌዘር ሃር ሲንተሲዘር
በዚቦ ቦርድ ላይ የሌዘር ሃር ሲንተሲዘር

በዚህ መማሪያ ውስጥ ተጠቃሚው የመሣሪያውን ማስተካከያ እና ድምጽ እንዲለውጥ በሚያስችል ተከታታይ በይነገጽ የ IR ዳሳሾችን በመጠቀም ሙሉ በሙሉ የሚሰራ የሌዘር በገና እንፈጥራለን። ይህ በገና የ 21 ኛው ክፍለ ዘመን የድሮው መሣሪያ ዳግም ይሆናል። ስርዓቱ የተፈጠረው ከቪቫዶ ዲዛይን Suites ጋር የ Xilinx Zybo ልማት ቦርድ በመጠቀም ነው። ፕሮጀክቱን ለማጠናቀቅ የሚያስፈልጉዎት-

  • 12 IR ዳሳሾች እና አመንጪዎች (እንደ ሕብረቁምፊዎች ብዛት ላይ በመመርኮዝ ብዙ ወይም ያነሰ ጥቅም ላይ ሊውል ይችላል)
  • ዚቦ ዚንክ -7000 የልማት ቦርድ
  • ነፃ RTOS
  • ቪቫዶ ዲዛይን ስብስብ
  • ሽቦ (አነፍናፊዎችን ከቦርዱ ጋር ለማገናኘት)
  • 3 የ PVC ቧንቧ ((2) 18 ኢንች እና (1) 8 ኢንች)
  • 2 የ PVC ክርኖች

ደረጃ 1 Digilent's Zybo DMA Audio Demo ን ያግኙ

የዚህ ፕሮጀክት የ FPGA ጎን በአብዛኛው እዚህ በተገኘው የማሳያ ፕሮጀክት ላይ የተመሠረተ ነው። አንጎለ ኮምፒዩተሩ ከ AXI ዥረት በላይ ወደ I2S የድምፅ ብሎክ ሊጽፍለት ከሚችለው ማህደረ መረጃ በቀጥታ ለመላክ ቀጥተኛ የማስታወስ መዳረሻን ይጠቀማል። የሚከተሉት እርምጃዎች የዲኤምኤ ኦዲዮ ማሳያ ፕሮጄክቱን ሥራ ላይ ለማዋል ይረዳሉ-

  1. ለዚቦ ቦርድ የቦርዱ ፋይል አዲስ ስሪት አስፈላጊ ሊሆን ይችላል። ለቪቫዶ አዲስ የቦርድ ፋይሎችን ለማግኘት እነዚህን መመሪያዎች ይከተሉ።
  2. በቪቫዶ ውስጥ የማሳያ ፕሮጀክት እንዲከፈት በዚህ ገጽ ላይ ባሉት መመሪያዎች ውስጥ ደረጃ 1 እና 2 ን ይከተሉ። የኤስዲኬ ሃርድዌር እጀታ ሳይሆን የቪቫዶ ዘዴን ይጠቀሙ።
  3. አንዳንድ የአይፒ ብሎኮችዎ መዘመን አለባቸው የሚል መልእክት ሊያገኙ ይችላሉ። እንደዚያ ከሆነ “የአይፒ ሁኔታን አሳይ” ን ይምረጡ እና ከዚያ በአይፒ ሁኔታ ትር ውስጥ ሁሉንም ጊዜ ያለፈበትን አይፒ ይምረጡ እና “የተመረጠውን ያልቁ” ን ጠቅ ያድርጉ። ሲጠናቀቅ እና የውጤት ምርት ማመንጨት ይፈልጉ እንደሆነ የሚጠይቅ መስኮት ብቅ ይላል ፣ ይቀጥሉ እና “ፍጠር” ን ጠቅ ያድርጉ። ወሳኝ የማስጠንቀቂያ መልእክት ከደረስዎ ችላ ይበሉ።
  4. የምንጭ ፋይሎችን ለማየት ከዲዛይን ወደ ቪቫዶ ውስጥ ወደ ምንጮች ትር ይቀይሩ። የማገጃውን ንድፍ “ዲዛይን_1” በቀኝ ጠቅ ያድርጉ እና “HDL Wrapper ፍጠር” ን ይምረጡ። ሲጠየቁ “የተጠቃሚ አርትዖቶችን ለመፍቀድ የተፈጠረ መጠቅለያ ቅዳ” የሚለውን ይምረጡ። ለፕሮጀክቱ መጠቅለያ ፋይል ይፈጠራል።
  5. አሁን በሌላ መማሪያ ውስጥ በሆነ መንገድ የቀሩት እነዚያ ወሳኝ እርምጃዎች ተጠናቅቀዋል ፣ ቀደም ሲል ወደ ተገናኘው ትምህርት መመለስ እና ከደረጃ 4 እስከ መጨረሻው መቀጠል እና የማሳያ ፕሮጀክቱ በትክክል መሥራቱን ማረጋገጥ ይችላሉ። ለመቅዳት ኦዲዮ ለማስገባት መንገድ ከሌለዎት በጆሮ ማዳመጫዎችዎ ውስጥ ብቻ ይቅረጹ እና የመልሶ ማጫዎትን ቁልፍ ሲጫኑ ለ 5-10 ሰከንድ ደብዛዛ ድምጽ ያዳምጡ። የመልሶ ማጫዎቻውን ቁልፍ ሲጫኑ ከጆሮ ማዳመጫ መሰኪያ ውስጥ አንድ ነገር እስከወጣ ድረስ ምናልባት በትክክል እየሰራ ሊሆን ይችላል።

ደረጃ 2 በቪቫዶ ውስጥ አንዳንድ ለውጦችን ያድርጉ

በቪቫዶ ውስጥ አንዳንድ ለውጦችን ያድርጉ
በቪቫዶ ውስጥ አንዳንድ ለውጦችን ያድርጉ

ስለዚህ አሁን Digilent's DMA የድምጽ ማሳያ እየሰራዎት ነው ፣ ግን ያ እዚህ መጨረሻው ግብ አይደለም። ስለዚህ የእኛ ዳሳሾች ወደ PMOD ራስጌዎች እንዲሰኩ እና ዋጋቸውን በሶፍትዌሩ ጎን ላይ እንድንጠቀም ወደ ቪቫዶ ተመልሰን አንዳንድ ለውጦችን ማድረግ አለብን።

  1. በቪቫዶ ውስጥ የማገጃውን ንድፍ ይክፈቱ
  2. በብሎግ ዲያግራም ውስጥ ባዶ ቦታ ላይ በቀኝ ጠቅ በማድረግ እና ከምናሌው “አይፒ አክል” ን በመምረጥ የ GPIO ብሎክን ይፍጠሩ። “AXI GPIO” ን ይፈልጉ እና ይምረጡ።
  3. አዲሱን የአይፒ ማገጃን ሁለቴ ጠቅ ያድርጉ እና እንደገና በማበጀት የአይፒ መስኮት ውስጥ ወደ አይፒ ውቅረት ትር ይሂዱ። በበገናችን ላይ 12 "ሕብረቁምፊዎች" ስለሚኖሩን 12 ግብዓቶች ስላሉ ስፋቱን ወደ አስራ ሁለት ያዘጋጁ። ያነሱ ወይም ከዚያ በላይ ዳሳሾችን ለመጠቀም ከፈለጉ ይህንን ቁጥር በትክክል ያስተካክሉ። እንዲሁም መቋረጥን ያንቁ።
  4. አዲሱን የ GPIO IP ብሎክ በቀኝ ጠቅ ያድርጉ እና “የግንኙነት አውቶማቲክን አሂድ” ን ይምረጡ። የ AXI ሳጥኑን ይፈትሹ እና እሺን ይምቱ። ይህ የ AXI በይነገጽን በራስ -ሰር ማገናኘት አለበት ፣ ግን የማገጃውን ውጤቶች ያለተገናኘ ይተዉት።
  5. ለተጨማሪ ማቋረጫ ቦታ ለመስጠት ፣ በ xlconcat_0 IP ብሎክ ላይ ሁለቴ ጠቅ ያድርጉ እና የወደብ ብዛት ከ 4 ወደ 5. በመቀየር ip2intc_irpt ፒን ከአዲሱ GPIO ብሎክ በ xlconcat ብሎክ ላይ ወደ አዲስ ጥቅም ላይ ያልዋለ ወደብ ማገናኘት ይችላሉ።
  6. በአዲሱ የ GPIO IP ብሎክ “GPIO” ውፅዓት ላይ በቀኝ ጠቅ ያድርጉ እና “ውጫዊ ያድርጉ” ን ይምረጡ። መስመሩ የሚሄድበትን ቦታ ይፈልጉ እና በትንሹ የጎን ጎን ፔንታጎን ላይ ጠቅ ያድርጉ እና በግራ በኩል ስሙን መለወጥ የሚችሉበት መስኮት ይከፈታል። ስሙን ወደ “ዳሳሾች” ይለውጡ። እኛ የምናቀርባቸው የእገዳዎች ፋይል እንዲሠራ ከፈለጉ ተመሳሳይ ስም መጠቀሙ አስፈላጊ ነው ፣ ያለበለዚያ በእገዳዎች ፋይል ውስጥ ስሙን መለወጥ ይኖርብዎታል።
  7. ወደ ምንጮች ትር ይመለሱ ፣ የእገዳዎቹን ፋይል ይፈልጉ እና እኛ በምናቀርበው ይተኩት። ፋይሉን ለመተካት ወይም የእኛን የእገዳዎች ፋይል ይዘቶች ለመቅዳት እና በአሮጌው ይዘቶች ላይ ለመለጠፍ መምረጥ ይችላሉ። የእኛ ገደቦች ፋይል ከሚያደርጋቸው አስፈላጊ ነገሮች አንዱ በ PMOD ራስጌዎች ላይ የ pullup resistors ን ማንቃት ነው። እኛ ለተጠቀምንበት ልዩ ዳሳሾች አስፈላጊ ነው ፣ ሆኖም ሁሉም ዳሳሾች አንድ አይደሉም። የእርስዎ ዳሳሾች የ pulldown resistors የሚጠይቁ ከሆነ እያንዳንዱን የ “set_property PULLUP true” በ “set_property PULLDOWN true” መለወጥ ይችላሉ። እነሱ በቦርዱ ላይ ካለው የተለየ የመቋቋም እሴት ከፈለጉ ፣ ከዚያ እነዚህን መስመሮች ማስወገድ እና የውጭ መከላከያን መጠቀም ይችላሉ። የፒን ስሞች በግድቦች ፋይል ውስጥ በአስተያየቶች ውስጥ ናቸው ፣ እና በዚቦ መርሃግብሮች ውስጥ በመጀመሪያ ዲያግራም ውስጥ ከመለያዎቹ ጋር ይዛመዳሉ። እዚህ ሊገኝ የሚችል ገጽ። የተለያዩ የፒሞድ ፒኖችን ለመጠቀም ከፈለጉ በግድ ፋይል ውስጥ ያሉትን ስሞች በስያሜ ውስጥ ካሉ ስያሜዎች ጋር ያዛምዱ። እኛ የ PMOD ራስጌን JE እና JD ን እንጠቀማለን ፣ እና በእያንዳንዱ ላይ ስድስት የውሂብ ፒኖችን እንጠቀማለን ፣ ፒኖችን 1 እና 7 ን በማስቀረት የእርስዎን ዳሳሾች በሚገናኙበት ጊዜ ይህ መረጃ አስፈላጊ ነው። በሥዕላዊ መግለጫው ላይ እንደሚታየው ፣ በ PMODS ላይ ፒኖች 6 እና 12 ቪሲሲ እና ፒኖች 5 እና 11 መሬት ናቸው።
  8. የኤች.ዲ.ኤል መጠቅለያውን እንደ ቀድሞው ያድሱ ፣ እና አሮጌውን ይቅዱ እና ይፃፉ። ያ ሲጠናቀቅ ፣ ልክ እንደበፊቱ የቢት ዥረት ያመነጩ እና ወደ ውጭ ይላኩ እና ኤስዲኬን እንደገና ያስጀምሩ። የድሮውን የሃርድዌር ፋይል መተካት ይፈልጉ እንደሆነ ከተጠየቁ መልሱ አዎ ነው። ሃርድዌርን ወደ ውጭ በሚላኩበት ጊዜ በትክክል እንዲተካ ኤስዲኬ መዘጋቱ የተሻለ ሊሆን ይችላል።
  9. ኤስዲኬን ያስጀምሩ።

ደረጃ 3: FreeRTOS አሂድ ያግኙ

ቀጣዩ ደረጃ FreeRTOS በዚቦ ቦርድ ላይ እንዲሠራ ማድረግ ነው።

  1. አስቀድመው ቅጂ ከሌለዎት እዚህ FreeRTOS ን ያውርዱ እና ፋይሎቹን ያውጡ።
  2. በ FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo ላይ የሚገኘውን የ FreeRTOS Zynq ማሳያ ያስመጡ። የማስመጣት ሂደቱ ከሌላው የማሳያ ፕሮጀክት ጋር በጣም ተመሳሳይ ነው ፣ ሆኖም ግን የ FreeRTOS Zynq ማሳያ በ FreeRTOS አቃፊ ውስጥ ባሉ ሌሎች ፋይሎች ላይ ስለሚመረኮዝ ፋይሎቹን ወደ የስራ ቦታዎ መቅዳት የለብዎትም። በምትኩ ፣ ሙሉውን የ FreeRTOS አቃፊ በፕሮጀክት አቃፊዎ ውስጥ ማስቀመጥ አለብዎት።
  3. ወደ “ፋይል” -> “አዲስ” -> “የቦርድ ድጋፍ ጥቅል” በመሄድ አዲስ የቦርድ ድጋፍ ጥቅል ይፍጠሩ። ለብቻው መመረጡን ያረጋግጡ እና ጨርስን ጠቅ ያድርጉ። ከአፍታ በኋላ መስኮት ብቅ ይላል ፣ ከ lwip141 ቀጥሎ ባለው ሳጥን ላይ ምልክት ያድርጉ (ይህ አንዱ የ FreeRTOS ማሳያዎችን ማጠናቀር እንዳይችል ያቆማል) እና እሺን ጠቅ ያድርጉ። ከዚያ በኋላ በ RTOSdemo ፕሮጀክት ላይ በቀኝ ጠቅ ያድርጉ እና ወደ “ንብረቶች” ይሂዱ ፣ ወደ “የፕሮጀክት ማጣቀሻዎች” ትር ይሂዱ እና እርስዎ ከፈጠሩት አዲሱ bsp ቀጥሎ ባለው ሳጥን ላይ ምልክት ያድርጉ። እንደሚታወቅ ተስፋ እናደርጋለን ነገር ግን አንዳንድ ጊዜ የ Xilinx ኤስዲኬ ስለ እንደዚህ ዓይነት ነገር እንግዳ ሊሆን ይችላል። አሁንም ከዚህ ደረጃ በኋላ ስህተት ካገኙ ያ xparameters.h የጠፋ ወይም እንደዚህ ያለ ነገር ከዚያ ይህንን እርምጃ ለመድገም ይሞክሩ እና ምናልባት ኤስዲኬውን ለመውጣት እና እንደገና ለማስጀመር ይሞክሩ።

ደረጃ 4 Laser Harp Code ያክሉ

አሁን FreeRTOS ከውጪ ሲመጣ ፋይሎቹን ከሌዘር በገና ፕሮጀክት ወደ ፍሪስትቶስ ማሳያ ውስጥ ማምጣት ይችላሉ

  1. በ FreeRTOS ማሳያ ውስጥ በ src አቃፊ ስር አዲስ አቃፊ ይፍጠሩ እና ከ main.c በስተቀር ሁሉንም የቀረቡትን c ፋይሎች ወደዚህ አቃፊ ይቅዱ እና ይለጥፉ።
  2. RTOSDemo main.c ን በቀረበው main.c. ይተኩ።
  3. ሁሉም ነገር በትክክል ከተሰራ ፣ በዚህ ጊዜ የሌዘር በገና ኮዱን ማካሄድ መቻል አለብዎት። ለሙከራ ዓላማዎች ፣ በዲኤምኤ ማሳያ ማሳያ ፕሮጀክት ውስጥ ያገለገለው የአዝራር ግቤት አሁን ዳሳሾች ሳይያያዙ ድምፆችን ለማጫወት (ከአራቱ ዋና ዋና ቁልፎች ማንኛውም ይሠራል)። በተጫኑበት እያንዳንዱ ጊዜ ሕብረቁምፊ ይጫወታል እና በበርካታ ማተሚያዎች ላይ በስርዓቱ ውስጥ ያሉትን ሁሉንም ሕብረቁምፊዎች ያሽከረክራል። በዚቦ ቦርድ ላይ ባለው የጆሮ ማዳመጫ መሰኪያ ላይ አንዳንድ የጆሮ ማዳመጫዎችን ወይም ድምጽ ማጉያዎችን ይሰኩ እና አንድ ቁልፍ ሲጫኑ የሚመጡትን ሕብረቁምፊዎች ድምፆች መስማትዎን ያረጋግጡ።

ደረጃ 5 - ስለ ኮድ

ብዙዎቻችሁ ይህንን አጋዥ ስልጠና እያነበቡ እዚህ ኦዲዮን እንዴት ማዋቀር እንደሚችሉ ለማወቅ ወይም የተለየ ነገር ለማድረግ ዲኤምኤን ለመጠቀም ወይም የተለየ የሙዚቃ መሣሪያ ለመፍጠር እዚህ ይገኙ ይሆናል። በዚህ ምክንያት የሚቀጥሉት ጥቂት ክፍሎች ዲኤምኤን በመጠቀም የሚሰራ የድምፅ ውፅዓት ለማግኘት የቀረበው ኮድ ቀደም ሲል ከተገለጸው ሃርድዌር ጋር እንዴት እንደሚሠራ ለመግለፅ ያደላሉ። የኮዱ ቁርጥራጮች ለምን እንደነበሩ ከተረዱ ታዲያ እርስዎ ሊፈጥሩት ለሚፈልጉት ሁሉ እነሱን ማስተካከል መቻል አለብዎት።

ያቋርጣል

በመጀመሪያ በዚህ ፕሮጀክት ውስጥ ማቋረጦች እንዴት እንደሚፈጠሩ እጠቅሳለሁ። እኛ ያደረግንበት መንገድ መታወቂያውን የሚከታተል ፣ የሚያቋርጥ ተቆጣጣሪ እና የእያንዳንዱ መቋረጫ መሣሪያን ማጣቀሻ የሚከታተል የተቋረጠ የቬክተር ሰንጠረዥ መዋቅር በመፍጠር ነበር። የተቋረጡት መታወቂያዎች የሚመጡት ከ xparameters.h ነው። የተቋረጠው ተቆጣጣሪው ለዲኤምኤ እና ለጂፒኦ የጻፍነው ተግባር ነው ፣ እና የ I2C መቋረጥ የሚመጣው ከ Xlic I2C ነጂ ነው። የመሣሪያው ማጣቀሻ ወደ ሌላ ቦታ የምናስጀምራቸውን የእያንዳንዱ መሣሪያ ምሳሌዎች ይጠቁማል። በ _init_audio ተግባር መጨረሻ ላይ አንድ ዑደት በተቋረጠው የቬክተር ሰንጠረዥ ውስጥ በእያንዳንዱ ንጥል ውስጥ ያልፋል እና ማቋረጫዎቹን ለማገናኘት እና ለማንቃት XScuGic_Connect () እና XScuGic_Enable () ሁለት ተግባሮችን ይጠራል። እነሱ በነባሪ በ FreeRTOS main.c ውስጥ የተፈጠረ የማቋረጥ መቆጣጠሪያ የሆነውን xInterruptController ን ይጠቅሳሉ። ስለዚህ በመሠረቱ እያንዳንዳችን ማቋረጫዎቻችንን ቀደም ሲል በ ‹FRRTOS› ለእኛ የተፈጠረውን ለዚህ የማቋረጥ መቆጣጠሪያ እናያይዛለን።

ዲኤምኤ

የዲኤምኤ የመነሻ ኮድ በ lh_main.c ውስጥ ይጀምራል። በመጀመሪያ የ XAxiDma መዋቅር የማይንቀሳቀስ ምሳሌ ታወጀ። ከዚያ በ _init_audio () ተግባር ውስጥ ይዋቀራል። በመጀመሪያ ከማሳያ ፕሮጄክቱ የማዋቀር ተግባር ይጠራል ፣ ይህም በ dma.c. ውስጥ ነው። እሱ በጥሩ ሁኔታ ተመዝግቧል እና በቀጥታ ከማሳያው ይመጣል። ከዚያ ማቋረጫው ተገናኝቶ ይነቃል። ለዚህ ፕሮጀክት የጌታ-ለባሪያ መቋረጥ ብቻ ያስፈልጋል ፣ ምክንያቱም ሁሉም መረጃዎች በዲኤምኤ ወደ I2S መቆጣጠሪያ እየተላኩ ነው። ኦዲዮ መቅዳት ከፈለጉ ፣ የባሪያ-ለ-ጌታው ማቋረጥም ያስፈልግዎታል። ዲኤምኤው እርስዎ እንዲልኩ ያዘዙትን ማንኛውንም መረጃ መላክ ሲጨርስ የጌታ-ለባሪያ መቋረጥ ይጠራል። ይህ መቋረጥ ለፕሮጀክታችን በማይታመን ሁኔታ አስፈላጊ ነው ፣ ምክንያቱም ዲኤምኤ አንድ የድምፅ ናሙናዎችን ቋት መላክ በጨረሰ ወዲያውኑ ቀጣዩን ቋት መላክ መጀመር አለበት ፣ አለበለዚያ በመልእክት መካከል የሚሰማ መዘግየት ይከሰታል። በ dma_mm2s_ISR () ተግባር ውስጥ መቋረጡን እንዴት እንደምንይዝ ማየት ይችላሉ። ቀጣዩ የዲኤምኤ ዝውውርን መጀመር እንደሚችል ለ _audio_task () ለማሳወቅ xSemaphoreGiveFromISR () እና portYIELD_FROM_ISR () የምንጠቀምበት የመጨረሻው ክፍል ቅርብ ነው። የማያቋርጥ የድምፅ መረጃ የምንልክበት መንገድ በሁለት ባፋሪዎች መካከል በመለዋወጥ ነው። አንድ ቋት ወደ I2C ብሎክ ሲተላለፍ ሌላኛው ቋት እሴቶቹን ይሰላል እና ያከማቻል። ከዚያ ማቋረጫው ከዲኤምኤ ሲመጣ ገባሪ ቋሚው ይቀያይራል እና በቅርቡ የተፃፈው ቋት ማስተላለፍ ይጀምራል ፣ ቀደም ሲል የተላለፈው ቋት በአዲስ ውሂብ መፃፍ ይጀምራል። የ _audio_task ተግባር ቁልፍ ክፍል fnAudioPlay () የሚጠራበት ቦታ ነው። fnAudioPlay () በዲኤምአይ ምሳሌ ፣ የመጠባበቂያውን ርዝመት እና መረጃ ወደሚተላለፍበት ቋት ጠቋሚ ይወስዳል። ተጨማሪ ናሙናዎች እየመጡ መሆኑን ለማሳወቅ ጥቂት እሴቶች ወደ I2S መመዝገቢያዎች ይላካሉ። ከዚያ XAxiDma_SimpleTransfer () ዝውውሩን ለመጀመር ይጠራል።

I2S ኦዲዮ

audio.c እና audio.h I2S ማስነሻ የሚከናወነው የት ነው። I2S የመነሻ ኮድ በበርካታ ቦታዎች ላይ የሚንሳፈፍ በጣም የተለመደ የኮድ ቁራጭ ነው ፣ ከሌሎች ምንጮች ትንሽ ልዩነቶች ሊያገኙ ይችላሉ ፣ ግን ይህ መሥራት አለበት። እሱ በጥሩ ሁኔታ የተረጋገጠ እና ለገና ፕሮጀክት ለመለወጥ ብዙም አያስፈልገውም። የመጣው የዲኤምኤ ኦዲዮ ማሳያ ወደ ማይክሮፎኑ ወይም የመስመር ግብዓቶች የመቀየር ተግባራት አሉት ስለዚህ ያንን ተግባር ከፈለጉ ከፈለጉ እነዚያን መጠቀም ይችላሉ።

የድምፅ ውህደት

የድምፅ ውህደቱ እንዴት እንደሚሠራ ለመግለጽ ፣ በመጨረሻው ዘዴ ላይ ያደረሱትን እያንዳንዱን የድምፅ ሞዴሎች እዘርዝራለሁ ፣ ምክንያቱም እሱ በተሠራበት መንገድ ለምን እንደተከናወነ ስሜት ይሰጥዎታል።

ዘዴ 1 - ለዚያ ሕብረቁምፊ የሙዚቃ ማስታወሻ ተጓዳኝ ድግግሞሽ ለእያንዳንዱ ሕብረቁምፊ አንድ የሳይን እሴቶች ጊዜ ይሰላል እና በድርድር ውስጥ ይከማቻል። ለምሳሌ ፣ የድርድሩ ርዝመት በናሙናዎች ውስጥ የኃጢያት ማዕበል ጊዜ ይሆናል ፣ ይህም # የናሙናዎች / ዑደት / እኩል ይሆናል። የናሙና መጠኑ 48kHz ከሆነ እና የማስታወሻ ድግግሞሽ 100Hz ከሆነ ፣ 48,000 ናሙናዎች/ሰከንድ እና 100 ዑደቶች/ሰከንድ በአንድ ዑደት ወደ 4800 ናሙናዎች ይመራሉ ፣ እና የድርድር ርዝመት 4800 ናሙናዎች ይሆናሉ እና የአንድ ሙሉ እሴቶችን ይይዛሉ ሳይን ሞገድ ወቅት። ሕብረቁምፊው በሚጫወትበት ጊዜ የኦዲዮ ናሙና ቋት ከሲን ሞገድ ድርድር ዋጋን በመውሰድ ወደ የድምጽ ማጠራቀሚያው እንደ ናሙና በማስቀመጥ ይሞላል ፣ ከዚያም ቀዳሚውን ምሳሌያችንን በኮርሱ ላይ በመጠቀም ወደ ሳይን ሞገድ ድርድር በመጨመር ጠቋሚውን ወደ ሳይን ሞገድ ድርድር ይጨምሩ። ከ 4800 ናሙናዎች አንድ ሳይን ሞገድ ዑደት በድምጽ ቋት ውስጥ ይቀመጣል። ሞዱሎ ክዋኔ በድርድር ጠቋሚው ላይ ሁል ጊዜ በ 0 እና ርዝመቱ መካከል እንዲወድቅ ፣ እና የድርድር መረጃ ጠቋሚው ከተወሰነ ደፍ በላይ ሲያልፍ (እንደ 2 ሰከንዶች ያህል ናሙናዎች ዋጋ) ሕብረቁምፊው ጠፍቷል። ብዙ ሕብረቁምፊዎችን በተመሳሳይ ጊዜ ለማጫወት ፣ የእያንዳንዱን ሕብረቁምፊዎች ድርድር መረጃ ጠቋሚ በተናጠል ይከታተሉ እና እያንዳንዱን ናሙና ለማግኘት ከእያንዳንዱ ሕብረቁምፊዎች ሳይን ሞገድ እሴቱን ያክሉ።

ዘዴ 2 - የበለጠ የሙዚቃ ቃና ለመፍጠር ፣ በቀድሞው ሞዴል እንጀምራለን እና ለእያንዳንዱ መሠረታዊ ድግግሞሽ ሃርሞኒክስን እንጨምራለን። ሃርሞኒክ ድግግሞሾች የመሠረታዊ ድግግሞሽ ኢንቲጀር ብዜቶች ናቸው። ሁለት የማይዛመዱ ድግግሞሾች አንድ ላይ ሲደመሩ ፣ ይህም ሁለት የተለያዩ ድምፆች በአንድ ጊዜ እንዲጫወቱ ያደርጋል ፣ እርስ በርሱ የሚስማሙ ሲቀላቀሉ እንደ አንድ ድምጽ ብቻ መስማቱን ይቀጥላል ፣ ግን በተለየ ድምጽ። ይህንን ለማሳካት ፣ በድምጽ ናሙናው ላይ የኃይሉን ሞገድ ዋጋ (የድርድር መረጃ ጠቋሚ % ድርድር ርዝመት) በምናክልበት ጊዜ ፣ (2 * ድርድር መረጃ ጠቋሚ % ድርድር ርዝመት) እና (3 * የድርድር መረጃ ጠቋሚ % ድርድር ርዝመት)) ፣ እና የመሳሰሉት ብዙ የተስማሙ ናቸው። እነዚህ የተባዙ ኢንዴክሶች የመጀመሪያውን ድግግሞሽ ኢንቲጀር ብዜቶች በሆኑ ድግግሞሾች ላይ ሳይን ሞገድን ያቋርጣሉ። የቃና ቁጥጥርን የበለጠ ለመቆጣጠር ፣ እያንዳንዱ የሃርሞኒክ እሴቶች በአጠቃላይ ድምፁ ውስጥ የዚያን ሃርሞኒክ መጠን በሚወክል በተለዋዋጭ ተባዝተዋል። ለምሳሌ ፣ መሠረታዊው ሳይን ሞገድ በአጠቃላይ ድምፁ ውስጥ የበለጠ ነገር እንዲሆን ሁሉም በ 6 የተባዙ እሴቶች ሊኖሩት ይችላል ፣ 5 ኛው ሃርሞኒክ ግን 1 ማባዣ ሊኖረው ይችላል ፣ ማለትም እሴቶቹ ለጠቅላላው ድምጽ በጣም ያበረክታሉ።

ዘዴ 3 - እሺ ፣ ስለዚህ አሁን በማስታወሻዎች ላይ በጣም ጥሩ ድምጽ አለን ፣ ግን አሁንም በጣም ወሳኝ ችግር አለ - እነሱ ለተወሰነ ጊዜ በቋሚ ድምጽ ይጫወታሉ። እንደ እውነተኛ መሣሪያ ሁሉ ድምጽ ለማሰማት የሚጫወትበት ሕብረቁምፊ መጠን በጊዜ ሂደት ያለ መበስበስ አለበት። ይህንን ለማሳካት ድርድር በከፍተኛ ሁኔታ በሚበሰብስ ተግባር እሴቶች ተሞልቷል። አሁን የኦዲዮ ናሙናዎች በሚፈጠሩበት ጊዜ ከእያንዳንዱ ሕብረቁምፊ የሚመጣው ድምጽ እንደ ቀደመው ዘዴ ይሰላል ፣ ነገር ግን ወደ የድምጽ ናሙናው ከመጨመራቸው በፊት በተራቀቀ የመበስበስ ተግባር ድርድር ውስጥ በእዚያ ሕብረቁምፊዎች ድርድር መረጃ ጠቋሚ ውስጥ ባለው እሴት ይባዛል። ይህ ድምፁ ከጊዜ ወደ ጊዜ በደንብ እንዲሰራጭ ያደርገዋል። የድርድር ጠቋሚው የመበስበስ ድርድር መጨረሻ ላይ ሲደርስ ሕብረቁምፊው ይቆማል።

ዘዴ 4 - ይህ የመጨረሻው ደረጃ የሕብረቁምፊ ድምፃቸውን እውነተኛ ሕብረቁምፊ ድምፃቸውን የሚሰጥ ነው። እነሱ ደስ የሚያሰኙ ከመሆናቸው በፊት ግን በግልጽ ተሰብስበው ነበር። የእውነተኛውን ዓለም በገና ሕብረቁምፊ በተሻለ ለመኮረጅ ለመሞከር ፣ ለእያንዳንዱ ሃርሞኒክ የተለየ የመበስበስ መጠን ይመደባል። በእውነተኛ ሕብረቁምፊዎች ውስጥ ፣ ሕብረቁምፊው መጀመሪያ ሲመታ ከሕብረቁምፊ የምንጠብቀውን የመቅረጽ ድምፅ የሚፈጥረው ከፍተኛ ተደጋጋሚ ተኳሃኝነት (ሃርሞኒክስ) ከፍተኛ ይዘት አለ። እነዚህ ከፍተኛ ድግግሞሽ ሃርሞኒኮች በጣም በአጭሩ የድምፅ ዋናው ክፍል ፣ የሕብረቁምፊው ድምጽ ይመታል ፣ ነገር ግን ዘገምተኛዎቹ ሃርሞኒኮች ሲረከቡ በጣም በፍጥነት ይጠፋሉ። እያንዳንዱ በድምፅ ውህደት ውስጥ ጥቅም ላይ ለሚውለው እያንዳንዱ የሃርሞኒክ ቁጥር የመበስበስ ድርድር ይፈጠራል። አሁን እያንዳንዱ ሃርሞኒክ በእራሱ ተዛማጅ የመበስበስ ድርድር በሕብረቁምፊው ድርድር ጠቋሚ ላይ በተናጠል ሊባዛ እና ወደ ድምፁ ሊጨመር ይችላል።

በአጠቃላይ የድምፅ ውህደት አስተዋይ ነው ግን ስሌት ከባድ ነው። መላውን የሕብረቁምፊ ድምጽ በአንድ ጊዜ በማህደረ ትውስታ ውስጥ ማከማቸት በጣም ብዙ ማህደረ ትውስታን ይወስዳል ፣ ነገር ግን የኃይሉን ሞገድ እና በእያንዳንዱ ክፈፍ መካከል ያለውን የመጠን ተግባር ማስላት የኦዲዮ መልሶ ማጫዎትን ፍጥነት ለመጠበቅ በጣም ረጅም ጊዜ ይወስዳል። ስሌቱን ለማፋጠን በኮድ ውስጥ በርካታ ዘዴዎች ጥቅም ላይ ይውላሉ። የኃጢያት እና የርቀት መበስበስ ሰንጠረ tablesች የመጀመሪያ ፈጠራ ካልሆነ በስተቀር ሁሉም ሂሳብ የሚከናወነው በ 24 ቢት የድምጽ ውፅዓት ውስጥ ያለውን የቁጥር ቦታ ማሰራጨት በሚፈልግ በኢንቲጀር ቅርጸት ነው። ለምሳሌ ፣ የኃጢያት ጠረጴዛው ስፋቱ 150 ስለሆነ ለስላሳ ነው ግን በጣም ትልቅ ስላልሆነ ብዙ ሕብረቁምፊዎች አብረው የሚጫወቱ ከ 24 ቢት በላይ ሊጨምሩ ይችላሉ። እንደዚሁም ፣ የቁጥር ሰንጠረዥ እሴቶች ወደ ኢንቲጀሮች ተሰብስበው ከመከማቸታቸው በፊት በ 80 ይባዛሉ። የሚስማሙ ክብደቶች በ 0 እና በ 10 መካከል ልዩ እሴቶችን ሊወስዱ ይችላሉ ፣ እንዲሁም ሁሉም ናሙናዎች በእውነቱ በእጥፍ ተጨምረዋል እና የኃጢያት ሞገዶች በ 2 ዎቹ ተዘርዝረዋል ፣ ይህም የናሙናውን መጠን በግማሽ በግማሽ ይቀንሳል። ይህ ሊጫወት የሚችለውን ከፍተኛውን ድግግሞሽ ይገድባል ፣ ግን ለአሁኑ የሕብረቁምፊዎች እና የሃርሞኖች ብዛት በፍጥነት ለማስላት አስፈላጊ ነበር።

ይህንን የድምፅ አምሳያ መፍጠር እና ወደ ሥራ ማስኬድ በአቀነባባሪው በኩል ከፍተኛ ጥረት ይጠይቃል ፣ እናም በዚህ ፕሮጀክት የጊዜ ገደብ ውስጥ በ fpga ጎን ላይ እንዲሠራ ማድረጉ እጅግ በጣም ከባድ ነበር (የትንሽ ዥረቱን እያንዳንዱን እንደገና መፍጠር አለብዎት ብለው ያስቡ)። ድምፁን ለመፈተሽ አንድ የ verilog ክፍል ሲቀየር)። ሆኖም ፣ በ fpga ላይ ማድረጉ የተሻለ የማድረግ መንገድ ሊሆን ይችላል ፣ ምናልባትም ናሙናዎችን በበቂ ሁኔታ ማስላት አለመቻልን እና ተጨማሪ ሕብረቁምፊዎችን ፣ ሀርሞኒክስን ፣ እና ሌላው ቀርቶ የድምፅ ውጤቶችን ወይም ሌሎች ተግባሮችን እንዲሰሩ መፍቀድ ሊሆን ይችላል። የአቀነባባሪ ጎን።

ደረጃ 6 - ዳሳሾችን ማገናኘት

አነፍናፊዎችን ማገናኘት
አነፍናፊዎችን ማገናኘት

ሕብረቁምፊዎችን ለመፍጠር እኛ ሕብረቁምፊው በሚጫወትበት ጊዜ የሚለዩትን የ IR ሰበር ጨረር ዳሳሾችን እንጠቀም ነበር። እኛ አነፍናፊዎቻችንን ከሚከተለው አገናኝ አዘዘን። አነፍናፊዎቹ ኃይል ፣ መሬት እና የውሂብ ሽቦ ሲኖራቸው አምጪዎቹ ኃይል እና የመሬት ሽቦ ብቻ አላቸው። ሁለቱንም አመንጪዎችን እና ዳሳሾችን ለማብራት ከ PMOD ራስጌዎች 3.3 ቮ እና የመሬት ፒኖችን ተጠቅመናል። ሁሉንም ዳሳሾች እና አመንጪዎችን ኃይል ለማገናኘት ሁሉንም ዳሳሾች እና አምሳያዎችን በትይዩ ማገናኘት አስፈላጊ ነው። ከአነፍናፊዎቹ የውሂብ ሽቦዎች እያንዳንዳቸው ወደራሳቸው የፒሞድ ፒን መሄድ ያስፈልጋቸዋል።

ደረጃ 7 - አጽም መገንባት

አጽሙን በመገንባት ላይ
አጽሙን በመገንባት ላይ

የበገናውን ቅርፅ ለመፍጠር ሦስቱ ቁርጥራጮች አነፍናፊዎችን እና አመንጪዎችን ለማስቀመጥ እንደ አጽም ያገለግላሉ። ከሁለቱም 18 ኢንች የፒ.ቪ.ቪ. በሌላው 18 ኢንች የ PVC ቧንቧ ላይ ዳሳሾችን እና አመንጪዎችን በተለዋጭ ቅደም ተከተል ያስተካክሉ ነገር ግን ትዕዛዙን ማካካሱን ያረጋግጡ (ማለትም የመጀመሪያው ቧንቧ አነፍናፊ ካለው መጀመሪያ ሁለተኛው መጀመሪያ ኢሜተር ሊኖረው ይገባል)።በቦርዱ መድረስ መቻላቸውን ለማረጋገጥ በውሂብ ፣ በኃይል እና በመሬት ሽቦዎች ላይ ረዘም ያሉ ሽቦዎችን መሸጥ አስፈላጊ ይሆናል።

ደረጃ 8 የእንጨት ውጫዊውን መገንባት

የእንጨት ውጫዊ ገጽታ መገንባት
የእንጨት ውጫዊ ገጽታ መገንባት

ይህ እርምጃ አማራጭ ነው ነገር ግን በጣም የሚመከር ነው። ከእንጨት የተሠራው ውጫዊ ገጽታ በገናን ጥሩ የሚያደርግ ብቻ ሳይሆን ዳሳሾችን እና ሽቦዎችን ከጉዳት ይጠብቃል። የእንጨት ፍሬም ከእንጨት በተቀደሰ ባለ አራት ማዕዘን ቀለበት ሊፈጠር ይችላል። የሬክታንግል ውስጡ ከቧንቧ እና ዳሳሽ አፅም ጋር ለመገጣጠም ቢያንስ ከ1-1/2 ኢንች መክፈት አለበት። ክፈፉ ከተገነባ በኋላ ገመዶቹን ከቦርዱ ጋር ለማገናኘት ከአነፍናፊው እና ከላኪዎቹ እንዲወጡ የሚያስችሉ ሁለት ቀዳዳዎችን ያድርጉ።

*ማሳሰቢያ - ጥገና ቢደረግ ወይም ትንሽ ማስተካከያ ቢደረግ የቧንቧውን አጽም ለማስወገድ እና ለማስገባት የመዳረሻ ነጥቦችን ማከል ይመከራል።

ደረጃ 9 - ሁሉንም ቁርጥራጮች አንድ ላይ ማዋሃድ

ሁሉንም ቁርጥራጮች በአንድ ላይ ማዋሃድ
ሁሉንም ቁርጥራጮች በአንድ ላይ ማዋሃድ

ሁሉም የቀደሙት እርምጃዎች ከተጠናቀቁ በገናን ለመሥራት ጊዜው አሁን ነው። በመጀመሪያ የቧንቧውን አፅም በእንጨት ውጫዊ ክፍል ውስጥ ያድርጉት። ከዚያ ለአነፍናፊዎቹ እና ለላኪዎቹ ሽቦዎችን በቦርዱ ላይ ባለው ትክክለኛ ቦታ ላይ ይሰኩ። ከዚያ ኤስዲኬውን ይክፈቱ እና የቦርዱን ፕሮግራም ለማረም የማረሚያ ቁልፍን ጠቅ ያድርጉ። አንዴ ቦርዱ በፕሮግራም ከተሰራ በኋላ ጥንድ የጆሮ ማዳመጫዎችን ወይም ድምጽ ማጉያውን ይሰኩ። በየትኛው አነፍናፊ ላይ በመመስረት የበገናዎ ሕብረቁምፊዎች ለመጀመር ከትዕዛዝ ውጭ ይሆናሉ። ብዙ ሽቦዎች ሲሳተፉ የትኛው ሽቦ ወደ የትኛው ዳሳሽ እንደሚሄድ ለመናገር አስቸጋሪ ሊሆን ስለሚችል ፣ በሶፍትዌር ውስጥ የትንሽ ቦታዎችን ለማቋረጥ የሕብረቁምፊ ቁጥሮችን የካርታ መንገድ አካትተናል። ሕብረቁምፊዎች በቅደም ተከተል ከዝቅተኛ ወደ ከፍተኛ እስኪጫወቱ ድረስ “የማይንቀሳቀስ int sensor_map [NUM_STRINGS]” ን ያግኙ እና እሴቶቹን በድርድሩ ውስጥ ያስተካክሉ።

ምናሌው ተከታታይ ተርሚናል (ለምሳሌ RealTerm) በመክፈት የባውድ መጠንን ወደ 115200 እና ማሳያውን ወደ ANSI ማቀናበር ይችላል። እሴቶቹን ለመለወጥ ወደ ላይ እና ወደ ታች እና የ a እና d ቁልፎችን በመጠቀም የ w እና s ቁልፎችን በመጠቀም ምናሌው ሊንቀሳቀስ ይችላል።

ደረጃ 10: ሮክ ይውጡ

በገና ሙሉ በሙሉ ተግባራዊ ከሆነ በኋላ። በገናን ይማሩ እና የራስዎን ሙዚቃ ጣፋጭ ድምጽ ያዳምጡ!

የሚመከር: