توسط احمد ثقفی 

18 شهریور, 1395

پیاده‌سازی عملی

پیاده‌سازی عملی یک پروژه FPGA شامل مراحلی است که باید پشت سر هم و به دقت انجام شوند تا نتیجه مطلوب حاصل شود. در این برنامه ویدئویی، تمام مراحل مربوط به پیاده‌سازی را مرحله به مرحله و به کمک یک برد آموزشی به شما نشان خواهم داد. 

More...

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

برای آشنایی با مراحل قبل از پیاده‌سازی عملی مدار، این برنامه ویدئویی را ببینید…

در این برنامه، ابتدا موضوعات مربوط به مقدمات پیاده‌سازی را مرور می‌کنم و سپس، یک مثال را به صورت عملی و به کمک یک برد آموزشی FPGA پیاده‌سازی می‌کنم.

همچنین در مورد نحوه پروگرام کردن FPGA و حافظه Flash برای ذخیره دائمی فایل توصیف کننده مدار توضیح خواهم داد و تمام مراحل این کار را به صورت عملی به شما نشان خواهم داد.

اگر مایلید بیشترین بهره را از این برنامه ببرید، پیشنهاد می‌کنم برنامه‌های ویدئویی قبلی در مورد نرم‌افزار ISE و همچنین آموزش زبان VHDL را قبل از مشاهده این برنامه ببینید.

برای آشنایی با نرم افزار ISE این برنامه ویدئویی را ببینید…

برای آشنایی با زبان VHDL این برنامه ویدئویی را ببینید…


ویدئو یا متن؟

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

برای دانلود نسخه با کیفیت این ویدئو، روی دکمه زیر کلیک کنید:

برای دانلود کد نمونه، روی دکمه زیر کلیک کنید:

در مقاله‌ی قبل، در مورد مراحل پیاده‌سازی یک پروژه، قبل از پیاده‌سازی آن به صورت عملی روی FPGA، صحبت کردیم.

در این مقاله، همان‌طور که قبلاً هم وعده داده بودم، می‌‌خواهم مراحل پیاده‌‌سازی یک پروژه را به صورت عملی و روی یک بُرد واقعی به شما نشان دهم تا ببینید که چگونه می‌‌توانیم یک پروژه واقعی را به صورت عملی روی FPGA پیاده‎سازی کنیم.

مروری بر مقاله‌ی "یک قدم مانده به پیاده‌سازی"

قبل از اینکه وارد بحث اصلی این مقاله شویم، اجازه دهید مطالب مقاله‌ی قبل را یادآوری کنیم.

در مقاله‌ی قبل، راجع به مراحل طراحی، قبل از پیاده‌‌سازی عملی در FPGA، صحبت کردم.

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

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

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

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

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

در مقاله‌ی قبلی، یک پروژه‌ی نمونه معرفی کردیم که پروژه‌ی شمارش باینری، روی LED‌ها بود.

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

برای اینکه پروژه را پیچیده‌‌تر کنیم، یک دکمه به آن اضافه ‌می‌کنیم که با هر بار فشردن آن، جهت شمارش تغییر کند.

کدی که در زیر می‌بینید، کدی است که قبلاً برای این مدار نوشته‌ایم:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Farad1_Top is
    Port ( 
				Clock 				: 	in		std_logic;
				LED 					: 	out 	unsigned (03 downto 0);
				Push_Button			:	in		std_logic				
			);
end Farad1_Top;

architecture Behavioral of Farad1_Top is

	signal	Push_Button_Int		:	std_logic								:=	'0';
	signal	Push_Button_Prev	:	std_logic								:=	'0';
	signal	LED_Int						:	unsigned	(3 downto 0)	:=	(others=>'0');
	signal	Count_Direction		:	std_logic							  :=	'0';
	signal	Delay_Counter			:	unsigned	(24 downto 0)	:=	(others=>'0');
	
begin

	LED									<=	LED_Int;
	
	process(Clock)
	begin
	
		if rising_edge(Clock) then
			
			Push_Button_Int			<=	Push_Button;
			Push_Button_Prev		<=	Push_Button_Int;
			Delay_Counter				<=	Delay_Counter + 1;
			
			if (Delay_Counter = to_unsigned(25000000,25)) then

				LED_Int					<=	LED_Int + 1;
				Delay_Counter	  <= (others=>'0');
				
				if (Count_Direction = '1') then	
					LED_Int				<=	LED_Int - 1;		
				end if;

			end if;
							
			if (Push_Button_Int = '0' and Push_Button_Prev = '1') then
				Count_Direction		<=	not Count_Direction;
			end if;

		end if;
	
	end process;

end Behavioral;

همان‌طور که می‌‌بینید، در Entity این مدار، فقط یک کلاک و یک LED وجود دارد.

برای اینکه بتوانیم روی LED‌ها شمارش باینری را نمایش دهیم، یک پورت ورودی به نام Push_Button داریم، که همان دکمه‌ای است که قرار است با فشردن آن، جهت شمارش عوض شود.

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

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

آشنایی با یک بُرد حاوی FPGA (بُرد فراد ۱)

برای انجام این پروژه، به تنها وسایلی که نیاز دارید یک کامپیوتر و یک بُرد است که بتوانید به کمک یک رابط USB آن را به کامپیوتر متصل کنید.

بُردی که می‌‌خواهیم در این پروژه استفاده کنیم، برد فراد ۱ است. این همان بُردی است که در دوره‌های آموزشی‌ آموزشگاه فراد اندیش از آن استفاده می‌‌کنیم. در این بُرد، امکانات متنوعی برای انجام انواع آزمایش‌ها و تمرین‌های مرتبط با یادگیری FPGA وجود دارد.

همان‌طور که در شکل زیر می‌‌بینید، روی این بُرد، چهار LED، یک سون‌سگمنت، یک سنسور دما، یک حافظه SRAM، یک اسیلاتور 50 مگاهرتز، یک دیپ‌‌سوییچ چهارتایی و یک کلید یا PUSH BUTTON وجود دارد.

نمایش بخش‌های مختلف بُرد فراد ۱

بخش‌های مختلف بُرد فراد ۱

در این پروژه، از LEDها و PUSH BUTTON روی بُرد استفاده می‌‌کنیم.

همچنین روی بُرد، یک رابط RS232 وجود دارد که به کمک آن می‌‌توانید با کامپیوتر ارتباط سریال برقرار کنید. یک هدر 20 پایه هم روی این بُرد قرار داده شده است؛ در صورتی که بخواهید یک قطعه‌، که بُرد نیست را به FPGA متصل کنید، می‌‌توانید از طریق این هدر، این کار را انجام دهید.

برای پروگرام کردن FPGA روی این بُرد، نیازی به تهیه‌ی یک پروگرامر خارجی ندارید، بلکه پروگرامر USB، به صورت On-Board تعبیه شده است. شما می‌‌توانید آن را تنها به کمک یک کابل USB، به کامپیوتر متصل کنید و به راحتی آن را پروگرام کنید.

نکته‌ی جالب دیگر در مورد این بُرد این است که برای تغذیه آن نیاز به آداپتور یا تغذیه خارجی ندارید و تغذیه آن، از همان پورت USB تامین می‌شود.

بُرد فراد ۱، نیازی به پروگرامر و آداپتور خارجی ندارد و تنها با یک کابل USB به کامپیوتر متصل می‌شود.

نحوه‌ی پروگرام کردن FPGA

برای پروگرام کردن FPGA، ابتدا نیاز است که مراحل سنتز، جانمایی، مسیریابی و ساخت بیت-فایل را انجام دهیم؛ برای انجام این کارها، باید مطابق شکل زیر، روی گزینه‌ی Generate Programming File، دبل-کلیک کنید.

کلیک بر گزینه‌ی Generate Programming File در نرم‌افزار ISE برای انجام مراحل سنتز، جانمایی، مسیریابی و ساخت فایل بیتی

کلیک بر گزینه‌ی Generate Programming File در نرم‌افزار ISE، برای انجام مراحل سنتز، جانمایی، مسیریابی و ساخت بیت-فایل

بعد از اینکه بیت-فایل یا Configuration File ساخته شد، مطابق شکل زیر، علامت مثبت کنار گزینه‌ی Configure Target Device را کلیک کنید؛ سپس روی گزینه‌ی Manage Configuration Project دبل-کلیک کنید تا نرم‌افزار iMPACT (که از آن برای پروگرام کردن FPGA استفاده ‌می‌کنیم.)، اجرا شود.

اجرای نرم‌افزار iMPAC از دل نرم‌افزار ISE

اجرای نرم‌افزار iMPAC از دل نرم‌افزار ISE

حالا مطابق شکل زیر، گزینه‌ی Boundary Scan، در نرم‌افزار iMPAC را انتخاب کنید.

انتخاب گزینه‌ی Boundary Scan در نرم‌افزار iMPAC

انتخاب گزینه‌ی Boundary Scan در نرم‌افزار iMPAC

پس از آن، دکمه‌ی Initialize Chain را فشار دهید تا نرم‌افزار از طریق پروگرامر، با بُرد ارتباط برقرار کند.

برقراری ارتباط نرم‌افزار با بُرد از طریق پروگرامر On-Board

همان‌طور که می‌بینید نرم‌افزار، FPGA روی بُرد را می‌شناسد.

شناخت FPGA توسط نرم‌افزار iMPAC

شناخت FPGA توسط نرم‌افزار iMPAC

روی بُرد ما تراشه‌ی FPGA SPARTAN6 از نوع LX9 وجود دارد.

با چند بار فشار دادن دکمه‌ی ESC روی کیبورد کامپیوتر، از پیام‌هایی که ظاهر می‌شوند عبور کنید.

حالا باید آن بیت-فایلی که ساخته بودید را به این FPGA، اِعمال کنید. سپس، FPGA را پروگرام کنید.

برای این کار، مطابق شکل زیر، روی FPGA کلیک راست کنید و گزینه‌ی Assign New Configuration File را انتخاب کنید.

نمایش نحوه‌ی اعمال بیت-فایل به FPGA

نحوه‌ی اعمال بیت-فایل به FPGA

پس از آن، فولدر پروژه‌‌ای که در آن بیت-فایل را درست کرده‌اید، باز کنید و بیت-فایل را انتخاب کنید.

انتخاب بیت-فایل برای پروگرام کردن FPGA

انتخاب بیت-فایل برای پروگرام کردن FPGA

اکنون دوباره چند بار دکمه‌ی ESC روی صفحه کلید کامپیوتر را فشار دهید تا از پیام‌های ظاهر شده عبور کنید.

حالا، همان‌طور که می‌‌بینید، بیت-فایل به این FPGA اِعمال شده و نام بیت-فایل در پایین تراشه نوشته شده است.

اعمال بیت-فایل به FPGA توسط نرم‌افزار iMPAC

اعمال بیت-فایل به FPGA توسط نرم‌افزار iMPAC

برای پروگرام کردن FPGA، کافی است روی FPGA یک کلیک-راست کنید و گزینه‌ی پروگرام را انتخاب کرده و سپس دکمه‌ی OK را فشار دهید.

نمایش نحوه‌ی پروگرام کردن FPGA

نحوه‌ی پروگرام کردن FPGA

همان‌طور که روی بُرد می‌‌بینید، شمارش باینری به کمک LED‌ها انجام می‌شود.

روشن شدن LEDها روی بُرد فراد1

شمارش باینری توسط LEDهای روی بُرد فراد ۱

در پروگرام کردن این بُرد، نکته‌‌ای وجود دارد؛ همان‌طور که می‌‌دانید، محتوای FPGA مثل یک حافظه‌ی RAM یا حافظه موقتی است. بنابراین اگر ما بُرد را خاموش و روشن کنیم، محتوای FPGA پاک می‌شود و در عمل نمی‌تواند کاری انجام دهد، مگر اینکه دوباره آن را پروگرام کنیم.

روی بُرد فراد ۱، یک دکمه‌ی Initial کردن FPGA یا ریست کردن FPGA وجود دارد.

هربار که این دکمه را فشار دهید، مانند این است که برق FPGA را قطع کرده باشید؛ یعنی محتوای FPGA پاک می‌شود.

در واقع با فشار دادن این دکمه، شمارش متوقف می‌شود و FPGA کاری انجام نمی‌دهد؛ چون کدی که در آن بوده، پاک شده است.

نحوه‌ی پروگرام کردن دائمی FPGA

برای حل این مشکل، می‌توان در کنار FPGA‌ها، یک حافظه‌ی کوچک دائمی قرار داد.

روی بُرد فراد ۱، یک حافظه‌ی فلش دائمی از نوع SPI وجود دارد.

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

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

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

برای این کار، در نرم‌افزار iMPACT روی گزینه‌ی Create PROM File دبل کلیک کنید تا پنجره‌ی PROM File Formatter ظاهر شود.

نمایش نحوه‌ی تولید فایل MCS پروگرام کردن حافظه‌ی فلش از روی بیت-فایل

نحوه‌ی تولید فایل مناسب پروگرام کردن حافظه‌ی فلش از روی بیت-فایل

سپس، در بخش SPI Flash روی گزینه‌ی Configure Single FPGA کلیک کنید.

پس از آن، فلش سبز رنگ را فشار دهید.

مراحل پروگرام کردن فلش جانبی FPGA

مراحل پروگرام کردن فلش جانبی FPGA

حالا باید سایز حافظه‌ی ‌SPI‌ی روی بُرد را انتخاب کنید؛ سایز حافظه‌ی SPI‌ی روی بُرد فراد ۱، ۶۴ مگابایت است. بنابراین، گزینه‌ی 64MB را انتخاب می‌کنیم.

تعیین سایز حافظه‌ی SPI‌ای که روی بُرد قرار دارد

تعیین سایز حافظه‌ی SPI‌ای که روی بُرد قرار دارد

سپس گزینه‌ی Add Storage Device را انتخاب کنید.

تعیین تراشه‌ی روی بُرد

اضافه کردن فلش

اکنون مطابق شکل زیر، روی فلش سبز رنگ کلیک کنید.

ورود به گام سوم پروگرام کردن فلش

ورود به گام سوم پروگرام کردن فلش

می‌‌توانید در قسمت Output، برای فایلی که قرار است برای پروگرام کردن فلش ساخته شود، نامی انتخاب کنید. من اسم این فایل را LED4 قرار می‌دهم. همچنین، می‌توانید در پایین قسمت نام‌گذاری، محل ذخیره‌سازی فایل را وارد کنید. من همان محل پروژه را انتخاب می‌کنم. سپس گزینه‌ی OK را انتخاب کنید.

انتخاب نام و محل ذخیره‌سازی فایل mcs

انتخاب نام و محل ذخیره‌سازی فایل MCS

مطابق شکل زیر، گزینه‌ی OK را انتخاب کنید.

اضافه کردن SPI PROM برای پراگرام کردن آن

اضافه کردن SPI PROM برای پراگرام کردن آن

در این مرحله، باید بیت-فایلی را که قرار است از روی آن فایل فلش یا همان MCS File ساخته شود را معرفی کنید.

انتخاب بیت-فایل

انتخاب بیت-فایل

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

امکان اضافه کردن چند بیت-فایل برای پروگرام کردن فلش

امکان اضافه کردن چند بیت-فایل برای ساخت MCS File

سپس گزینه‌ی OK را کلیک کنید.

کامل شدن مرحله‌ی ورود بیت-فایل

کامل شدن مرحله‌ی ورود بیت-فایل

نهایتاً با دبل کلیک روی گزینه Generate File، فایل MCS ساخته می‌شود.

ساخت MCS-فایل

ساخت فایل MCS

به این ترتیب پیغام Generate Succeed را دریافت می‌کنید.

ساخت موفقیت‌آمیز فایل MCS

ساخت موفقیت‌آمیز فایل MCS

برای اینکه فایل MCS ساخته شده را روی حافظه‌ی فلش پروگرام کنیم، باید دوباره گزینه‌ی Boundary Scan را انتخاب کنیم.

سپس روی FPGA کلیک راست می‌کنیم و گزینه‌ی Add SPI/BPI Flash را انتخاب می‌کنیم.

اضافه کردن فلش به زنجیره‌ی سخت‌افزاری

نام فایل MCS‌ای که ساختیم، LED4.mcs بود که آن را انتخاب می‌کنیم و روی گزینه‌ی Open کلیک می‌کنیم.

انتخاب فایل MCS برای گروگرام کردن حافظه‌ی فلش

انتخاب فایل MCS برای گروگرام کردن حافظه‌ی فلش

اکنون باید دوباره نوع حافظه‌ی SPI‌ای که روی بُرد است را به نرم‌افزار معرفی کنم.

اسم حافظه‌ی SPI‌ی روی بُرد، W25Q64BV است که مطابق شکل زیر، آن را انتخاب می‌‌کنیم:

مشخص کردن پارت نامبر حافظه‌ی SPI روی بُرد

مشخص کردن پارت نامبر حافظه‌ی SPI روی بُرد

 سپس گزینه‌ی OK را انتخاب می‌‌کنیم.

همان‌طور که در شکل زیر می‌‌بینید، در نرم‌افزار، یک علامت آی‌سی فلش در بالای تراشه‌ی FPGA ظاهر می‌شود:

نمایش حافظه‌ی فلش در زنجیره‌ی سخت‌افزاری

نمایش حافظه‌ی فلش در زنجیره‌ی سخت‌افزاری

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

نمایش حافظه‌ی فلش در زنجیره‌ی سخت‌افزاری

پروگرام کردن فلش جانبی FPGA

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

اکنون حافظه‌ی فلش پروگرام شده و مدار ما به صورت صحیح کار می‌‌کند.

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

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

آیا برنامه ویدئویی پیاده‌سازی عملی یک پروژه در FPGA برای شما مفید بود؟

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

کانال تلگرام آموزش FPGA از صفر

برای عضویت در کانال تلگرام و دسترسی به آموزش‌های بیشتر و اطلاع سریع از زمان انتشار آموزش‌ها و تخفیف‌های ویژه، روی دکمه زیر کلیک کنید:

درباره نویسنده:

احمد ثقفی

شاید به این موضوعات نیز علاقه داشته باشید:

  • سلام
    در کد نمونه پروژه LED ، عمل جمع صرفا با علامت + انجام شده است.
    در صورتی که برای جمع دو سیگنال (در پروژه یکی از سیگنال ها می تواند عدد یک می باشد)، آیا نباید برنامه adder نوشته شود؟ چرا که در حال نوشتن کد یک سخت افزار هستیم نه برنامه نویسی!
    با سپاس

    • سلام،

      ممنون از توجه شما به این برنامه.

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

      موفق باشید.

  • سلام جناب ثقفی.
    بسیار ممنون که اینطور خالصانه دانش و تجربه خودتون رو در اختیار همه قرار میدید. به امید اینکه با کمک افرادی مثل شما، ایران نیاز به هیچ کشوری نداشته باشه.
    فقط یه سوال که شاید ابتدایی باشه، شما در مقاله ی دیگری در مورد کد spi توضیح دادید. یعنی خواندن از مموری باید توسط spi انجام بشه که ایجاب میکنه کدش نوشته بشه. در صورتی که بعد از ریست، fpga پاک میشه و کدی درش وجود نداره. پس چطوری از مموری اکسترنال برنامه رو بارگذاری میکنه؟

    • سلام، ممنون از شما.

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

      موفق باشید.

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

    • سلام،

      برای پاک کردن حافظه می‌توانید از برنامه iMPACT استفاده کنید. پاسخ به بخش دوم سوال شما بسیار مفصل است و در این کامنت نمی‌گنجد. در صورت تمایل، می‌توانید موضوع partial reconfiguration را جستجو و مطالعه کنید.

      موفق باشید.

  • در این برنامه زمان 500 میلی ثانیه ثابت هست و امکان تغییرش نیست دلیلش هم وجود اشکال در برنامه میباشد در حقیقت بایستی دستور صفر کردن متغیر کانتر را در داخل شرط IF افزایش دهنده مقدار باینری LED داده شود با دستور زیر

    Delay_Counter <= to_unsigned(0,26);
    یعنی بشه این :

    if (Delay_Counter = to_unsigned(25000000,25)) then

    LED_Int <= LED_Int + 1;

    if (Count_Direction = '1') then
    LED_Int <= LED_Int – 1;
    end if;

    Delay_Counter <= to_unsigned(0,26);
    end if;
    بهتره متغیر Delay_Counter هم 26 بیتی تعریف بشه تا امکان ایجاد تاخیر یک ثانیه ای هم مقدور باشه

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

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ۷ تکنیک پیشرفته کدنویسی برای FPGA

    >