ساخت شیفت رجیستر برای FPGA | آموزش FPGA قسمت هجدهم

blog
۱۳۹۸-۰۷-۰۸
4 دقیقه

در قسمت هفدهم از آموزش FPGA با رجیسترها آشنا شدیم و از کاربردهای رجیسترها گفتیم، نهایتا هم با استفاده از زبان VHDL یک رجیستر را به صورت Generic توصیف کردیم، که شما می‌توانستید تنها با تغییر یک عدد عرض بیت رجیستر خود را تغییردهید.

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

شیفت رجیستر

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

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

در رجیسترها خروجی هر فلیپ‌فلاپ به ورودی فلیپ‌فلاپ دیگر متصل نیست، اما در شیفت رجیسترها خروجی هر فلیپ‌فلاپ به ورودی فلیپ‌فلاپ دیگر متصل است.

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

نحوه‌ی عملکرد شیفت رجیسترها

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

شیفت به راست

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

شیفت به چپ

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

انواع شیفت رجیسترها

ورودی سریال-خروجی سریال (SISO)

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

ورودی سریال-خروجی موازی (SIPO)

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

ورودی موازی-خروجی موازی (PIPO)

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

ورودی موازی-خروجی سریال (PISO)

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

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

Shift Register شیفت رجیستر

همچنین می‌توانید گیف زیر را که از این لینک دانلود شده است نیز مشاهده کنید.

ساخت شیفت رجیستر برای FPGA | آموزش FPGA قسمت هجدهم

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

اگر به جزئیات کد توجه کنید متوجه خواهید شد که شیفت رجیستر توصیف شده از نوع SIPO می‌باشد و همچنین شیفت به راست انجام می‌دهد.

در کد بالا ما از یک سیگنال به اسم Middle نیز استفاده کردیم، دلیل آن چیست؟ تنها به این دلیل از سیگنال میانی استفاده کردیم که هم می‌خواهیم از آن بخوانیم و هم در آن بنویسم و این قابلیت در پورت تعریف شده از نوع out وجود ندارد که بخواهیم هم در آن بنویسیم و هم از آن بخوانیم. در پورت نوع out فقط می‌‎توانیم بنویسیم.

با تغییرات کوچکی می‌خواهیم همین نوع شیفت رجیستر را این بار با شیفت به چپ پیاده‌سازی کنیم.

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

اطلاعات
14
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
حسن گفت :
۱۳۹۸-۱۲-۲۷ ۱۶:۰۴

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

profile
Phoenix گفت :
۱۳۹۸-۱۲-۲۸ ۰۰:۱۰

سلام. نمیدونم از کجا می‌گید آسون؟ یعنی شما همه‌ی این موارد را بلد هستید؟

چون مورد داشتیم باهامون تماس گرفتن گفتن که آموزش هاتون خیلی پایه‌ای هستن و و از بیس دارید اموزش میدید و چیزهایی ازشون یاد گرفتم. حالا این آقایی که این حرفو زده خودش تو یه شرکت مشغول کار fpga هستش و حتی پروژه های بیرون را هم انجام میده.

حالا در نظر بگیرید کسی که برای اولین بار اسم fpga به گوشش خورده باید چقدر از اینا را بلد باشه. ما اتفاقا این اموزش را بر مبنای این تولیذ کردیم برای اینکه افرادی که هیچی از این موجود نمیدونن هم بتونن راه بیفتن

به نظر خودم که مطالب پایه‌ای هستن و نه آسون.

پروژه هم تو سایت چندتایی موجود هست سرچ کنید.

تازه با همین مطالب شما اگه خوب خونده باشید باید بتونید پروژه هایی مثل پروتکل سریال و امثالهم را از صفر خودتون بنویسید.

profile
حسن گفت :
۱۳۹۸-۱۲-۲۸ ۱۰:۱۵

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

profile
Phoenix گفت :
۱۳۹۸-۱۲-۲۸ ۱۵:۳۷

سلام شاید چون زیاد باهاش کار نکردید متوجه نیستید که این موارد چقدر کاربردی هستند. یه پیشنهاد دارم براتون شما از همین امروز شروع کنید و با دقت هرچه تمام این بیست قسمت را بخوانید و بعد از آن سعی کنید که یک پروژه که به نظر خودتان واقعی و کاربردی هست را انجام بدهید ببینید همین بیست قسمت چقدر تو این پروژه به کارتون میاد. در واقع کل پروژه شما با همین چیزا پیاده‌سازی میشه و البته خلاقیت شما.

مثلا میتونید یک اینترفیس را انتخاب کنید یا پردازش یک سیگنال ساده ولی خب در ابتدای کار پردازش سیگنال را پیشنهاد نمیکنم چون باید کلا تکنیک های که مربوط به تئوری سیگنال ها و سیستم اعداد است را بدانید.

بیایید مثلا یک پروتکل مثل RS232 را انتخاب کنید و شروع به پیاده سازی کنید هر سوالی هم داشتید همینجا بپرسید من در خدمت شما هستم.

profile
حسن گفت :
۱۳۹۹-۰۱-۱۱ ۱۴:۱۰

سلام
میشه در مورد قیدها و روش های بالا بردن سرعت عملکرد برنامه مون، هم توضیح بدید.
اگه میشه یه مثال هم بیارید.
ممنون.

profile
Phoenix گفت :
۱۳۹۹-۰۱-۱۳ ۲۲:۴۶

سلام.

الان هاردوری دیزاین کردید که سرعتش از سرعت مورد انتظارت‌ون کمتر؟ و نیاز دارید با استفاده از قیود یا روش‌های دیگر سرعتش را افزایش دهید؟

profile
حسن گفت :
۱۳۹۸-۱۲-۲۹ ۱۷:۳۴

یکی از مواردی که فکر میکنم خیلی کاربردی باشه Delay هست.
برای درست کردن delay چی کار باید کرد؟
در مورد همون RS232 که فرمودید، برای دریافت هر بیت، باید یک تاخیر زمانی مشخص داشته باشیم. مخصوصا زمانی که ارتباط آسنکرون باشه.

profile
iman گفت :
۱۳۹۸-۰۸-۲۹ ۱۷:۰۶

سلام چرا نوشته‌های شما قابلیت دانلود به صورت پی دی اف نداره؟

profile
زئوس Zeus گفت :
۱۳۹۸-۰۹-۰۲ ۱۴:۴۳

واقعا چه کاربردی میتونه داشته باشه
چون کاربردی براش متصور نبودیم به گذاشتنش هم فکر نکردیم
واقعا چه کاربردی میتونه داشته باشه ؟
ممنون از نظرتون

profile
Iman گفت :
۱۳۹۸-۰۹-۰۲ ۱۵:۰۸

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

profile
زئوس Zeus گفت :
۱۳۹۸-۰۹-۰۲ ۱۵:۲۱

اوهوم – اجازه بدید بررسی کنیم ببینیم از نظر فنی چقدر تغییر لازمه که اظافه کنیم این قابلیت رو

profile
علیرضا گفت :
۱۳۹۸-۰۸-۰۷ ۲۳:۴۴

سلام دوست عزیز، از آموزش های خوبتون سپاس گذارم. می خواستم بدونم هر چند وقت یکبار آموزش مربوط به قسمت جدید رو قرار میدید؟

profile
Phoenix گفت :
۱۳۹۸-۰۸-۰۸ ۰۸:۵۰

سلام علیرضا جان. قبلا هفته‌ای یا دو هفته‌ای یکبار بود، الان کمی بیشتر طول خواهد کشید.

become a writer

نویسنده شو !

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

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

نویسنده شو !

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

ارسال مقاله