انواع دادهها در VHDL
VHDL از انواع دادههای مختلف برای تعریف سیگنالها، متغیرها و مقادیر عددی استفاده میکند. این دادهها به سه دسته کلی تقسیم میشوند:
- دادههای استاندارد (Predefined Data Types)
- دادههای شمارشی (Enumerated Types)
- دادههای آرایهای و رکوردی (Composite Types)
1. دادههای استاندارد در VHDL
نوع دادهتوضیحمثال
BIT | مقدار باینری 0 یا 1 | signal A : BIT := '1'; |
STD_LOGIC | مقدار منطقی توسعهیافته (0, 1, Z, X و ...) | ;'signal B : STD_LOGIC := '0 |
BOOLEAN | مقدار TRUE یا FALSE | variable C : BOOLEAN := TRUE; |
INTEGER | اعداد صحیح مثبت و منفی | signal D : INTEGER := 10; |
REAL | اعداد اعشاری | signal E : REAL := 3.14; |
CHARACTER | یک کاراکتر از جدول ASCII | signal F : CHARACTER := 'A'; |
STRING | مجموعهای از کاراکترها | signal G : STRING := "HELLO"; |
تفاوت بین BIT و STD_LOGIC
نوع داده BIT فقط میتواند دو مقدار '0' و '1' را داشته باشد، اما STD_LOGIC چند مقدار اضافهتر مانند موارد زیر دارد:
مقدارتوضیح
'0' | مقدار منطقی صفر |
'1' | مقدار منطقی یک |
'Z' | امپدانس بالا (High Impedance) |
'X' | مقدار نامشخص |
مثال تعریف سیگنال با STD_LOGIC_VECTOR:
signal data_bus : STD_LOGIC_VECTOR(7 downto 0) := "00001111"; |
این سیگنال یک باس 8 بیتی را نمایش میدهد.
2. انواع دادههای شمارشی (Enumerated Types)
در VHDL میتوان نوع داده جدیدی تعریف کرد که شامل یک مجموعه از مقادیر مشخص باشد.
مثال:
type STATE_TYPE is (IDLE, READ, WRITE, DONE); signal state : STATE_TYPE := IDLE; |
در اینجا متغیر state فقط میتواند یکی از مقادیر IDLE، READ، WRITE یا DONE را داشته باشد.
3. دادههای آرایهای و رکوردی (Composite Types)
آرایهها (Arrays)
آرایهها مجموعهای از دادههای یکسان هستند.
مثال: تعریف آرایه 4 بیتی
type NIBBLE is array (3 downto 0) of STD_LOGIC; signal my_nibble : NIBBLE := "1100"; |
رکوردها (Records)
رکوردها شامل مجموعهای از دادهها با انواع مختلف هستند.
مثال: تعریف رکورد برای یک بسته داده
type PACKET is record address : INTEGER; data : STD_LOGIC_VECTOR(7 downto 0); end record; |
انواع عملگرها در VHDL
VHDL شامل چندین نوع عملگر برای پردازش دادهها است. این عملگرها به دستههای زیر تقسیم میشوند:
1. عملگرهای منطقی (Logical Operators)
برای عملیات منطقی بین سیگنالهای بیتی استفاده میشوند.
عملگر | توضیح | مثال |
---|---|---|
AND | ضرب منطقی | Y <= A AND B; |
OR | جمع منطقی | Y <= A OR B; |
NOT | نقیض | Y <= NOT A; |
XOR | جمعکننده XOR | Y <= A XOR B; |
2. عملگرهای مقایسهای (Comparison Operators)
برای مقایسه دو مقدار بهکار میروند.
عملگر | توضیح | مثال |
---|---|---|
= | برابر با | IF A = B THEN |
/= | نابرابر با | IF A /= B THEN |
< | کوچکتر از | IF A < B THEN |
> | بزرگتر از | IF A > B THEN |
<= | کوچکتر یا مساوی | IF A <= B THEN |
>= | بزرگتر یا مساوی | IF A >= B THEN |
3. عملگرهای ریاضی (Arithmetic Operators)
برای انجام عملیات ریاضی استفاده میشوند.
عملگر | توضیح | مثال |
---|---|---|
+ | جمع | Y <= A + B; |
- | تفریق | Y <= A - B; |
* | ضرب | Y <= A * B; |
/ | تقسیم | Y <= A / B; |