انواع داده و عملگرها در VHDL

انواع داده‌ها در VHDL

VHDL از انواع داده‌های مختلف برای تعریف سیگنال‌ها، متغیرها و مقادیر عددی استفاده می‌کند. این داده‌ها به سه دسته کلی تقسیم می‌شوند:

  1. داده‌های استاندارد (Predefined Data Types)
  2. داده‌های شمارشی (Enumerated Types)
  3. داده‌های آرایه‌ای و رکوردی (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;