5/10/2016
1
FPGA
Department of Biomedical Engineering
Faculty of Engineering
University of Isfahan
Seyed Yahya Moradi
UI.FPGA@gmail.com
‫برنامه‬ ‫قابل‬ ‫نده‬‫ر‬‫شما‬‫ی‬‫ر‬‫ی‬‫ز‬
5/10/2016
2
M N K
t(high)
‫سیگنال‬ ‫بودن‬ ‫یک‬ ‫زمان‬ ‫مدت‬
priod
‫سیگنال‬ ‫پریود‬
t(low)
‫سیگنال‬ ‫بودن‬ ‫صفر‬ ‫زمان‬ ‫مدت‬
5/10/2016
3
y_low
‫پالس‬ ‫تعداد‬ ‫یعنی‬
‫باید‬ ‫که‬ ‫ورودی‬
‫باشد‬ ‫صفر‬ ‫خروجی‬
y_high
‫پالس‬ ‫تعداد‬ ‫یعنی‬
‫باید‬ ‫که‬ ‫ورودی‬
‫باشد‬ ‫یک‬ ‫خروجی‬
‫ورودی‬ ‫با‬ ‫متناسب‬M
‫شود‬ ‫می‬ ‫محاسبه‬ ‫خروجی‬ ‫بودن‬ ‫صفر‬ ‫و‬ ‫یک‬ ‫پالس‬ ‫تعداد‬.
‫با‬clk‫ورودی‬
‫تعداد‬ ‫به‬y_low
‫صفر‬ ‫خروجی‬
‫ماند‬ ‫می‬
‫تعداد‬ ‫به‬y_high
‫یک‬ ‫خروجی‬
‫ماند‬ ‫می‬
5/10/2016
4
Test bench
‫طرح‬ ‫از‬ ‫استفاده‬
‫های‬ ‫ورودی‬ ‫دادن‬
M – N – K
‫بخورد‬ ‫کالک‬ ‫تا‬ ‫صبر‬ ‫و‬
‫مختلف‬ ‫های‬ ‫ورودی‬ ‫دادن‬
M – N – K
‫بخورد‬ ‫کالک‬ ‫تا‬ ‫صبر‬ ‫و‬
5/10/2016
5
‫کالک‬ ‫تولید‬10‫هرتز‬
‫در‬TEST BENCH
‫سیگناله‬ ‫در‬ ‫تغییر‬ ‫هر‬ ‫با‬‫ای‬
M,N,K
‫فایل‬ ‫در‬ ‫خط‬ ‫یک‬
TEST BENCH
‫شود‬ ‫می‬ ‫نوشته‬.
‫بعد‬ ‫اسالید‬ ‫در‬ ‫توضیحات‬.
5/10/2016
6
‫خروجی‬ ‫باالرونده‬ ‫لبه‬ ‫با‬
‫شود‬ ‫می‬ ‫ثبت‬ ‫صعود‬ ‫زمان‬.
‫خروجی‬ ‫رونده‬ ‫پایین‬ ‫لبه‬ ‫با‬
‫شود‬ ‫می‬ ‫ثبت‬ ‫نزول‬ ‫زمان‬.
‫بعدی‬ ‫باالرونده‬ ‫لبه‬ ‫با‬
‫بعدی‬ ‫صعود‬ ‫زمان‬ ‫خروجی‬
‫شود‬ ‫می‬ ‫ثبت‬.
‫بودن‬ ‫یک‬ ‫زمان‬ ‫محاسبه‬
‫خروجی‬
‫بودن‬ ‫صفر‬ ‫زمان‬ ‫محاسبه‬
‫خروجی‬
‫خروجی‬ ‫پریود‬ ‫محاسبه‬
‫تمامی‬ ‫در‬ ‫خروجی‬ ‫مشاهده‬
‫حاالت‬M
5/10/2016
7
‫حاالت‬ ‫تک‬‫تک‬‫توضیح‬M
‫وقتی‬m=000
‫خروجی‬
N/2‫صفر‬ ‫ثانیه‬
N/2‫یک‬ ‫ثانیه‬
5/10/2016
8
‫وقتی‬m=001
‫خروجی‬
N-1‫صفر‬ ‫ثانیه‬
1‫یک‬ ‫ثانیه‬
‫وقتی‬m=010
‫خروجی‬
N-K‫صفر‬ ‫ثانیه‬
K‫یک‬ ‫ثانیه‬
5/10/2016
9
‫وقتی‬m=011
‫خروجی‬
1‫صفر‬ ‫ثانیه‬
1‫یک‬ ‫ثانیه‬
‫وقتی‬m=100
‫خروجی‬
N/2‫صفر‬ ‫دقیقه‬
N/2‫دقیقه‬‫یک‬
5/10/2016
10
‫وقتی‬m=101
‫خروجی‬
N-1‫صفر‬ ‫دقیقه‬
1‫دقیقه‬‫یک‬
‫وقتی‬m=110
‫خروجی‬
N-K‫صفر‬ ‫دقیقه‬
K‫دقیقه‬‫یک‬
5/10/2016
11
‫وقتی‬m=111
‫با‬ ‫مربعی‬ ‫موج‬‫دوره‬60‫ثانیه‬
‫کننده‬ ‫تفریق‬‫و‬ ‫کننده‬‫جمع‬ ‫احی‬‫ر‬‫ط‬16‫بیتی‬
‫کمک‬‫به‬16‫عدد‬Full Adder
5/10/2016
12
‫اولیه‬‫ایده‬:
‫کننده‬‫تفریق‬‫کننده‬ ‫جمع‬ ‫یک‬8‫بیتی‬
‫اولیه‬‫ایده‬:
‫کری‬ ‫با‬‫تفریق‬(‫در‬‫مثال‬cpu z80)
5/10/2016
13
‫کد‬full adder‫بیتی‬ ‫یک‬
‫کننده‬ ‫جمع‬ ‫کد‬/‫ک‬ ‫تفریق‬‫ننده‬
16‫بکمک‬ ‫بیتی‬
full adder
‫یک‬ ‫کردن‬ ‫اضافه‬XOR
‫کری‬ ‫محاسبه‬ ‫امکان‬ ‫جهت‬
‫ورودی‬
‫کردن‬ ‫اضافه‬XOR‫جهت‬
1’SC‫ورودی‬ ‫کردن‬b
‫کنن‬ ‫جمع‬ ‫تبدیل‬ ‫منظور‬ ‫به‬‫ده‬
‫کننده‬ ‫تفریق‬ ‫به‬
‫یک‬ ‫کردن‬ ‫اضافه‬XOR
‫خروجی‬ ‫کری‬ ‫تصحیح‬ ‫جهت‬
‫تفریق‬ ‫حالت‬ ‫در‬
5/10/2016
14
TEST BENCH‫جهت‬
‫تست‬
‫فایل‬ ‫در‬ ‫نوشتن‬ ‫امکان‬ ‫با‬
‫در‬ ‫توان‬ ‫می‬ ‫را‬ ‫تست‬ ‫تعداد‬
‫نمود‬ ‫تنظیم‬ ‫اینجا‬
‫عدد‬ ‫مثال‬5
‫یعنی‬5‫ورودی‬
‫در‬5‫ورودی‬
‫حاصل‬ ‫که‬25‫است‬ ‫جواب‬
‫بخش‬TEST BENCH‫صفر‬ ‫ورودی‬ ‫کری‬ ‫با‬ ‫کننده‬ ‫جمع‬ ‫حالت‬ ‫در‬ ‫تست‬ ‫جهت‬
‫جهت‬ ‫تصادفی‬ ‫اعداد‬ ‫تولید‬
‫ورودی‬ ‫دو‬a , b
‫بکمک‬ ‫محاسبه‬
Full adder
‫بکمک‬ ‫محاسبه‬
‫جمع‬ ‫عملگر‬
‫مقایسه‬ ‫جهت‬
5/10/2016
15
‫بخش‬TEST BENCH‫یک‬ ‫ورودی‬ ‫کری‬ ‫با‬ ‫کننده‬ ‫جمع‬ ‫حالت‬ ‫در‬ ‫تست‬ ‫جهت‬
‫بخش‬TEST BENCH‫صفر‬ ‫ورودی‬ ‫کری‬ ‫با‬ ‫کننده‬ ‫تفریق‬ ‫حالت‬ ‫در‬ ‫تست‬ ‫جهت‬
‫جهت‬ ‫تصادفی‬ ‫اعداد‬ ‫تولید‬
‫ورودی‬ ‫دو‬a , b
‫تفریق‬ ‫محاسبه‬
‫بکمک‬
Full adder
‫بکمک‬ ‫محاسبه‬
‫منها‬ ‫عملگر‬
‫مقایسه‬ ‫جهت‬
5/10/2016
16
‫بخش‬TEST BENCH‫یک‬ ‫ورودی‬ ‫کری‬ ‫با‬ ‫کننده‬ ‫تفریق‬ ‫حالت‬ ‫در‬ ‫تست‬ ‫جهت‬
‫ورودی‬ ‫کری‬
5/10/2016
17
‫بشکل‬ ‫ورودی‬ ‫عدد‬ ‫دو‬
‫هگزادسیمال‬
‫از‬ ‫استفاده‬ ‫با‬ ‫جواب‬
full adder
5/10/2016
18
‫خروجی‬ ‫کری‬
full adder
‫عملگر‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫جواب‬
‫با‬ ‫مقایسه‬ ‫جهت‬ ‫جمع‬
‫خروجی‬
full adder
‫کری‬ ‫کردن‬ ‫اضافه‬ ‫با‬ ‫همراه‬
‫چپ‬ ‫سمت‬ ‫در‬
5/10/2016
19
‫که‬ ‫حالتی‬ ‫در‬ ‫تست‬
M=0
Cin = 0
‫کننده‬ ‫جمع‬ ‫یعنی‬
‫ورودی‬ ‫کری‬ ‫بدون‬
‫که‬ ‫حالتی‬ ‫در‬ ‫تست‬
M=0
Cin = 1
‫کننده‬ ‫جمع‬ ‫یعنی‬
‫ورودی‬ ‫کری‬ ‫با‬
5/10/2016
20
‫که‬ ‫حالتی‬ ‫در‬ ‫تست‬
M=1
Cin = 0
‫کننده‬ ‫تفریق‬ ‫یعنی‬
‫ورودی‬ ‫کری‬ ‫بدون‬
‫که‬ ‫حالتی‬ ‫در‬ ‫تست‬
M=1
Cin = 1
‫کننده‬ ‫تفریق‬ ‫یعنی‬
‫ورودی‬ ‫کری‬ ‫با‬
5/10/2016
21
‫خروجی‬test bench
‫حاالت‬ ‫همه‬ ‫در‬
5/10/201642
‫کننده‬ ‫جمع‬ ‫احی‬‫ر‬‫ط‬/‫کن‬‫تفریق‬‫نده‬
‫کمک‬‫به‬fulladder
5/10/2016
22
5/10/201643
1-‫جمع‬ ‫مداری‬‫کننده‬/‫عدد‬‫دو‬ ‫که‬ ‫کنید‬ ‫احی‬‫ر‬‫ط‬‫کننده‬ ‫یق‬‫ر‬‫تف‬16‫بیتی‬a‫و‬b‫ورودی‬ ‫کری‬ ‫با‬‫اه‬‫ر‬‫هم‬cin‫یا‬‫مجموع‬ ‫و‬ ‫کرده‬ ‫یافت‬‫ر‬‫د‬ ‫ا‬‫ر‬
‫کند‬ ‫تولید‬‫خروجی‬ ‫در‬ ‫ا‬‫ر‬‫آنها‬ ‫تفاضل‬.‫ورودی‬ ‫یک‬M‫کند‬‫می‬ ‫تعیین‬‫ا‬‫ر‬ ‫عملیات‬ ‫نو‬.‫اگر‬M‫اگر‬ ‫و‬ ‫جمع‬ ‫عمل‬ ‫باشد‬ ‫صفر‬M‫باشد‬ ‫یک‬
‫شود‬‫می‬ ‫انجام‬ ‫یق‬‫ر‬‫تف‬‫عمل‬.‫استفادهاز‬ ‫با‬‫ا‬‫ر‬‫خود‬ ‫مدار‬16‫کننده‬ ‫جمع‬ ‫تمام‬‫عدد‬(fullAdder)‫کنید‬ ‫احی‬‫ر‬‫ط‬ ‫الزم‬ ‫گیتهای‬ ‫سایر‬ ‫و‬.
5/10/201644
‫نامه‬‫ر‬‫ب‬FullAdder
5/10/2016
23
5/10/201645
‫از‬‫استفاده‬16‫عدد‬FullAdder‫کننده‬‫جمع‬‫احی‬‫ر‬‫ط‬‫جهت‬/‫کننده‬‫یق‬‫ر‬‫تف‬16‫بیتی‬
‫گیت‬‫یک‬‫از‬‫استفاده‬
XOR
‫ورودی‬‫کری‬‫اعمال‬‫جهت‬
‫گیت‬‫یک‬‫از‬‫استفاده‬
XOR
‫یق‬‫ر‬‫تف‬‫حالت‬ ‫در‬‫خروجی‬ ‫کری‬‫اصالح‬‫جهت‬
5/10/201646
‫بنچ‬‫تست‬‫نامه‬‫ر‬‫ب‬
5/10/2016
24
5/10/201647
‫کری‬‫زمان‬‫در‬‫کننده‬‫جمع‬ ‫حالت‬ ‫در‬‫تست‬
‫صفر‬ ‫ورودی‬
5/10/201648
‫کری‬‫زمان‬‫در‬‫کننده‬‫جمع‬ ‫حالت‬ ‫در‬‫تست‬
‫یک‬ ‫ورودی‬
5/10/2016
25
5/10/201649
‫کری‬‫زمان‬‫در‬‫کننده‬‫یق‬‫ر‬‫تف‬‫حالت‬ ‫در‬‫تست‬
‫صفر‬ ‫ورودی‬
5/10/201650
‫کری‬‫زمان‬‫در‬‫کننده‬‫یق‬‫ر‬‫تف‬‫حالت‬ ‫در‬‫تست‬
‫یک‬ ‫ورودی‬
5/10/2016
26
5/10/201651
‫بنچ‬‫تست‬‫نامه‬‫ر‬‫ب‬
‫نتایج‬‫مقایسه‬‫جهت‬ ‫عملگرها‬ ‫بکمک‬‫یق‬‫ر‬‫تف‬‫و‬‫جمع‬‫محاسبه‬‫به‬
‫مدار‬‫کار‬‫صحت‬ ‫از‬‫اطمینان‬‫منظور‬
5/10/201652
‫ج‬ ‫سیمولیشن‬‫حین‬ ‫در‬‫ارش‬‫ز‬‫گ‬‫از‬‫استفاده‬‫هت‬
‫محاسبات‬ ‫نادرستی‬‫یا‬ ‫و‬‫درستی‬‫اعالم‬
5/10/2016
27
5/10/201653
‫ج‬ ‫سیمولیشن‬‫حین‬ ‫در‬‫ارش‬‫ز‬‫گ‬‫از‬‫استفاده‬‫هت‬
‫محاسبات‬ ‫نادرستی‬‫یا‬ ‫و‬‫درستی‬‫اعالم‬
5/10/201654
‫ج‬ ‫سیمولیشن‬‫حین‬ ‫در‬‫ارش‬‫ز‬‫گ‬‫از‬‫استفاده‬‫هت‬
‫محاسبات‬ ‫نادرستی‬‫یا‬ ‫و‬‫درستی‬‫اعالم‬
5/10/2016
28
5/10/201655
‫مدار‬‫احی‬‫ر‬‫ط‬‫محاسبه‬‫گر‬
f(x)=3x^2+5
5/10/201656
2-‫کننده‬ ‫ضرب‬ ‫یک‬‫ابتدا‬8‫ودی‬‫ر‬‫و‬‫عدد‬‫دو‬ ‫که‬‫کنید‬‫احی‬‫ر‬‫ط‬ ‫بیتی‬8
‫در‬ ‫ا‬‫ر‬‫بیتی‬8‫صور‬ ‫به‬ ‫ا‬‫ر‬ ‫نتیجه‬‫و‬‫کرده‬‫ضرب‬ ‫هم‬ ‫در‬‫متوالی‬ ‫کالک‬‫ت‬
‫عدد‬ ‫یک‬16‫دهد‬ ‫تحویل‬‫بیتی‬.‫م‬‫ماژول‬ ‫این‬ ‫از‬‫استفاده‬ ‫با‬‫سپس‬‫ی‬‫دار‬
‫عدد‬ ‫یک‬‫که‬ ‫کنید‬ ‫احی‬‫ر‬‫ط‬8‫بیتی‬x‫تابع‬‫کرده‬‫یافت‬‫ر‬‫د‬ ‫ا‬‫ر‬
f(x)=3x^2+5‫کند‬ ‫تولید‬ ‫ا‬‫ر‬.‫کننده‬ ‫ضرب‬ ‫از‬‫توان‬ ‫عمل‬ ‫ای‬‫ر‬‫ب‬
‫در‬ ‫ضرب‬ ‫ای‬‫ر‬‫ب‬ ‫و‬‫کنید‬‫استفاده‬3‫ابتدا‬x^2‫چپ‬ ‫به‬ ‫بیت‬ ‫یک‬ ‫ا‬‫ر‬
‫با‬ ‫ا‬‫ر‬‫حاصل‬ ‫سپس‬‫و‬‫دهید‬ ‫شیفت‬x^2‫کنید‬‫جمع‬.‫از‬ ‫نیز‬ ‫جمع‬ ‫ای‬‫ر‬‫ب‬
‫کنید‬‫استفاده‬ ‫جمع‬ ‫عملگر‬.
5/10/2016
29
5/10/201657
‫کنترلی‬‫پایه‬LOAD‫می‬ ‫باعث‬
‫تا‬‫شود‬a , b‫ضرب‬‫داخل‬‫به‬
‫شوند‬‫وارد‬‫کننده‬.
‫ای‬‫ر‬‫ب‬‫شیفت‬‫دستورات‬
‫و‬‫چپ‬ ‫به‬‫اول‬‫عدد‬‫شیفت‬
‫است‬‫ر‬‫به‬‫دوم‬‫عدد‬‫شیفت‬
‫بودن‬‫یک‬‫صورت‬‫در‬
‫عدد‬ ‫های‬‫بیت‬ ‫از‬‫کدام‬‫هر‬b
‫عدد‬a‫یافته‬‫شیفت‬
‫گردد‬‫می‬‫جمع‬‫قبل‬ ‫حاصل‬ ‫با‬.
5/10/2016 58
‫اول‬‫بار‬‫شیفت‬
‫اول‬‫کالک‬‫در‬
‫هشتم‬‫بار‬‫شیفت‬
‫هشتم‬‫کالک‬‫در‬
Load
‫ورودی‬‫اعداد‬
5/10/2016
30
5/10/201659
‫پ‬‫کنترل‬ ‫جهت‬ ‫لر‬‫ر‬‫کنت‬‫ایه‬
Load , clk
‫دادن‬‫با‬‫که‬‫صورت‬ ‫بدین‬
‫به‬‫نیاز‬‫بدون‬ ‫ورودی‬clk
‫خارجی‬
‫محاسبه‬‫فورا‬ ‫حاصل‬
‫گردد‬‫می‬
‫کنترل‬load
‫زدن‬8‫بار‬clk
5/10/201660
‫تابع‬‫محاسبه‬
F(x) = 3*x^2+5
‫محاسبه‬x^2
‫محاسبه‬2x^2
‫چپ‬ ‫به‬‫شیفت‬‫کمک‬‫به‬
‫محاسبه‬3x^2
‫جمع‬‫کمک‬‫به‬x^2+2x^2
‫با‬‫جمع‬5
5/10/2016
31
5/10/201661
Test bench
x‫از‬‫ا‬‫ر‬0‫تا‬255‫به‬
‫اعمال‬ ‫ورودی‬
‫کنیم‬‫می‬
‫عدد‬0‫تا‬255‫ا‬‫ر‬
‫می‬ ‫در‬ ‫باینری‬‫بصورت‬
‫ضرب‬‫مدار‬ ‫به‬ ‫و‬‫آوریم‬
‫کنیم‬‫می‬‫اعمال‬
‫ضرب‬ ‫تا‬‫کنیم‬‫صبر‬
‫شود‬‫انجام‬
‫خروجی‬ ‫مقایسه‬ ‫جهت‬ ‫ا‬‫ر‬‫فرمول‬
‫می‬‫محاسبه‬‫نیز‬‫عملگرها‬ ‫بکمک‬
‫کنیم‬
‫مقدار‬x‫و‬f(x)‫جهت‬ ‫ا‬‫ر‬
‫م‬ ‫تبدیل‬‫عدد‬ ‫به‬‫تست‬‫سهولت‬‫ی‬
‫کنیم‬
5/10/201662
X = 9
‫بکم‬ ‫تابع‬‫محاسبه‬‫ک‬
‫شده‬‫احی‬‫ر‬‫ط‬‫مدار‬
‫تابع‬‫محاسبه‬
‫محاسبات‬ ‫عملگرهای‬‫ی‬
‫نتی‬‫در‬‫است‬ ‫مساوی‬ ‫هم‬‫با‬ ‫روش‬‫دو‬‫نتیجه‬‫جه‬
‫است‬‫شده‬‫احی‬‫ر‬‫ط‬‫صحیح‬‫مدار‬
5/10/2016
32
THANK YOU

Fpga 2