انواع دادهها در 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; |