بخشی از پاورپوینت

اسلاید 1 :

عناصر گرامری زبان VHDL انواع داده- تعریف نوع- توصیف انواع حافظه-توصیف Generic

اسلاید 2 :

عناصر گرامري زبان VHDL
شناسه ها
كلمات كليدي (رزرو شده)
اعداد
كاراكترها رشته ها و رشته هاي بيتي

اسلاید 3 :

شناسه ها
كلماتي براي نام گذاري مولفه های مختلف مدل VHDL
نام سيگنال هاي ورودي
نام سیگنال های خروجي
نام سیگنال های داخلی
نام entity
نامarchitecture
.

اسلاید 4 :

قوانين نامگذاری شناسه های اصلی
نام شناسه اختياري است
فقط شامل حروف الفبا و ارقام (A..Z و a..z و0..9) و كاراكتر '_'
اولين كاراكتر حتما بايد از حروف الفبا باشد
آخرين كاراكتر نبايد '_' باشد
دو كاراكتر '_' دنبال هم غير مجاز
به حروف بزرگ و كوچك حساس نيست And2) =AND2 = and2)
يك شناسه هر طولي مي تواند داشته باشد
مثال شناسه صحیح:X10 ، x_10 ، My_gate1
مثال شناسه غلط: _X10 ، my_gate@input، gate-input

اسلاید 5 :

قوانين گسترش یافته تعریف شناسه های
بین دو تا'\' قرار می گیرند
به حروف بزرگ و كوچك حساس
كلمات رزرو شده و شناسه هاي اصلي در شناسه های گسترش مجاز و بعنوان یک شناسه متفاوت در نظر گرفته می شود
بين هر دو '\' استفاده از هر كاراكتري و با هر ترتيبي مجاز است
شناسه اي بنام BUS:\data را بايد بنويسيم \BUS:\\data\
درنسخه VHDL-93 تعريف شده است ولي درنسخه VHDL-87 شناخته شده نيست
مثال صحیح: Input، \Input\ ، \input#1\ ، \Rst\\as\

اسلاید 6 :

كلمات كليدي (رزرو شده)
شناسه هاي كه بوسيله سيستم براي کار خاص استفاده می شود
مثل in، out، or، and، port، map، end و غيره
در شناسه توسعه يافته مجاز است(\end\)
مراجعه کنید به جدول 4-1 (كليه كلمات رزرو شدة VHDL )

اسلاید 7 :

اعداد
اعداد صحيح : 12 10 256E3 12e+6
اعداد حقيقي: 1.2 256.24 3.14E-2
مبناي پيش فرض مبناي 10 است وگرنه به صورت base#number#
مثال: معادل عدد 18
در مبناي 2: 2#10010#
در مبناي 16: 16#12#
در مبناي 8: 8#22#
بمنظور خوانایی
2#1001_1101_1100_0010#215_123
مثال: معادل عدد 29
در مبناي 2: 2#11101#
در مبناي 16: 16#1D#
در مبناي 8: 8#35#

اسلاید 8 :

كاراكترها، رشته ها و رشته هاي بيتي
كاراكترها (داخل يك جفت گيومه تكي)
'a' 'B' ','

رشته کاراکتری و بیتی هر دو (داخل يك جفت گيومه دوتايي (
"This is a string"

هر كاراكتر قابل چاپ مجاز است (حتی خود" که البته دو بار تگرار میشود )
"This is a ""String""."

اسلاید 9 :

رشته بيتي
يك رشته بيتي يك توالي از بيتها است
بمنظور تمایز از رشتة كاراكتري در ابتداي آن B میگذارند
B”1001”
رشته بيتي در مبناي 16 يا 8 هم نوشته مي شود
Binary: B”1100_1001”, b”1001011”
Hexagonal: X”C9”, X”4b”
Octal: O”311”, o”113”
توجه كنيد دو مقدار با طول نامساوی نامساویند
b”1001011” ≠ X”4b”
O”113” ≠ X”4b”

اسلاید 10 :

اشياء داده ای Data objects
سيگنالها (توصیف سیم های ارتباطی مدار)
ثابت ها
متغيرها
فایل
در توصیف رفتاری(پردازه ها، توابع و روالها)
(در سنتز مدار وجود خارجی ندارد)

اسلاید 11 :

ثابت (constant)
با توجه به نوع مقدار میگیرد و در طول شبیهسازی مقدارش عوض نمیشود
constant list_of_name_of_constant: type :=initial value;
ثابت در ابتدای architecture و/یا process تعریف شده و در داخل آن استفاده میشود.
یک ثابت که در داخل یک پردازه تعریف میشود فقط در همان پردازه نیز میتواند استفاده شود.
constant RISE_FALL_TME: time := 2 ns;
constant DELAY1: time := 4 ns;
constant RISE_TIME, FALL_TIME: time:= 1 ns;
constant DATA_BUS: integer:= 16;

اسلاید 12 :

محل تعریف ثابت
------------------------------------------
Architecture ent1_arch of Ent1 is
CONSTANT t_propagation:time:=10ns;
Begin
.
End architecture ent1_arch;
------------------------------------------
Declaring Constants
p1:process (A,B)
constant t_hold:time:=5ns;
begin
.
end process p1;
------------------------------------------

اسلاید 13 :

متغير(Variable)
داخل یک پردازه (یا procss) تعریف مي شود
variable list_of_variable_names: type [:= initial value];

variable CNTR_BIT: bit :=0;
variable VAR1: boolean :=FALSE;
variable SUM: integer range 0 to 256 :=16;
variable STS_BIT: bit_vector (7 downto 0);
مقدارش می تواند با استفاده از جملات انتساب تغییر کند
دستور انتساب براي متغيرها
Variable_name := expression;
تغییر به محض اجرای دستور انتساب بدون تاخیر انجام می شود

اسلاید 14 :

سيگنال (Signal)
داخل یک Architcture تعریف مي شود
signal list_of_signal_names: type [ := initial value];
signal SUM, CARRY: std_logic;
signal CLOCK: bit;
signal TRIGGER: integer :=0;
signal DATA_BUS: bit_vector (0 to 7);
signal VALUE: integer range 0 to 100;
با یک تاخیر مشخص پس از اجرای دستور انتساب به روز می شوند
SUM <= (A xor B) after 2 ns;
ميتوان با يك توالي از مقادیر، یک شکل موج دلخواه ایجاد کرد
signal wavefrm : std_logic;
wavefrm <=‘0’,‘1’ after 5ns,‘0’ after 10ns,‘1’ after 20ns;

اسلاید 15 :

تفاوت متغير و سيگنال
انتساب متغیر با ':=' و انتساب سیگنال با'<='
انتساب متغیر بدون تاخیر ولی انتساب سیگنال با تاخیر(دلتا)
انتساب متغیر ترتیبی و انتساب سیگنال همروند
متغیر فقط در داخل process شناخته شده است در حالی که سیگنال هم داخل process و هم خارج از آن در کل محدودهی Architecture شناخته شده است.
دو مثال بعد این موضوع را روشن می کند

اسلاید 16 :

----------------------------------------------------
Example of a process using Variables
----------------------------------------------------
architecture VAR of EXAMPLE is
signal TRIGGER, RESULT: integer := 0;
begin
process
variable variable1: integer :=1;
variable variable2: integer :=2;
variable variable3: integer :=3;
begin
wait on TRIGGER;
variable1 := variable2;
variable2 := variable1 + variable3;
variable3 := variable2;
RESULT <= variable1 + variable2 + variable3;
end process;
end VAR
---------------- RESULT=2+5+5=12 -------------------

اسلاید 17 :

---------------------------------------------------
Example of a process using Signals
---------------------------------------------------
architecture SIGN of EXAMPLE is
signal TRIGGER, RESULT: integer := 0;
signal signal1: integer :=1;
signal signal2: integer :=2;
signal signal3: integer :=3;
begin
process
begin
wait on TRIGGER;
signal1 <= signal2; --2
signal2 <= signal1 + signal3; --1+3=4
signal3 <= signal2; --2
RESULT <= signal1 + signal2 + signal3;
end process;
end SIGN;
----------------- RESULT=1+2+3=6 ------------------

اسلاید 18 :

انواع داده
VHDL یک زبان بشدت نوع گرا است
مثلا انتساب یک مقدار integer به یک نوع bit غیر مجاز است
انواع تعریف شده
Boolean
Integer
Character
Bit
Time
Std_ulogic
Std_logic
Array
Vectors
Records

اسلاید 19 :

Boolean Type
Architecture rtl of ex is
Begin
Process(…)
Variable alpha: Boolean;
Begin
alpha := aIf alpha then.
.
End process;
End;

اسلاید 20 :

Integer Type
اکثر ابزارهای CAD تا 32 بيت پشتیانی می کنند
میتوان برای آن محدوده تعریف کرد
Constant loop_number: integer:=365;
Signal my_int: integer range 0 to 255;
Variable x, y: integer :=0;
توجه کنید که هم ثابت هم متغیر و هم سیگنال را میتوان از هر نوعی تعریف کرد. ولی سیگنال را معمولا از نوع Std_Logic یا Bit تعریف میکنیم.

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید