شمارنده BCD با FPGA

blog
۱۳۹۸-۱۱-۲۹
3 دقیقه

شمارنده یکی از پایه‌ای‌ترین و همچنین پرکاربردترین کامپوننت‌ها در کار با FPGAها و طراحی دیجیتال می‌باشد. شما همچنین برای اینکه یک تایمر داشته باشید، در ابتد باید یک کانتر یا همان شمارنده بسازید و سپس با توجه به سرعت کلاک و نحوه‌ی تغییرات شمارنده زمان مورد نظر خود را با استفاده کانتر موردنظر خود را بدست آورید.

شاید برای شما مفید باشد: آموزش FPGA

شمارنده‌ها انواع متفاوتی دارند، اما عملکرد کلی آن‌ها به یک صورت است و شما با تغییرات کوچکی در هر یک از آن‌ها می‌توانید آن را به نوع دیگری تبدیل کنید.

ما در ادامه قصد داریم که با استفاده از زبان VHDL یک شمارنده BCD را توصیف کنیم. شمایی که در حال خواندن این مقاله هستید به احتمال زیاد با BCD و همینطور شمارنده BCD به خوبی آشنا هستید. اما به صورت مختصر در ادامه به شرح این موضوع خواهیم پرداخت.

BCD یا همان Binary Coded Decimal، نوعی کد برای تبدیل اعداد دهدهی به دودویی می‌باشد. اعداد در دنیای دیجیتال به صورت دودویی یا همان باینری می‌باشند. اما اعدادی که ما روزانه با آن‌ها سر و کار داریم و در دنیای واقعی به صورت دهدهی یا دسیمال می‌باشند. پس لازم است که ما این تبدیل اعداد را انجام بدهیم.

برای اعداد در مبنای 10، ما ده عدد متفاوت داریم یعنی از 0 تا 9. حال اگر بخواهیم این اعداد را در مبنای 2 نشان بدهیم نیاز به چند بیت داریم؟

برای این کار نیاز به چهار بیت داریم. با چهار بیت می‌توان شانزده حالت مختلف را نشان داد. ما از ده حالت آن استفاده می‌کنیم و بقیه‌ی حالات آن عملا بدون استفاده باقی می‌مانند.

پس متوجه شدیم که در BCD هر عدد دسیمال با چهار بیت به صورت باینری نمایش داده می‌شود.

برای توضیحات بیشتر می‌توانید به این لینک در ویکی‌پدیا یا این لینک از فرادرس مراجعه کنید.

به طور کلی شمارنده توصیف شده‌ی ما همانند تصویر زیر است:

ساخت شمارنده BCD با استفاده از زبان VHDL

با توجه به تصویر بالا شمارنده BCD از عدد 0 تا 9 می‌شمارد، و هنگامی که به عدد 9 رسید دوباره به مقدار 0 برمی‌گردد. تعریف BCD هم چیزی غیر از این نیست.

کدی که ما برای شمارنده BCD در زیر توصیف کردیم، دارای یک ریست آسنکرون است، یعنی هر زمان که ریست شد بدون توجه به کلاک مقدار شمارنده 0 می‌شود.

سپس اگر ریست فعال نبود و همچنین ماژول فعال بود، با هر لبه بالارونده کلاک یک واحد به شمارنده اضافه می‌شود. با یک شرط چک می‌شود که اگر بیشتر از 9 شد دوباره به مقدار 0 ریست شود.

اگر با FPGA آشنایی ندارید اول مقاله FPGA چیست؟ را مطالعه نمایید.

شما در پروژه‌هایتان می‌توانید با الگوبرداری از کد بالا هر شمارنده دیگر و حتی تایمر را پیاده‌سازی کنید.

ما کد دیگری را نیز برای اینکه شمارنده BCD را بر روی سون سگمنت نشان دهیم نوشتیم.

کد زیر همان عملکرد کد بالا است با این تفاوت که در هر State معادل سون سگمنت آن نیز نوشته شده است و در نهایت آن را به صورت عملی بر روی برد نمایش خواهیم داد.

توجه کنید که چون سون سگمت‌هایی که بر روی برد ALINX قرار  دارند، آند مشترک هستند، هر سگمت با 0 منطقی روشن می‌شود. شما متناسب با بردتان می‌توانید این مقادیر را تغییر دهید.

اگر با FPGA آشنایی ندارید اول مقاله FPGA چیست؟ را مطالعه نمایید.

 

ویدئوی زیر  تست این کد را بر روی FPGA نشان می‌دهد:

اطلاعات
1
0
لینک و اشتراک
profile

سپهر

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
علی گفت :
۱۴۰۲-۰۹-۲۲ ۱۳:۴۱

سلام، ممنون از سایت بسیار مفیدتون
ممکنه کدهای فایل ucf این سون سگمنت رو هم نشون بدین یا درموردشون راهنمایی بفرمایین؟
تشکر از لطف شما

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله