ዝርዝር ሁኔታ:

4 ደረጃ ዲጂታል ቅደም ተከተል 19 ደረጃዎች (ከስዕሎች ጋር)
4 ደረጃ ዲጂታል ቅደም ተከተል 19 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: 4 ደረጃ ዲጂታል ቅደም ተከተል 19 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: 4 ደረጃ ዲጂታል ቅደም ተከተል 19 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: በ30 ቀን እራስን መለወጥ Change Yourself in 30 Days 2024, ሀምሌ
Anonim
4 ደረጃ ዲጂታል ቅደም ተከተል
4 ደረጃ ዲጂታል ቅደም ተከተል
4 ደረጃ ዲጂታል ቅደም ተከተል
4 ደረጃ ዲጂታል ቅደም ተከተል

ሲፒኢ 133 ፣ ካል ፖሊ ሳን ሉዊስ ኦቢፖ

የፕሮጀክት ፈጣሪዎች -ጄሰን ጆንስተን እና ብጆርን ኔልሰን

በዛሬው የሙዚቃ ኢንዱስትሪ ውስጥ በብዛት ከሚጠቀሙባቸው “መሣሪያዎች” አንዱ ዲጂታል ማቀነባበሪያ ነው። ከሂፕ-ሆፕ እስከ ፖፕ እና ሌላው ቀርቶ እያንዳንዱ የሙዚቃ ዘውግ ሙዚቃቸውን ወደ ሕይወት ለማምጣት የሚፈልጉትን ምት እና ድምጾችን ለመፍጠር በስቱዲዮ ውስጥ ዲጂታል ማቀነባበሪያ ይጠቀማል። በዚህ ማጠናከሪያ ትምህርት ውስጥ ከ Basys 3 FPGA ቦርድ ጋር በጣም ቀለል ያለ ማቀነባበሪያ እንፈጥራለን።

ሠራሽ ሠራተኛው በየደቂቃው በተከታታይ ድብደባ አራት የተመረጡ አራተኛ ማስታወሻዎችን ማጫወት ይችላል። ተጠቃሚዎች እያንዳንዱን የሩብ ማስታወሻ ለሙዚቃ ቅኝት ለመመደብ መቀያየሪያዎቹን ይጠቀማሉ። ለዚህ ፕሮጀክት እኛ 4-ቢት ዲጂታል ወደ አናሎግ መቀየሪያ (DAC) እየተጠቀምን ነው ውጤቱን ከቦርዱ ለመውሰድ እና ወደ አናሎግ ምልክት ለመቀየር። ከዲሲሲው የተገኘው ውጤት ሙዚቃችንን በመፍጠር ወደ መደበኛው የኮምፒተር ድምጽ ማጉያ ይመገባል። አስራ ስድስት ልዩ ልዩ እርከኖች ይቻላል። እኛ በመካከለኛው ሲ (261.6 Hz) እና B4 (493.9 Hz) መካከል በሚወድቅ በ 12 ማስታወሻዎች ላይ በአንድ ኦክታቭ ላይ የእኛን ማቀነባበሪያ እንገድባለን። እንዲሁም ተጠቃሚው ብዙ ማስታወሻዎችን በተመሳሳይ ጊዜ የመመደብ ፣ እንዲሁም የትኛውም የመቀየሪያ መቀያየሪያዎች ወደ ላይ ሳይዘዋወሩ ምደባን በመምታት ዕረፍትን የመመደብ አማራጭ ይኖረዋል። እያንዳንዱ ማስታወሻ ተመርጦ ሲጫወት ፣ የደብዳቤ ማስታወሻው በ 7 ክፍል ማሳያ ላይ ይታያል። እንዲሁም በቦርዱ ላይ ያሉትን ሶስት አዝራሮች ፣ አንዱን ሙዚቃን ለማጫወት እና ለአፍታ ለማቆም ፣ አንዱን ሠራሽ ማቀነባበሪያውን እንደገና ለማስጀመር እና ወደ “ምርጫ” ሁኔታ ለማስገባት ፣ እና ሦስተኛው በምርጫ ሁናቴ ውስጥ እያንዳንዱን ማስታወሻ ምደባ ለመመደብ እንጠቀምበታለን።

አንዴ ተጠቃሚው በማስታወሻ ምርጫቸው ከረካ እና የማጫወቻ ቁልፍን ከተጫኑ በኋላ ተጠቃሚው ለአፍታ ቆም እስኪያደርግ ወይም እስኪመርጥ ድረስ ሠራተኛው እያንዳንዱን ማስታወሻ በተከታታይ ያጫውታል።

አስፈላጊ መሣሪያዎች ዝርዝር እነሆ-

  • ቪቫዶ (ወይም ማንኛውም የ VHDL የሥራ ቦታ)
  • Basys 3 ወይም ተመሳሳይ የ FPGA ሰሌዳ
  • ዲጂታል ወደ አናሎግ መቀየሪያ (ደቂቃ። 4-ቢት)
  • የጆሮ ማዳመጫ መሰኪያ ያለው ድምጽ ማጉያ
  • ሽቦ ይመራል

ደረጃ 1 - የዲጂታል ቅደም ተከተል ተጠቃሚ አሠራር

የዲጂታል ቅደም ተከተል ተጠቃሚ አሠራር
የዲጂታል ቅደም ተከተል ተጠቃሚ አሠራር

የሚከተሉት ደረጃዎች ዲጂታል ተከታይን ለማንቀሳቀስ ነው። ዲጂታል ቅደም ተከተሉ ከ 261.6 Hz እስከ 493.9 Hz የሚደርስ የ 12 ልዩ ልዩ እርከኖችን (ሲ ፣ ዲቢ ፣ ዲ ፣ ኢብ ፣ ኢ ፣ ኤፍ ፣ ጊብ ፣ ጂ ፣ አብ ፣ ኤ ፣ ቢቢ ፣ ቢ) መልሶ ማጫዎትን ይደግፋል።

1. ሰሌዳውን ወደ ምርጫ ሁኔታ ለማስገባት የግራ አዝራሩን ይጫኑ። በዚህ ሁናቴ ውስጥ ፣ ግራ ቀኙ 4 መቀያየሪያዎች (ከ 13 እስከ 16 መቀየሪያዎች) እያንዳንዳቸው የተለየ የቃጫ እሴት ለማከማቸት ያገለግላሉ።

2. ምርጫ ለማድረግ ፣ አንዱን የግራ መቀያየሪያ (ማብሪያ / ማጥፊያ) ያንሸራትቱ ፣ እና ከዚያ የሚፈለገውን ደረጃ ለመምረጥ ትክክለኛውን 4 መቀያየሪያዎችን (ከ 1 እስከ 4 መቀየሪያዎችን) ይጠቀሙ። ከተወሰነ የቀኝ መቀየሪያዎች ጥምር ጋር የተቆራኘው ቅጥነት በሰባቱ ክፍል ማሳያ ላይ ይታያል ፣ እና ትክክለኛው መቀያየሪያዎች ወደ አዲስ ጥምረት በተዛወሩ ቁጥር ማሳያው ወደ አዲሱ ተዛማጅ ቅኝት ይዘምናል። ከግራ መቀያየሪያዎች በአንዱ ቅጥነት በጭራሽ ባለመመደብ ፣ ወይም በማስታወቂያው ላይ እንደ 0 የሚታየውን ቅጥነት በማስታወሻው ላይ በመመደብ እረፍት ሊመደብ ይችላል። ተፈላጊው ቅኝት ከተገኘ እና በማሳያው ላይ ከታየ ፣ ያንን የተወሰነ ድምጽ ወደ ማስታወሻው ለመመደብ የታችኛውን የመመደብ ቁልፍን ይጫኑ።

3. ለሶስቱ ቀሪ ማስታወሻዎች ደረጃ 2 ን ይድገሙ ፣ እያንዳንዱ የቀረውን የግራ መቀያየሪያዎችን በተናጥል በመገልበጥ ፣ የሚመለከታቸውን ምሰሶ በትክክለኛው መቀያየሪያዎች በመምረጥ ፣ እና የታችኛውን አዝራር በመጫን ድምፁን ለማስታወሻው እንዲመድብ ያድርጉ። ብዙ ማስታወሻዎች በአንድ ጊዜ ከአንድ በላይ የግራ መቀየሪያዎችን ወደ ላይ በማዛወር በተመሳሳይ ሁኔታ መመደብ ይችላሉ።

4. አሁን ሁሉም የማስታወሻ ሜዳዎች ተመድበዋል ፣ ዲጂታል ቅደም ተከተሉ ለመጫወት ዝግጁ ነው። በድምጽ ማጉያው ላይ ማስታወሻዎችን ለማጫወት ሙዚቃውን መጫወት ለመጀመር በቀላሉ ትክክለኛውን የመጫወቻ/ለአፍታ ማቆም ቁልፍን ይጫኑ። የመልሶ ማጫዎቱ ቅደም ተከተል ቅደም ተከተል ከግራ ወደ ቀኝ ከግራ መቀያየሪያዎቹ ጋር የተገናኙትን ሜዳዎች ያንፀባርቃል። ማስታወሻዎቹ በቅደም ተከተል 1 ፣ 2 ፣ 3 ፣ 4 ፣ 1 ፣ 2… ድምጽ ማጉያዎቹ ሙዚቃውን ሲጫወቱ ማሳያው በአሁኑ ጊዜ እየተጫወተ ያለውን ማስታወሻ ያሳያል። የሙዚቃ መልሶ ማጫዎትን ለማቆም በቀላሉ ትክክለኛውን አዝራር ይጫኑ ፣ ከዚያ ሙዚቃው መጫወት ያቆማል እና ለአፍታ ማቆም ምልክት በማሳያው ላይ ይታያል። የቀኝ አዝራሩን እንደገና መጫን መልሶ ማጫዎትን ይቀጥላል።

ደረጃ 2 ቴክኒካዊ ዝርዝሮች

ቴክኒካዊ ዝርዝሮች
ቴክኒካዊ ዝርዝሮች

የእኛ ማቀነባበሪያ ብዙ የተለያዩ ዲጂታል ክፍሎችን ይጠቀማል። የተካተቱት ውሱን የስቴት ማሽኖች ፣ መመዝገቢያዎች ፣ ባለ ብዙ ማዞሪያዎች ፣ የሰዓት መከፋፈሎች እና ሌሎችም ናቸው። የእኛን ማቀነባበሪያ ለመገንባት ፣ 10 ልዩ ሞዱል ፋይሎችን እንጠቀም ነበር። እያንዳንዱን ሞዱል አንድ አካል ከማድረግ ይልቅ ሞዱል ፋይሎችን በስራ አፈረስናቸው። አብዛኛዎቹ ሞጁሎች ፣ በውጤቱም ፣ ከአንድ አካል በላይ ናቸው። ከላይ ያለውን ምስል ያስተውሉ ከላይ ባለው ዲዛይኖቻችን ውስጥ እያንዳንዱን ብሎክ አንድ ላይ የተሳሰረ መሆኑን ያሳያል።

ግብዓቶችን እና ውፅአቶችን በመግለጽ ፣ አካሎቹን በማፍረስ ፣ ዓላማውን በአጠቃላይ ዲዛይን በማብራራት እያንዳንዱን ሞጁል እንወያያለን። የዚፕ ፋይል በፕሮጀክቱ ውስጥ ጥቅም ላይ የዋለውን እያንዳንዱ የ VHDL ኮድ ፋይል የያዘው በትምህርቱ ታችኛው ክፍል ላይ ተካትቷል።

ግብዓቶች

  • ክሊክ (የአገሬው ሰዓት ምልክት)
  • PP (አጫውት/ለአፍታ አቁም)
  • Sel (በምርጫ ሁናቴ ውስጥ ማቀነባበሪያን ያስቀምጡ)
  • ይመድቡ (ወደ ደረጃው አንድ ደረጃ ይመድቡ)
  • ደረጃ (የአቀማመጥ ማስታወሻዎች)
  • ተደጋጋሚ (ተፈላጊውን ድምጽ የሚፈጥሩ መቀያየሪያዎቹ)

ውጤቶች

  • አኖድ (ባለ 7 ክፍል አንዶች)
  • ካቶድ (ባለ 7 ክፍል ካቶዶች)
  • DAC (4-ቢት DAC ን መንዳት)

ደረጃ 3 ቴክኒካዊ ዝርዝሮች

ቴክኒካዊ ዝርዝሮች
ቴክኒካዊ ዝርዝሮች

ደረጃ 4: 7-ክፍል የሰዓት መከፋፈያ

7-ክፍል የሰዓት ከፋይ
7-ክፍል የሰዓት ከፋይ

የእኛ ማቀነባበሪያ በፕሮጀክታችን ውስጥ ለተለየ ዓላማ የሚያገለግሉ ምልክቶችን የሚያመርቱ ሶስት የሰዓት መከፋፈያዎችን ይጠቀማል። የሰዓት አከፋፋይ ተወላጅ የሰዓት ምልክት ይወስዳል እና ከመጀመሪያው የሰዓት ምልክት ያነሰ ድግግሞሽ ያለው የተቀየረ ምልክት ያወጣል። የ Basys 3 ተወላጅ ሰዓት 100 ሜኸ ነው። ይህ የእኛ የሰዓት መከፋፈያዎች የሚጠቀሙበት ድግግሞሽ ነው። በተለየ የአገሬው የሰዓት ድግግሞሽ የተለየ የ FPGA ሰሌዳ የሚጠቀሙ ከሆነ ኮዱን መለወጥ ሊኖርብዎት ይችላል።

ባለ 7-ክፍል የሰዓት መከፋፈያው seg_display ፋይልን የሚነዳ ምልክት ያወጣል። ወደ ክፍሉ ስንደርስ ይህ ፋይል እንዴት በበለጠ ዝርዝር እንደሚሰራ እናብራራለን። በዋናነት ፣ ይህ የሰዓት መከፋፈያ በማሳያው ላይ በአኖዶዶች እና በካቶዶች መካከል ለመቀያየር የሚያገለግል 240 Hz ምልክት ያወጣል። ምልክቱ 240 Hz ነው ምክንያቱም የሰው ዓይን የብርሃን አለመኖርን መለየት የማይችልበት ድግግሞሽ 60 Hz ነው። እኛ ሁለት አሃዞችን እንጠቀማለን ፣ ስለዚህ ይህንን ድግግሞሽ በእጥፍ በማሳደግ እያንዳንዱ አሃዝ በ 60 Hz ይንቀጠቀጣል። ከዚያ እኛ 240 Hz ለማግኘት እጥፍ እናደርገዋለን ምክንያቱም ስርዓቱ ሲቀየር ሲቀነስ ሳይሆን ምልክቱ ከፍ ሲል ብቻ ነው።

ይህንን ለማሳካት አከፋፋዩ የአገሩን 100 ሜኸር ምልክት ይወስዳል እና በእያንዳንዱ እየጨመረ ጠርዝ ላይ ይቆጥራል። ቆጣሪው 416667 ሲደርስ ውጤቱ ከዝቅተኛ ወደ ከፍተኛ ፣ ወይም በተቃራኒው ይሄዳል።

ግብዓቶች

ክሊክ (የአገሬው ሰዓት ምልክት)

ውጤቶች

Clk_7seg (ወደ seg_display)

አካላት

  • D ይመዝገቡ
  • MUX
  • ኢንቬተር
  • አድደር

ደረጃ 5 - በየደቂቃው የሰዓት አከፋፋይ ይመታል

ምቶች በየደቂቃው ሰዓት መከፋፈያ
ምቶች በየደቂቃው ሰዓት መከፋፈያ

የ BPM ሰዓት መከፋፈያ በተመሳሳይ ሁኔታ ይሠራል። ይህ አከፋፋይ በጨዋታ ሁኔታ ውስጥ ድምጾችን በሚወጣበት ጊዜ በአራቱ ደረጃዎች መካከል ያለውን መቀያየር የሚያንቀሳቅሰውን የሰዓት ድግግሞሽ ያወጣል። በ 100 BPM ላይ በማስታወሻዎች መካከል ለመቀያየር ወስነናል። በ 100 BPM ፣ እያንዳንዱ ማስታወሻ ለ 3/5 ሰከንድ ይጫወታል። የተገኘው ምልክት የ 1.67 Hz ድግግሞሽ ይኖረዋል።

የዚህን ድግግሞሽ ምልክት ለማምረት ፣ እንደገና የመቁጠር ስርዓትን እንጠቀም ነበር ፣ ግን በዚህ ጊዜ ቆጠራው 60 ሚሊዮን ነበር። ቆጣሪው 60 ሚሊዮን በደረሰ ቁጥር የውጤት ምልክቱ ወደ ላይ ወይም ወደ ታች ይቀያይራል።

ግብዓቶች

ክሊክ (ቤተኛ የሰዓት ድግግሞሽ)

ውጤቶች

Clk_BPM (ወደ output_FSM)

አካላት

  • D ይመዝገቡ
  • MUX
  • ኢንቬተር
  • አድደር

ደረጃ 6: የፒችስ ሰዓት መከፋፈያ

የፒችስክ ሰዓት መከፋፈያ
የፒችስክ ሰዓት መከፋፈያ

የፒትችስ ሰዓት መከፋፈያ ከሰዓት ክፍሎቻችን ትልቁ ነው። ይህ አከፋፋይ የእኛ ሠራሽ ማጫወቻ ሊጫወትባቸው ከሚችሉት 12 የተለያዩ ማስታወሻዎች ጋር የሚዛመዱ 12 የተለያዩ ምልክቶችን ያወጣል። የሙዚቃ ንድፈ ሃሳብን መሠረታዊ ዕውቀትን በመጠቀም ፣ ትንሽ ወይም አውቶቡስ ከሙዚቃ ማስታወሻዎች ድግግሞሽ ጋር በሚዛመድ ፍጥነት ሊወዛወዝ እንደሚችል ገምተናል። እኛ የተጠቀምናቸውን ድግግሞሾች ለማየት እዚህ ይመልከቱ። እኛ አራተኛውን ስምንት እርከኖችን እንጠቀማለን።

ተመሳሳይ የመቁጠር ስርዓት እዚህ ጥቅም ላይ ውሏል። ለቆጠርናቸው የተወሰኑ እሴቶች ፣ Clk_div_pitches የተሰየመውን ፋይል ይመልከቱ።

ግብዓቶች

ክሊክ (ቤተኛ የሰዓት ድግግሞሽ)

ውጤቶች

C ፣ Db ፣ D ፣ Eb ፣ E ፣ F ፣ Gb ፣ G ፣ Ab ፣ A ፣ Bb ፣ B (ወደ ውፅዓት_ምርጫ)

አካላት

  • D ይመዝገቡ
  • MUX
  • ኢንቬተር
  • አድደር

ደረጃ 7 አጫውት/ለአፍታ አቁም/የስቴት ማሽንን ምረጥ

ይጫወቱ/ለአፍታ አቁም/የስቴት ማሽንን ይምረጡ
ይጫወቱ/ለአፍታ አቁም/የስቴት ማሽንን ይምረጡ

በፕሮጀክታችን ውስጥ ሁለት ውሱን የስቴት ማሽኖች (ኤፍኤስኤም) አሉ። ኤፍኤስፒኤም ከተወሰነ የግዛት መጠን ውስጥ በአንድ ግዛት ውስጥ ብቻ ሊኖር የሚችል አመክንዮ መሣሪያ ነው። FSM ን በመጠቀም ፣ ዲጂታል ወረዳ በግብዓት ጥምር ላይ በመመስረት ወደ አዲስ ሁኔታ ሊሄድ ይችላል። የግቤት ሎጂክን በመጠቀም ፣ የሰዓት መውጫ ጠርዝ ሲኖር የ FSM ሁኔታ ይለወጣል። ከስቴቱ እና ግብዓቶች ወደ ወረዳው ፣ ኤፍኤምኤም በተወሰነ ሁኔታ ውስጥ ከሆነ ብቻ ለውጤቶችን የሚሰጥ የውጤት አመክንዮ መፍጠር ይችላሉ።

የ PPS ግዛት ማሽን በወረዳችን ውስጥ የመጀመሪያው FSM ነው። በዚህ FSM ውስጥ ሶስት ግዛቶች አሉ። አጫውት ፣ ለአፍታ አቁም እና የምርጫ ሁነታን። በተለያዩ ግዛቶች ውስጥ ለማለፍ የፒ.ፒ እና የምርጫ ቁልፎችን እንጠቀም ነበር። በክፍለ ግዛቶች መካከል ሽግግሮች እንዴት እንደሚከሰቱ ለማየት ከላይ ያለውን የስቴት ንድፍ ይመልከቱ። በጣም አጭር ጊዜ እንኳን አንድ አዝራሮች ሲጫኑ ማሽኑ እንዳይሸጋገር በአከባቢው 100 ሜኸ ሰዓት ላይ በማደግ ላይ ባለው ጠርዝ ላይ ይህንን የ FSM ሽግግር አደረግን። የአሁኑ ሁኔታ (P_state) ከዚህ ሞጁል ብቸኛው ውጤት ነው።

ግብዓቶች

  • ክሊክ (ቤተኛ የሰዓት ድግግሞሽ)
  • ሴል (የግራ አዝራር)
  • PP (የቀኝ አዝራር)

ውጤቶች

P_state (የአሁኑ ሁኔታ ፣ ወደ ውፅዓት_ኤፍኤም ፣ የማስታወሻ_መደብ ፣ seg_dsiplay ፣ የመጨረሻ_ምርጫ)

አካላት

  • MUX
  • D ይመዝገቡ

ደረጃ 8: ይጫወቱ/ለአፍታ አቁም/የስቴት ማሽንን ይምረጡ

ይጫወቱ/ለአፍታ አቁም/የስቴት ማሽንን ይምረጡ
ይጫወቱ/ለአፍታ አቁም/የስቴት ማሽንን ይምረጡ

ደረጃ 9 የውጤት FSM

የውጤት FSM
የውጤት FSM

ይህ በቀድሞው ክፍል የተጠቀሰው ሁለተኛው ኤፍኤስኤም ነው። ይህ ኤፍኤስኤም ከሌላው የተለየ ተግባርን ያገለግላል ፣ ግን የዚህ መሠረት በመሠረቱ ተመሳሳይ ነው።

FSM ውፅዓት የሚሠራው ከመጀመሪያው FSM የአሁኑ ሁኔታ “01” (የመጫወቻ ሁኔታ) ከሆነ ብቻ ነው። በዋናነት ፣ ይህ ለሞጁሉ ውስጥ ማንቃት ነው። ግዛቱ “01” ከሆነ ፣ ኤፍኤስፒኤም በቢፒኤም የሰዓት ምልክት ላይ በሚወጣው ጠርዝ ላይ ባሉ ግዛቶች መካከል ይለዋወጣል። እኛ የምናደርገው ውፅዓት_ኤፍኤም ለተመረጠው ምሰሶ የትኛው የሁለትዮሽ ቁጥር ወደ የውጤት_ምርጫ እና ለ seg_display ሞጁሎች እንደሚላክ ስለሚቆጣጠር ነው። FSM ከማስታወሻ ምደባ ሞጁል የሚመጣ 16-ቢት ግብዓት አለው ፣ እሱም ቀጥሎ የሚሸፈነው። በ “00” ሁኔታ ውስጥ ለ output_FSM ፣ ሞጁሉ ለተመደበው የመጀመሪያ ማስታወሻ “xxxx” ን ያወጣል። ከዚያ በ “01” ውስጥ ፣ ወደ መጀመሪያው ማስታወሻ ከመመለስዎ በፊት ለእያንዳንዱ ማስታወሻ ለሁለተኛው ማስታወሻ “yyyy” እና የመሳሰሉትን ያወጣል። ከላይ ያለውን የስቴት ንድፍ ይመልከቱ።

በክፍለ ግዛቶች መካከል መቀያየርን ለመቆጣጠር የግብዓት አመክንዮ ስለሌለ ይህ FSM ከመጀመሪያው ይለያል። ይልቁንም ፣ ኤፍኤስኤም የሚሠራው ግዛቱ ከመጀመሪያው ኤፍኤስኤም “01” ሲሆን ፣ ከዚያ ይህ ኤፍኤምኤም በሰዓት ምልክቱ ጠርዝ ላይ ባለው ግዛቶች መካከል ብቻ ይሸጋገራል። ሌላኛው ልዩነት ይህ ሞጁል የውጤት አመክንዮ አለው ፣ ማለትም የአሁኑን ሁኔታ አያወጣም ፣ በዚያ ሁኔታ ለዝግጅት ሁለትዮሽ ቁጥሩን ያወጣል።

ግብዓቶች

  • Clk_BPM (የ BPM ሰዓት ምልክት ከሰዓት መከፋፈያ)
  • FSM1_state (PS ከ PPS FSM)
  • Pitch_in (ከዝርዝር ማስታወሻ)

ውጤቶች

Pitch_out (በአንድ ጊዜ አንድ ቅጥነት ፣ ለመምረጥ እና ለመምረጥ)

አካላት

  • MUX
  • D ይመዝገቡ

ደረጃ 10 የውጤት FSM

የውጤት FSM
የውጤት FSM

ደረጃ 11: ማስታወሻ መድብ

ማስታወሻ መድብ
ማስታወሻ መድብ

የማስታወሻ ምደባ ሞጁል በእውነቱ ወደ አቀማመጥ ማስታወሻ ወይም ደረጃ የመመደብ ሃላፊነት አለበት። ይህ ሞጁል በእውነቱ በጣም ቀላል ነው። በመጀመሪያ ወረዳው በ “ምርጫ” ሁኔታ ውስጥ መሆኑን እና የእርምጃ መቀየሪያ (በስተግራ ግራ) ከፍተኛ ከሆነ ይፈትሻል። ይህ እውነት ከሆነ እና የምደባ ቁልፍ ከተጫነ የሞጁሉ ውፅዓት በድግግሞሽ ቁልፎች (በስተቀኝ በኩል) ከሚወከለው የሁለትዮሽ ቁጥር ጋር እኩል ይሆናል።

በመጀመሪያ ፣ እኛ ከዝግጅት ሰዓት ምልክቶች አንዱን በውጤቱ ላይ የሚያድን ሞዱል ለመስራት ሞክረናል ፣ ግን የግብዓት ሰዓት ምልክቶችን ለመከተል ከውጤቱ ሲለወጡ ችግሮች አጋጥመውናል። በመጨረሻው ንድፍ ውስጥ ከአንድ ጊዜ በላይ ጥቅም ላይ የዋለው ብቸኛው ሞጁል ይህ ነው። እያንዳንዱ እርምጃ የማስታወሻ_መደብ ሞዱል ከእሱ ጋር የተቆራኘ ነው ፣ እና በዚህ ምክንያት እያንዳንዱ የሞዱል ምሳሌ ከደረጃ አውቶቡስ አንድ ትንሽ ያገኛል።

ግብዓቶች

  • P_state (የአሁኑ ሁኔታ ከ PPS FSM)
  • ሴል (የግራ አዝራር)
  • መቀያየር (አንድ እርምጃ መቀየሪያ)
  • ተደጋጋሚ (ለቅጥሩ በስተቀኝ በኩል ይቀይራል)
  • መድብ (የታችኛው አዝራር ፣ ማስታወሻ ይመድባል)

ውጤቶች

ፒች (የሁለትዮሽ ቁጥር ፣ ወደ ውፅዓት_FSM)

አካላት

  • MUX
  • ዲ እንደገና መፃፍ

ደረጃ 12 የውጤት ምርጫ

የውጤት ምርጫ
የውጤት ምርጫ

የውጤት ምርጫ የሁለትዮሽ ቁጥሩን ለቅጥነት የመውሰድ እና ያንን ከየራሱ የሰዓት ምልክት ጋር የማገናኘት ኃላፊነት አለበት። መጠኑ ቢኖረውም ፣ ይህ እንዲሁ በአንፃራዊነት ቀላል ሞዱል ነው። የውጤት_ምርጫ በመሠረቱ የሁለትዮሽ ቁጥሩን ለአንድ የተወሰነ ሰዓት ምልክት ዲኮዲንግ በማድረግ የሁለትዮሽ ዲኮደር ነው። በእውነቱ ውጤቱን ለሰዓት ድግግሞሽ መመደብ ከማስታወሻ_ማሳያ ሞዱል ጋር ሲነፃፀር እዚህ በተሻለ ሁኔታ ሠርቷል ፣ ምክንያቱም ይህ ሁሉ ሞጁል ማድረግ ያለበት የቁጥጥር ግቤትን የሚወክል የሁለትዮሽ ቁጥር MUX ነው።

ስለ እንግዳ መሄጃው ይቅርታ እንጠይቃለን ፣ ቪቫዶ ለ clk_div_pitches ፋይል የፊደል ምልክቶችን በፊደል አደራጅቷል ፣ ግን ለዚህ ፋይል ሁለትዮሽ ቁጥርን በመውጣት አደራጅቷቸዋል ፣ ይህም ቦታዎቹ በተለየ ቅደም ተከተል እንዲሆኑ ምክንያት ሆኗል። እንዲሁም ከውጤቱ_ኤፍኤም ያለው የሁለትዮሽ ቁጥር “0000” ወይም ከ “1100” የሚበልጥ ከሆነ ፣ MUX በጠፍጣፋ ‹0 ›ምልክት በኩል እንደላከ ልብ ይበሉ።

ግቤት

  • ፒች (ከ output_FSM);
  • C ፣ Db ፣ D ፣ Eb ፣ E ፣ F ፣ Gb ፣ G ፣ Ab ፣ A ፣ Bb ፣ B (የሰዓት ምልክት ምልክቶች)

ውፅዓት

ቃና (ከተመረጠው የሰዓት ምልክት ጋር የሚዛመድ አንድ ትንሽ ፣ ወደ ካሬ_ዌቭ)

አካላት

MUX

ደረጃ 13 የካሬ ሞገድ ጄ

ካሬ ሞገድ ጄ
ካሬ ሞገድ ጄ

ሞዱል ካሬ_ዌቭ ከቦርዱ ወደ DAC የሚወጣው የካሬ ሞገድ ጄኔሬተር ነው። ከቀድሞው ፋይል የቃና ምልክትን በመጠቀም ፣ ይህ ካሬ_ዌቭ በቶን በሚነሳው ጠርዝ ላይ በ “0000” እና “1111” መካከል ያለውን የ 4 ቢት ቁጥር ይገለብጣል። ቶን የተወሰነ የድምፅ ድግግሞሽ ነው ፣ ስለዚህ ካሬ_ዌቭ ውፅዓት_FSM ወደ ሌላ ሁኔታ ሲሸጋገር የተለየ ድግግሞሽ ያለው ሞገድ ያወጣል። ከዚህ ሞጁል የ 4 ቢት ውፅዓት ወደ fin_sel ሞዱል ይሄዳል ፣ አመክንዮ ይህ አውቶቡስ ከ PPS FSM በመነሳት ይነሳ እንደሆነ ይገድባል።

የዚህ ካሬ ሞገድ ጄኔሬተር አማራጭ የኃጢአት ሞገድን እያመረተ ነው። ይህ ምናልባት የተሻለ የመጨረሻ ቃና ቢያስገኝም ፣ ለመተግበር እጅግ በጣም ከባድ ነው ፣ ስለሆነም ካሬ ማዕበልን ለማመንጨት መርጠናል።

ግብዓቶች

ቃና (ከውጤት_ምርጫ የሚወዛወዝ ትንሽ)

ውጤቶች

DAC_input (በተመሳሳይ የድምፅ ድግግሞሽ የሚለወጥ 4-ቢት አውቶቡስ ማወዛወዝ)

አካላት

  • ኢንቬተር
  • D ይመዝገቡ

ደረጃ 14: 7-ክፍል ማሳያ

ባለ7-ክፍል ማሳያ
ባለ7-ክፍል ማሳያ

የ seg_display ሞዱል በእኛ የ basys ሰሌዳ ላይ ያለውን የ 7 ክፍል ማሳያ ይቆጣጠራል። በሞጁሉ ውስጥ ሁለት ሂደቶች ይከሰታሉ። የመጀመሪያው ሂደት በ “ምርጫ” ሁኔታ ውስጥ ወይም በ “ጨዋታ” ሁኔታ ውስጥ በሚሆንበት ጊዜ ፍሬክን ይወስናል። በ «ለአፍታ አቁም» ሞድ ውስጥ ፣ ሞጁሉ ለአፍታ ማቆም ምልክት ለማሳየት ይፈርዳል። የ VHDL ኮዱን ሲመለከቱ ፣ የሁለትዮሽ ዲኮደር ግብዓቱን ወደ ሁለት የተለያዩ ምልክቶች ማለትም ካቶድ 1 እና ካቶዴ 2 እንደሚለውጥ ማየት ይችላሉ። ካቶዴ 1 ከሚታይበት ቦታ ጋር የሚዛመድ ፊደልን ይወክላል ፣ እና ካቶዴ 2 ደግሞ ካለ ጠፍጣፋ ምልክትን (ለ) ይወክላል። የዚህ ምክንያት በ seg_display ሞዱል ከተሰራው ሁለተኛው ሂደት ጋር ይዛመዳል።

በ basys3 ሰሌዳ ላይ ፣ የክፍሉ ማሳያ የጋራ ካቶዶች አሉት። አዶዎቹ የትኛውን አሃዝ እንደበራ ሲቆጣጠሩ ፣ ካቶዶስ የትኞቹ ክፍሎች እንደሆኑ ይቆጣጠራል። ማሳያው የጋራ ካቶዶች ስላለው ፣ ያ ማለት በአንድ ጊዜ አንድ የክፍል ስብስቦችን ብቻ ማሳየት ይችላሉ ማለት ነው። በመጀመሪያው ፕሮጀክት ላይ ፊደል እና አስፈላጊ ከሆነ በተመሳሳይ ጊዜ የጠፍጣፋ ምልክትን ማሳየት ስለምንፈልግ ያ ለዚህ ፕሮጀክት ችግር ይፈጥራል። አሁን የ 7seg የሰዓት ምልክትን ያስታውሱ? በዚህ ጉዳይ ዙሪያ ለመገኘት ፣ በ 7 ሴግ የሰዓት ምልክት ላይ አናዶዶቹን እና ካቶዶቹን ወደ ፊት እና ወደኋላ እንለውጣለን። የሰዓት ምልክቱ 240 Hz ስለሆነ እና ሁለት አሃዞችን እየተጠቀምን ስለሆነ እያንዳንዱ አሃዝ በ 60 Hz ይንቀጠቀጣል። ለሰው ዓይን ፣ አሃዞቹ በጭራሽ የማይወዛወዙ ይመስላሉ።

እንዲሁም የ basys3 ሰሌዳ ማሳያ አሉታዊ አመክንዮ እንደሚጠቀም ልብ ይበሉ። ይህ ማለት አንድ አኖድ ወይም ካቶድ ወደ '0' ከተዋቀረ ያ አሃዝ ወይም ክፍል በርቷል ፣ እና በተቃራኒው።

ግብዓቶች

  • ፒች (ለማስታወሻ ሁለትዮሽ ቁጥር ፣ በጨዋታ ሁኔታ ውስጥ ጥቅም ላይ የዋለ)
  • ተደጋጋሚ (የድግግሞሽ መቀያየሪያዎች ፣ በምርጫ ሁኔታ ውስጥ ሲሆኑ ያገለገሉ)
  • P_state (የአሁኑ ሁኔታ ከ PPS FSM)
  • Clk_240Hz (የሰዓት ምልክት ከ Clk_div_7seg ፣ እጥፍ 120 ምክንያቱም እኛ የሚነሳውን ጠርዝ ብቻ እየተጠቀምን ነው)

ውጤቶች

  • ካቶድ (በማሳያው ላይ ክፍሎችን የሚቆጣጠር አውቶቡስ ፣ የመጨረሻ ውጤት)
  • አኖድ (በማሳያው ላይ አሃዞችን የሚቆጣጠር አውቶቡስ ፣ የመጨረሻ ውጤት)

አካላት

  • ላች
  • MUX
  • D ይመዝገቡ

ደረጃ 15 የመጨረሻ ምርጫ

የመጨረሻ ምርጫ
የመጨረሻ ምርጫ

የመጨረሻ ምርጫ በዚህ ፕሮጀክት ውስጥ ጥቅም ላይ የዋለው የመጨረሻው ሞጁል ነው። ሌላ ቀላል ሞዱል ፣ ይህ ሞጁል ወደ DAC የሚሄደውን የመጨረሻውን ውጤት ይቆጣጠራል። በ “ምርጫ” ወይም “ለአፍታ አቁም” ሁኔታ ውስጥ ሲገኝ ፣ ሞጁሉ የማይነቃነቅ “0000” ን ያወጣል ፣ ስለዚህ ሙዚቃ ከአናጋሪዎቹ እንዳይጫወት። በ “ጨዋታ” ሁኔታ ፣ ሞጁሉ በካሬ_ዌቭ እንደተወሰነው አወዛጋቢውን 4-ቢት ያወጣል።

ግብዓቶች

  • P_state (የአሁኑ ሁኔታ ከ PPS FSM)
  • DAC_input (ከካሬ_ዌቭ ማወዛወዝ 4-ቢት)

ውጤቶች

DAC (በጨዋታ ሁኔታ DAC_ ግቤት ፣ የመጨረሻ ውጤት) ጋር እኩል ነው

አካላት

MUX

ደረጃ 16 - የውጭ መሣሪያዎች - DAC

ውጫዊ መሣሪያዎች: DAC
ውጫዊ መሣሪያዎች: DAC

ዲጂታል ወደ አናሎግ መቀየሪያ (DAC) የተለየ ምልክት ወስዶ ወደ ቀጣይ ምልክት ይለውጠዋል። የእኛ DAC አራት ቢት አለው እና ከማጠቃለያ ማጉያ የተሠራ ነው። በአቅርቦትና በግብረመልስ ዑደት ውስጥ የተቃዋሚዎች ሬሾን በመጠቀም በእያንዳንዱ ቅርንጫፍ ‹ማጠቃለያ› በመፍጠር በ 16 የተለያዩ ደረጃዎች የሚወጣ ስርዓት መፍጠር ችለናል። የላይኛው ቅርንጫፍ ቢት 0 አነስተኛውን ክብደት የሚሸከም እና በዛ ቅርንጫፎች ከፍ ያለ የመቋቋም አቅም ስላለው አነስተኛውን እምቅ አስተዋፅኦ ያደርጋል። ወደ ቅርንጫፎቹ ሲወርዱ ክብደቱ ይጨምራል። በሁለትዮሽ ወደ ላይ ቢቆጥሩ እና ከዚያ የትንሽ ግብዓቶችን በመጠቀም ወደ ኋላ ቢመለሱ ፣ የውጤት ፍጥነቶች እንደ አንድ ደረጃ ጥበባዊ ሳይን ሞገድ ይመስላሉ። የ 4 ቢት ምልክትን ለማስተላለፍ ለ DAC ያለው ግብዓት በቦርዱ ላይ ካለው PMODs አንዱ ጋር ተገናኝቷል።

DAC በመጀመሪያ ለኤሌክትሪክ ምህንድስና ክፍል ተሰብስቦ በእኛ የተነደፈ እና የተሸጠ እንጂ ከሱቅ አልተገዛም። ከላይ የታተመውን የወረዳ ሰሌዳ ለመፍጠር የንድፍ ፋይል ምስል ነው።

ደረጃ 17 - የውጭ መሣሪያዎች - ድምጽ ማጉያ

ውጫዊ መሣሪያዎች: ድምጽ ማጉያ
ውጫዊ መሣሪያዎች: ድምጽ ማጉያ

ለዚህ ፕሮጀክት ፣ እጅግ በጣም ጥሩ የድምፅ ማጉያ ጥንድ መግዛት አይፈልጉም። እርስዎ እንደሚሉት ፣ ድምፁ በጣም መሠረታዊ ነው። ሄደን ከምርጥ ግዢ የ 8 ዶላር የኮምፒውተር ተናጋሪዎች ስብስብ ገዝተናል። የጆሮ ማዳመጫ መሰኪያ ያለው ማንኛውም ነገር በጥሩ ሁኔታ ይሠራል። ሞኖቶን እንዲሁ በጥሩ ሁኔታ ይሠራል። የጆሮ ማዳመጫዎችን እንኳን መጠቀም ይችላሉ ፣ ግን ሊያጠ blowቸው ይችላሉ!

የ DAC ውፅዓት ከድምጽ ማጉያዎቹ ጋር ለማገናኘት ፣ የጃምፐር ገመዶችን እንጠቀማለን እና ከዚያ የውጤት ገመዱን ወደ የጆሮ ማዳመጫው መሰኪያ ጫፍ እና ገመዱን ለመሬቱ መሠረት አድርገናል። ገመዶቹን በቦታው ለማቆየት የኤሌክትሪክ ቴፕ ለመጠቀም ሞክረን ነበር ፣ ነገር ግን ብዙ ጣልቃ ገብነትን አስከትሏል። የተለየ የቴፕ ዘይቤ መሞከር ይህንን ችግር ሊፈታ ይችላል።

ለድምጽ ማጉያዎቻችን ፣ እኛ ወደ ከፍተኛው ቅንብር አዙረናቸው እና በአግባቡ ከፍተኛ ድምጽ አገኘን።

እና ያ ከ FPGA ቦርድ ዲጂታል ቅደም ተከተል ለመፍጠር የመጨረሻው እርምጃ ነው! ሁሉንም የ VHDL ኮዳችንን ለማውረድ እና ተከታይውን በተግባር ላይ ለማየት ወደሚቀጥሉት ሁለት ክፍሎች ይሂዱ።

ደረጃ 18 - የቪዲዮ ማሳያ

ይህ ቪዲዮ ማብሪያ / ማጥፊያዎቹን ለ 4 የተለያዩ እርከኖች የመመደብን ሂደት ፣ እና ተናጋሪዎቹ የየራሳቸውን ማስታወሻዎች የሚጫወቱበትን የሥራውን የመጨረሻ ስሪት ያሳያል።

ደረጃ 19 የ VHDL ኮድ

ቅደም ተከተሉን በሚገነቡበት ጊዜ ጥቅም ላይ የዋሉትን ገደቦች እና ሲም ፋይሎችን ጨምሮ ለጠቅላላው ፕሮጀክት ኮዱ እዚህ አለ። ጥቅም ላይ ያልዋሉ የዲዛይን ፋይሎች በሥነ -ሕንጻው ውስጥ እንደሚሉት ልብ ይበሉ።

የሚመከር: