فهرست مطالب:

توالی سنج دیجیتال 4 مرحله ای: 19 مرحله (همراه با تصاویر)
توالی سنج دیجیتال 4 مرحله ای: 19 مرحله (همراه با تصاویر)

تصویری: توالی سنج دیجیتال 4 مرحله ای: 19 مرحله (همراه با تصاویر)

تصویری: توالی سنج دیجیتال 4 مرحله ای: 19 مرحله (همراه با تصاویر)
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, نوامبر
Anonim
توالی سنج دیجیتال 4 مرحله ای
توالی سنج دیجیتال 4 مرحله ای
توالی سنج دیجیتال 4 مرحله ای
توالی سنج دیجیتال 4 مرحله ای

CPE 133 ، Cal Poly San Luis Obispo

سازندگان پروژه: جیسون جانستون و بیورن نلسون

در صنعت موسیقی امروز ، یکی از رایج ترین "ابزارها" سینت سایزر دیجیتال است. هر ژانری از موسیقی ، از هیپ هاپ گرفته تا پاپ و حتی کشورها ، از سینتی سایزر دیجیتالی در استودیو استفاده می کند تا ضربات و صداهایی را که برای زنده نگه داشتن موسیقی خود نیاز دارند ، ایجاد کند. در این آموزش ، ما یک سینت سایزر بسیار ساده با برد Basys 3 FPGA ایجاد می کنیم.

دستگاه سینت سایزر قادر به پخش چهار نت چهارم انتخابی با تعداد ثابت ضربان در دقیقه است. کاربران از سوئیچ ها برای اختصاص هر نت یک چهارم به یک صدای موسیقی استفاده خواهند کرد. برای این پروژه ما از یک مبدل 4 بیتی دیجیتال به آنالوگ (DAC) برای خروجی برد و تبدیل آن به سیگنال آنالوگ استفاده می کنیم. سپس خروجی DAC به بلندگوی رایانه ای استاندارد داده می شود و موسیقی ما را ایجاد می کند. شانزده زمین مجزا امکان پذیر است. ما سینت سایزر خود را به یک اکتاو 12 نت محدود می کنیم که بین C وسط (261.6 هرتز) و B4 (493.9 هرتز) قرار دارد. همچنین کاربر می تواند همزمان چندین یادداشت را اختصاص دهد و همچنین با زدن دکمه در حالی که هیچ یک از کلیدهای سوئیچ به سمت بالا جابجا نشده است ، استراحت اختصاص دهد. با انتخاب و نواختن هر نت ، یادداشت نامه روی صفحه 7 قسمتی نشان داده می شود. ما همچنین از سه دکمه روی صفحه استفاده می کنیم ، یکی برای پخش و مکث موسیقی ، یکی برای تنظیم مجدد سینت سایزر و قرار دادن آن در حالت "انتخاب" ، و سوم برای اختصاص دادن یک نت به حالت انتخاب در حالت انتخاب.

هنگامی که کاربر از انتخاب یادداشت های خود راضی است ، و پس از فشار دادن دکمه پخش ، سینت سایزر هر نت را پی در پی بارها پخش می کند تا زمانی که کاربر مکث یا انتخاب را فشار دهد.

در اینجا لیستی از تجهیزات مورد نیاز است:

  • Vivado (یا هر فضای کاری VHDL)
  • Basys 3 یا برد FPGA مشابه آن
  • مبدل دیجیتال به آنالوگ (حداقل 4 بیت)
  • بلندگو با جک هدفون
  • سیم های سیم

مرحله 1: عملکرد کاربر از Sequencer دیجیتال

عملکرد کاربر توالی سنج دیجیتال
عملکرد کاربر توالی سنج دیجیتال

مراحل زیر برای عملکرد ترتیب سنج دیجیتال است. ترتیب سنج دیجیتال از پخش 12 مرحله مجزا (C، Db، D، Eb، E، F، Gb، G، Ab، A، Bb، B) پشتیبانی می کند که از 261.6 هرتز تا 493.9 هرتز متغیر است.

1. دکمه سمت چپ را فشار دهید تا برد را در حالت انتخاب قرار دهید. هنگامی که در این حالت هستید ، از 4 سوئیچ سمت چپ (سوئیچ های 13 تا 16) هرکدام برای ذخیره مقدار گام متمایز استفاده می شود.

2. برای انتخاب ، یکی از کلیدهای سمت چپ را روشن کرده و سپس از 4 کلید راست (سوئیچ های 1 تا 4) برای انتخاب گام مورد نظر استفاده کنید. گام مربوط به ترکیبی خاص از کلیدهای راست در صفحه هفت بخش نمایش داده می شود و هر زمان که کلیدهای سمت راست به ترکیب جدیدی منتقل می شوند ، صفحه نمایش به مرحله مرتبط جدید به روز می شود. یک استراحت را می توان با عدم اختصاص گام به یکی از کلیدهای سمت چپ ، یا با اختصاص دادن گام نشان داده شده به عنوان 0 در صفحه نمایش به یادداشت اختصاص داد. پس از اینکه گام مورد نظر پیدا شد و روی صفحه نمایش داده شد ، دکمه انتهای انتهای پایین را فشار دهید تا آن گام خاص را به یادداشت اختصاص دهید.

3. مرحله 2 را برای سه یادداشت باقیمانده تکرار کنید ، هر کدام از کلیدهای چپ باقی مانده را به صورت جداگانه روشن کنید ، گام مربوطه را با کلیدهای سمت راست انتخاب کرده و دکمه پایین را فشار دهید تا گام به یادداشت اختصاص یابد. با جابجایی بیش از یکی از کلیدهای چپ به سمت بالا ، همزمان می توان چندین نت را به هم متصل کرد.

4. در حال حاضر که تمام نقاط توجه اختصاص داده شده است ، ترتیب سنج دیجیتال آماده پخش است. برای پخش نت ها روی بلندگو ، کافی است دکمه پخش/مکث سمت راست را فشار دهید تا پخش موسیقی آغاز شود. ترتیب توالی پخش آینه های مربوط به کلیدهای چپ ، از چپ به راست را نشان می دهد. نت ها با تعداد معینی از ضربان در دقیقه به ترتیب 1 ، 2 ، 3 ، 4 ، 1 ، 2… پخش می شوند. صفحه نمایش نت را نشان می دهد که در حال پخش همزمان با پخش موسیقی توسط بلندگوها نمایش داده می شود. برای متوقف کردن پخش موسیقی ، کافی است دکمه سمت راست را فشار دهید و سپس پخش موسیقی متوقف شده و نماد مکث بر روی صفحه نمایش داده می شود. با فشار مجدد دکمه سمت راست ، پخش مجدد ادامه می یابد.

مرحله 2: جزئیات فنی

جزییات فنی
جزییات فنی

سینت سایزر ما از بسیاری از اجزای مختلف دیجیتال استفاده می کند. شامل ماشینهای حالت محدود ، رجیسترها ، مالتی پلکسرها ، تقسیم کننده ساعت و موارد دیگر است. برای ساخت سینت سایزر خود ، از 10 فایل ماژولار منحصر به فرد استفاده کردیم. به جای اینکه هر ماژول را به یک جزء تبدیل کنیم ، فایلهای ماژولار را بر اساس عملکرد تقسیم بندی کردیم. در نتیجه اکثر ماژول ها بیش از یک جزء هستند. توجه داشته باشید تصویر بالا نشان می دهد که هر بلوک در طرح برتر ما به هم گره خورده است.

ما با توصیف ورودی ها و خروجی ها ، تجزیه اجزای آن و توضیح هدف آن در طراحی کلی ، درباره هر ماژول بحث خواهیم کرد. یک فایل ZIP در انتهای دستورالعمل گنجانده شده است ، که شامل هر فایل کد VHDL مورد استفاده در پروژه است.

ورودی ها

  • Clk (سیگنال ساعت بومی)
  • PP (پخش/مکث)
  • Sel (سینت سایزر را در حالت انتخاب قرار دهید)
  • اختصاص دهید (یک مرحله را به زمین اختصاص دهید)
  • مرحله (یادداشتهای موقعیتی)
  • Freq (سوئیچ هایی که گام مورد نظر را ایجاد می کنند)

خروجی ها

  • آند (آندهای 7 قسمتی)
  • کاتد (کاتد 7 قسمتی)
  • DAC (4 بیت رانندگی DAC)

مرحله 3: جزئیات فنی

جزییات فنی
جزییات فنی

مرحله 4: تقسیم کننده 7 قسمتی ساعت

ساعت تقسیم 7 قسمتی
ساعت تقسیم 7 قسمتی

سینت سایزر ما از سه تقسیم کننده ساعت استفاده می کند که همه آنها سیگنال هایی را تولید می کنند که در پروژه ما به اهداف متفاوتی خدمت می کنند. یک تقسیم کننده ساعت یک سیگنال ساعت بومی می گیرد و یک سیگنال تغییر یافته تولید می کند که دارای فرکانسی کمتر از سیگنال ساعت اصلی است. کلاک اصلی Basys 3 100 مگاهرتز است. این فرکانسی است که تقسیم ساعت ما از آن استفاده می کند. اگر از تخته FPGA متفاوتی با فرکانس ساعت بومی متفاوت استفاده می کنید ، ممکن است مجبور شوید کد را تغییر دهید.

تقسیم کننده ساعت 7 قسمتی سیگنالی تولید می کند که فایل seg_display را هدایت می کند. وقتی به بخش آن می رسیم ، نحوه عملکرد این فایل را با جزئیات بیشتری توضیح خواهیم داد. در اصل ، این تقسیم ساعت سیگنال 240 هرتز تولید می کند که برای جابجایی بین آند و کاتد روی صفحه استفاده می شود. سیگنال 240 هرتز است زیرا فرکانسی که در آن چشم انسان نمی تواند عدم وجود نور را تشخیص دهد 60 هرتز است. ما از دو رقم استفاده می کنیم ، بنابراین با دو برابر شدن این فرکانس ، هر رقم در 60 هرتز نوسان می کند. سپس آن را دو برابر می کنیم و به 240 هرتز می رسیم زیرا سیستم فقط زمانی که سیگنال بالا می رود ، تغییر می کند ، نه زمانی که پایین می آید.

برای رسیدن به این هدف ، تقسیم کننده سیگنال بومی 100 مگاهرتز را می گیرد و بر روی هر لبه در حال افزایش شمارش می کند. وقتی شمارنده به 416667 برسد ، خروجی از پایین به بالا یا برعکس می رود.

ورودی ها

Clk (سیگنال ساعت بومی)

خروجی ها

Clk_7seg (برای نمایش seg_display)

اجزاء

  • D ثبت نام کنید
  • MUX
  • معکوس کننده
  • اددر

مرحله 5: ضربان در دقیقه تقسیم کننده ساعت

ضربان در دقیقه تقسیم کننده ساعت
ضربان در دقیقه تقسیم کننده ساعت

ساعت تقسیم BPM به شیوه ای مشابه کار می کند. این تقسیم کننده فرکانس ساعت را ایجاد می کند که هنگام خروج آهنگ ها در حالت پخش ، بین چهار مرحله سوئیچ می کند. ما تصمیم گرفتیم بین یادداشت ها را در 100 BPM تغییر دهیم. در 100 BPM ، هر نت به مدت 3/5 ثانیه پخش می شود. سیگنال به دست آمده دارای فرکانس 1.67 هرتز خواهد بود.

برای تولید سیگنال با این فرکانس ، ما دوباره از یک سیستم شمارش استفاده کردیم ، اما این بار تعداد آنها 60 میلیون بود. هر بار که شمارنده به 60 میلیون می خورد ، سیگنال خروجی بالا یا پایین تغییر می کند.

ورودی ها

Clk (فرکانس ساعت بومی)

خروجی ها

Clk_BPM (به output_FSM)

اجزاء

  • D ثبت نام کنید
  • MUX
  • معکوس کننده
  • اددر

مرحله 6: Pitches Clock Divider

Pitches Clock Divider
Pitches Clock Divider

Pitches Clock Divider بزرگترین تقسیم کننده ساعت ما است. این تقسیم 12 سیگنال مختلف مربوط به 12 نت مختلف را که سینت سایزر ما می تواند پخش کند ، خروجی می دهد. با استفاده از دانش اولیه در مورد نظریه موسیقی ، ما نتیجه گرفتیم که یک بیت یا گذر می تواند با سرعتی متناسب با فرکانس نت های موسیقی نوسان کند. برای مشاهده فرکانس هایی که استفاده کردیم ، اینجا را نگاه کنید. ما از چهارمین اکتاو زمین استفاده کردیم.

در اینجا از همین سیستم شمارش استفاده می شود. برای مقادیر خاصی که حساب کرده ایم ، فایل با برچسب Clk_div_pitches را ببینید.

ورودی ها

Clk (فرکانس ساعت بومی)

خروجی ها

C ، Db ، D ، Eb ، E ، F ، Gb ، G ، Ab ، A ، Bb ، B (برای انتخاب_ خروجی)

اجزاء

  • D ثبت نام کنید
  • MUX
  • معکوس کننده
  • اددر

مرحله 7: پخش/مکث/انتخاب حالت دستگاه

پخش/مکث/دستگاه حالت را انتخاب کنید
پخش/مکث/دستگاه حالت را انتخاب کنید

در پروژه ما دو ماشین حالت محدود (FSM) وجود دارد. FSM یک دستگاه منطقی است که می تواند تنها در یک حالت از تعداد محدودی از حالتها وجود داشته باشد. با استفاده از FSM ، یک مدار دیجیتالی می تواند بر اساس ترکیبی از ورودی ها به حالت جدیدی حرکت کند. با استفاده از منطق ورودی ، حالت FSM در هنگام افزایش لبه ساعت تغییر می کند. از حالت و ورودی های داخل مدار ، می توانید منطق خروجی ایجاد کنید که خروجی هایی را فقط در صورتی که FSM در حالت خاصی قرار دارد ایجاد کند.

دستگاه حالت PPS اولین FSM در مدار ما است. سه حالت در این FSM وجود دارد. حالت پخش ، مکث و انتخاب. برای حرکت در حالات مختلف ، از دکمه های PP و Selection استفاده کردیم. برای مشاهده نحوه انتقال بین حالتها به نمودار حالت بالا مراجعه کنید. ما این انتقال FSM را در لبه بالارونده ساعت بومی 100 مگاهرتز انجام دادیم ، به طوری که برای دستگاه ممکن نیست هنگام فشار دادن یکی از دکمه ها ، حتی برای مدت زمان بسیار کوتاهی ، انتقال پیدا نکند. حالت فعلی (P_state) تنها خروجی از این ماژول است.

ورودی ها

  • Clk (فرکانس ساعت بومی)
  • Sel (دکمه سمت چپ)
  • PP (دکمه سمت راست)

خروجی ها

P_state (وضعیت فعلی ، به output_FSM ، note_assign ، seg_dsiplay ، final_select)

اجزاء

  • MUX
  • D ثبت نام کنید

مرحله 8: پخش/مکث/انتخاب حالت دستگاه

پخش/مکث/دستگاه حالت را انتخاب کنید
پخش/مکث/دستگاه حالت را انتخاب کنید

مرحله 9: خروجی FSM

خروجی FSM
خروجی FSM

این دومین FSM است که در قسمت قبل به آن اشاره شد. این FSM عملکرد متفاوتی نسبت به دیگری دارد ، اما اساس این عملکرد اساساً یکسان است.

FSM خروجی فقط در صورتی عمل می کند که وضعیت فعلی از FSM اول "01" (حالت پخش) باشد. در اصل ، این فعالسازی ماژول است. اگر حالت "01" باشد ، FSM قرار است بین حالتهایی که در لبه بالایی سیگنال ساعت BPM قرار دارند ، تغییر حالت دهد. ما این کار را به این دلیل انجام می دهیم که output_FSM کنترل می کند که کدام شماره باینری برای گام انتخاب شده به ماژول های output_select و seg_display ارسال می شود. FSM دارای یک ورودی 16 بیتی از ماژول تخصیص یادداشت است که در ادامه به آن پرداخته می شود. در حالت "00" برای output_FSM ، ماژول برای اولین نت اختصاص داده شده "xxxx" خروجی می دهد. سپس در "01" ، برای نت دوم "yyyy" و برای هر نت قبل از برگشتن به نت اول ، ادامه می یابد. نمودار حالت بالا را مشاهده کنید.

این FSM با حالت اول متفاوت است زیرا هیچ منطق ورودی برای کنترل سوئیچینگ بین حالتها وجود ندارد. در عوض ، FSM تنها زمانی کار می کند که حالت از FSM اول "01" باشد ، و سپس این FSM بین حالتها فقط در لبه بالارونده سیگنال ساعت حرکت می کند. تفاوت دیگر این است که این ماژول دارای منطق خروجی است ، بدین معنی که حالت فعلی را خروجی نمی دهد ، بلکه عدد باینری را برای گام در آن حالت خروجی می دهد.

ورودی ها

  • Clk_BPM (سیگنال ساعت BPM از تقسیم ساعت)
  • FSM1_state (PS از PPS FSM)
  • Pitch_in (نکات مربوط به note_assign)

خروجی ها

Pitch_out (یک مرحله در یک زمان ، برای خروجی_انتخاب و seg_display)

اجزاء

  • MUX
  • D ثبت نام کنید

مرحله 10: خروجی FSM

خروجی FSM
خروجی FSM

مرحله 11: توجه داشته باشید اختصاص دهید

توجه داشته باشید اختصاص دهید
توجه داشته باشید اختصاص دهید

ماژول تخصیص یادداشت وظیفه دارد در واقع یک گام به یادداشت موقعیتی یا مرحله اختصاص دهد. این ماژول در واقع بسیار ساده است. ابتدا بررسی می کند که آیا مدار در حالت "انتخاب" است و آیا یک کلید گام (در سمت چپ) زیاد است. اگر این درست باشد و دکمه تخصیص فشار داده شود ، خروجی ماژول برابر با عدد دودویی است که توسط سوئیچ های فرکانس نشان داده می شود (راست راست).

در ابتدا ، ما سعی کرده بودیم ماژولی بسازیم که در واقع یکی از سیگنال های ساعت زمین را در خروجی ذخیره کند ، اما با تغییر خروجی به دنبال سیگنال های ساعت ورودی ، مشکلاتی را تجربه کردیم. این تنها ماژولی است که بیش از یک بار در طراحی نهایی استفاده شده است. هر مرحله دارای یک ماژول note_assign است که به آن مربوط است و به همین دلیل ، هر نمونه از ماژول یک بیت از گذرگاه Step دریافت می کند.

ورودی ها

  • P_state (وضعیت فعلی از PPS FSM)
  • Sel (دکمه سمت چپ)
  • سوئیچ (سوئیچ یک مرحله ای)
  • Freq (سوئیچ راست برای زمین)
  • اختصاص (دکمه پایین ، یک یادداشت اختصاص می دهد)

خروجی ها

پیچ (شماره دودویی ، به output_FSM)

اجزاء

  • MUX
  • D ثبت نام کنید

مرحله 12: انتخاب خروجی

خروجی را انتخاب کنید
خروجی را انتخاب کنید

انتخاب خروجی وظیفه دارد که عدد دودویی را برای یک گام گرفته و آن را به سیگنال ساعت مربوطه متصل کند. با وجود اندازه ، این نیز یک ماژول نسبتاً ساده است. Output_select در اصل یک رمزگشای دودویی است که شماره باینری را برای یک گام به یک سیگنال ساعت خاص رمزگشایی می کند. در واقع اختصاص خروجی به فرکانس ساعت در اینجا بهتر از ماژول note_assign کار می کرد ، زیرا تنها کاری که این ماژول باید انجام می داد این بود که سیگنال های ساعت را با تعداد دودویی نشان دهنده ورودی کنترل MUX نشان دهد.

بابت مسیریابی عجیب عذرخواهی می کنیم ، Vivado سیگنال های گام را به صورت الفبایی برای فایل clk_div_pitches سازماندهی کرد ، اما برای این فایل آنها را با صعود به عدد باینری سازماندهی کرد ، و باعث شد ترتیب زمین ها به ترتیب دیگری باشد. همچنین توجه داشته باشید که اگر عدد باینری از output_FSM "0000" یا چیزی بیشتر از "1100" باشد ، MUX از طریق سیگنال صاف "0" ارسال می شود.

ورودی

  • گام (از output_FSM) ؛
  • C، Db، D، Eb، E، F، Gb، G، Ab، A، Bb، B (سیگنال های ساعت زمین)

خروجی

تن (یک بیت واحد که با سیگنال ساعت انتخاب شده مطابقت دارد ، به موج مربع)

اجزاء

MUX

مرحله 13: میدان موج ژنرال

موج مربع جنرال
موج مربع جنرال

ماژول square_wave مولد موج مربعی است که از برد به DAC منتقل می شود. با استفاده از سیگنال صدای فایل قبلی ، این موج مربعی عدد 4 بیت بین "0000" و "1111" را در لبه رو به افزایش Tone معکوس می کند. تن یک فرکانس گام خاص است ، بنابراین موج مربع هنگامی که خروجی_FSM به حالت دیگری منتقل می شود ، موجی با فرکانس متفاوت ایجاد می کند. خروجی 4 بیتی از این ماژول به ماژول fin_sel می رود ، جایی که منطق حکم می کند که آیا این گذرگاه بر اساس وضعیت PPS FSM خروجی داده می شود یا خیر.

جایگزینی برای این مولد موج مربعی تولید موج سینوسی است. در حالی که این به احتمال زیاد صدای نهایی بهتری را ایجاد می کند ، پیاده سازی آن بسیار دشوارتر است ، بنابراین ما فقط یک موج مربعی ایجاد کردیم.

ورودی ها

تن (بیت متغیر از انتخاب_ خروجی)

خروجی ها

DAC_input (گذرگاه نوسانی 4 بیتی که در فرکانس یکسان تغییر می کند)

اجزاء

  • معکوس کننده
  • D ثبت نام کنید

مرحله 14: نمایش 7 قسمتی

صفحه نمایش 7 قسمتی
صفحه نمایش 7 قسمتی

ماژول seg_display نمایش 7 قسمتی را در صفحه اصلی ما کنترل می کند. در داخل ماژول ، دو فرایند رخ می دهد. فرایند اول فرکانس را در حالت "انتخاب" یا Pitch هنگام حالت "پخش" رمزگشایی می کند. در حالت "مکث" ، ماژول رمزگذاری می کند تا نماد مکث را نشان دهد. با نگاه کردن به کد VHDL ، می توانید متوجه شوید که رمزگشای باینری در واقع ورودی را به دو سیگنال مختلف ، cathode1 و cathode2 رمزگشایی می کند. کاتد 1 نشان دهنده حرف مربوط به گام برای نمایش است و کاتد 2 در صورت وجود نماد مسطح (ب) را نشان می دهد. دلیل این امر مربوط به دومین فرآیند انجام شده توسط ماژول seg_display است.

در یک برد basys3 ، صفحه نمایش قطعه دارای کاتدهای مشترک است. در حالی که آندها کنترل می کنند که کدام رقم روشن است ، کاتدها کنترل می کنند که کدام بخش ها روشن هستند. از آنجا که صفحه نمایش دارای کاتدهای متداول است ، بدین معنی است که شما می توانید فقط یک مجموعه از بخش ها را در یک زمان نمایش دهید. این مسئله ای برای این پروژه ایجاد می کند زیرا ما می خواهیم یک حرف را در رقم اول و نماد صاف را در صورت لزوم ، همزمان نشان دهیم. حالا سیگنال ساعت 7 ثانیه ای را به خاطر دارید؟ برای حل این مشکل ، آندها و کاتدها را در سیگنال ساعت 7 ثانیه ای به جلو و عقب تغییر می دهیم. از آنجا که سیگنال ساعت 240 هرتز است و ما از دو رقم استفاده می کنیم ، هر رقم در 60 هرتز نوسان می کند. از نظر چشم انسان به نظر می رسد که ارقام اصلا نوسان ندارند.

همچنین توجه داشته باشید که صفحه نمایش basys3 از منطق منفی استفاده می کند. این بدان معناست که اگر یک آند یا کاتد روی "0" تنظیم شده باشد ، آن رقم یا بخش روشن خواهد بود و برعکس.

ورودی ها

  • پیچ (شماره دودویی برای یک نت ، در حالت بازی استفاده می شود)
  • Freq (سوئیچ فرکانس ، هنگام استفاده در حالت انتخاب)
  • P_state (وضعیت فعلی از PPS FSM)
  • Clk_240Hz (سیگنال ساعت از Clk_div_7seg ، دو برابر 120 زیرا ما فقط از لبه بالارونده استفاده می کنیم)

خروجی ها

  • کاتد (گذرگاه که بخش های صفحه را کنترل می کند ، خروجی نهایی)
  • آند (گذرگاهی که ارقام روی صفحه را کنترل می کند ، خروجی نهایی)

اجزاء

  • چفت
  • MUX
  • D ثبت نام کنید

مرحله 15: انتخاب نهایی

انتخاب نهایی
انتخاب نهایی

انتخاب نهایی آخرین ماژول مورد استفاده در این پروژه است. یک ماژول ساده دیگر ، این ماژول خروجی نهایی را که به DAC می رود کنترل می کند. هنگامی که در حالت "انتخاب" یا "مکث" هستید ، ماژول یک "0000" ثابت را خروجی می دهد تا هیچ موسیقی از بلندگوها پخش نشود. در حالت "play" ، ماژول 4 بیتی نوسانی را که توسط wave_wave تعیین می شود ، خروجی می دهد.

ورودی ها

  • P_state (وضعیت فعلی از PPS FSM)
  • ورودی DAC (نوسان 4 بیتی از موج مربع)

خروجی ها

DAC (برابر است با ورودی DAC_ در حالت بازی ، خروجی نهایی)

اجزاء

MUX

مرحله 16: دستگاه های خارجی: DAC

دستگاه های خارجی: DAC
دستگاه های خارجی: DAC

مبدل دیجیتال به آنالوگ (DAC) یک سیگنال گسسته می گیرد و آن را به یک سیگنال پیوسته تبدیل می کند. DAC ما دارای چهار بیت است و از تقویت کننده جمع کننده ساخته شده است. با استفاده از نسبت مقاومت ها در حلقه عرضه و بازخورد ، ما توانستیم سیستمی را ایجاد کنیم که در 16 سطح مختلف خروجی ایجاد می کند و با "جمع بندی" هر شاخه ایجاد می شود. Bit0 ، شاخه بالا ، کمترین وزن را دارد و کمترین پتانسیل را در مواقع بالا دارد ، زیرا این شاخه ها مقاومت بیشتری دارند. با پایین آمدن از شاخه ها وزن افزایش می یابد. اگر بخواهید با استفاده از ورودی های بیت به صورت دوتایی بالا و سپس عقب بکشید ، ولتاژهای خروجی شبیه یک موج سینوسی مرحله ای به نظر می رسند. ورودی DAC به یکی از PMOD های روی برد وصل شد تا سیگنال 4 بیتی منتقل شود.

DAC در اصل برای کلاس مهندسی برق مونتاژ شده بود و توسط ما طراحی و لحیم شده بود ، نه اینکه از یک فروشگاه خریداری شود. در بالا تصویری از فایل طراحی برای ایجاد برد مدار چاپی آمده است.

مرحله 17: دستگاه های خارجی: بلندگو

دستگاه های خارجی: بلندگو
دستگاه های خارجی: بلندگو

برای این پروژه ، شما نمی خواهید یک جفت بلندگوی فوق العاده زیبا بخرید. همانطور که می دانید ، صدا بسیار اساسی است. ما رفتیم و یک مجموعه بلندگوی رایانه ای 8 دلاری از Best Buy خریدیم. هر چیزی که دارای جک هدفون باشد خوب کار می کند. Monotone نیز خوب کار می کند. حتی می توانید از هدفون استفاده کنید ، اما ممکن است آنها را منفجر کنید!

برای اتصال خروجی DAC به بلندگوها ، از کابل های بلوز استفاده کردیم و سپس کابل خروجی را به نوک جک هدفون و کابل را برای اتصال به پایه به پایه نگه داشتیم. ما سعی کردیم از نوار برقی برای ثابت نگه داشتن کابل ها استفاده کنیم ، اما تداخل زیادی ایجاد کرد. با استفاده از نوارهای مختلف می توانید این مشکل را حل کنید.

برای بلندگوهای ما ، آنها را به بالاترین تنظیمات تبدیل کردیم و صدای قابل توجهی بلند شنیدیم.

و این آخرین مرحله برای ایجاد یک دنبال کننده دیجیتال از یک تخته FPGA است! برای بارگیری تمام کد VHDL ما به دو بخش بعدی بروید و دنبال کننده را در عمل ببینید.

مرحله 18: نسخه ی نمایشی ویدئو

این ویدئو آخرین نسخه پروژه را نشان می دهد ، از جمله روند اختصاص سوئیچ ها به 4 زاویه مجزا و بلندگوهایی که نت های مربوطه را پخش می کنند.

مرحله 19: کد VHDL

در اینجا کد کل پروژه ، از جمله محدودیت ها و فایل های سیم استفاده شده در هنگام ساخت دنبال کننده وجود دارد. توجه داشته باشید که فایل های طراحی استفاده نشده در معماری چنین می گویند.

توصیه شده: