Table of Contents

ما هو VHDL ولماذا يجب أن يتعلمه Beginners؟

() إذا كان نظام المعلومات المسبقة عن علم هو لغة وصفية متزامنة ومتزامنة وموجهة نحو الأحداث تستخدم في النظم الرقمية النموذجية من المستوى الافتراضي إلى مستوى البوابة، فغير أن لغة البرمجيات التقليدية التي تطبق نظاماً رقمياً متزامناً.

وبالنسبة للمبتدئين، يمكن أن يشعر منحنى التعلم بالضيق لأن النسيج فيدرالي هو عبارة عن لغة من الشفاه مقارنة بلغات البرمجيات الحديثة، غير أن هيكله الصارم يرغمكم على التفكير كوسيط للمعدات - كل إشارة وموانئ وعملية تمثل وصلات مادية حقيقية وبوابات منطقية.

The Basic Syntax of VHDL: A Structured Language

VHDL syntax is heavily inspiration by Ada and Pascal. It uses English-like keywords and requires a clear separation of interface (entity) from implementation (architecture). Every VHDL design file contains at least one entity-architecture.

الكلمات الرئيسية المحجوزة ومحددات الهوية

VHDL defines a set of reserved keywords that cannot be used as user identifiers (e.g., ]]entity, structure, signal, port, start, end, process, function, changing, constant, if, then, else, case, for, while) Identifiers must start with a letter and can contain letters, digits, and underscores.

التعليقات

ويُستدل من التعليقات الواردة في القانون الإنساني الدولي برقمين متتاليين وكل شيء بعد على نفس الخط يتجاهله المجمّع. ولا تحظى التعليقات المتعددة الخط بالدعم الرسمي، ولكن يمكنك محاكاتها بوضع في بداية كل خط، وتكتسي التعليقات أهمية حاسمة في توثيق الغرض من عمليات الإشارات والموانئ.

البيانات وشبه الكولونات

() ويشمل هذا إعلانات الكيان، وهيئات الهندسة، وإحالات الإشارة، وإعلانات العمليات، والمهام المتزامنة، وشبه القولون هو أحد أكثر الأخطاء شيوعاً، وكذلك استخدامات VHDL ]double dashes بالنسبة للتعليقات و[2]

العناصر الأساسية لفيلم: الكيان، والعمارة، والعلامات، والعمليات

To design anything in VHDL, you must understand four fundamental building blocks: entities, ]architectures, signals, and

الكيان: الصندوق الأسود

(أ) ] ] يعلن الواجهة الخارجية لعنصر من عناصر المعدات، ويحدد جميع الموانئ - المدخلات والنواتج - إلى جانب اتجاهها (في الخارج، خارجه) ونوع بياناتها، ولا يصف الكيان أي منطق داخلي؛ بل يخبر العالم الخارجي فقط كيف يربط العنصر.

entity and_gate is
 port (
 a : in std_logic;
 b : in std_logic;
 y : out std_logic
 );
end entity and_gate;

In this example, the entity has three ports: two inputs (, ) and one output (), all of type . The type is a standard nine-value logical package defined in

ويمكن أن تشمل الكيانات أيضاً العامة ] لجعل التصميم قابلاً للمقارنة، فعلى سبيل المثال، يمكن أن تحددي تعريفاً عاماً يتحكم في عرض حافلة، وهذا موضوع أكثر تقدماً ولكنه يستحق التنويه في وقت مبكر.

الهيكل: التنفيذ الداخلي

(أ) يحدد الهيكل السلوك الفعلي للكيان، ويمكن كتابته في عدة أساليب: ]behavioral (العمليات وبيانات التسلسلية)، structural (تجريد:6)

ويبدأ الهيكل بالكلمة الرئيسية ، يليها اسم الهيكل، والكلمة الرئيسية ، واسم الكيان، و] ثم يأتي قسم الإعلانات (للإشارات والثباتات والمكونات) وأخيراً ، يليها البيانات المتزامنة.

architecture behavioral of and_gate is
begin
 y <= a and b;
end architecture behavioral;

وهنا، فإن مهمة الإشارة المتزامنة الوحيدة تقود باستمرار الناتج، لأن VHDL متزامنة بطبيعتها، وهذا الخط يمتد إلى الأبد، ويستكمل كلما تغير أو ، وهذا هو جوهر وصف المعدات: البيانات تنفذ بالتوازي، وليس تسلسليا مثل برنامج برمجيات.

الوايات التي تربط كل شيء

Signals] represent physical wires, buses, or internal nodes in a circuit, they are declared in the structure’s declaration section (or in packages, entities, or blocks).

signal internal_net : std_logic;
…
internal_net <= a and b; -- concurrent assignment
y <= internal_net;

ويمكن أن تكون الإشارات من أي نوع من البيانات - ، ، ، ، إلخ.

العمليات: السلوك المصفوف

A process] is a block of sequential statements that executes in response to changes on signals in its sensitivity list. Inside a process, you can use , , , model assignments,

يمكن كتابة نسخة بسيطة من طراز D-نوع من التقلب مع إعادة التقلب المتناغمة على أنها:

process (clk, rst) is
begin
 if rst = '1' then
 q <= '0';
 elsif rising_edge(clk) then
 q <= d;
 end if;
end process;

وتُخبر قائمة الحساسية المحفز بأن يستيقظ هذه العملية كلما أو ]] تغييرات، وفي إطار العملية، تعني الطبيعة التسلسلية أن البيانات تُقيَّم حسب الأصول - ولكن الإشارات لا تزال تستخدم وتُحدِّث بعد تعليق العملية، وهذا هو السبب الذي يجعل عملية وضع النماذج تتطلب الرعاية تجنباً غير مقصَّد.

هيكل VHDL: التصميم الكامل

فلنجمع كل شيء مع مثال أكثر تفصيلا: مضاعف من ٢ إلى ١ )م م إكس( مع خط منتق، وهذا التصميم يبين كيفية استخدام الكيانات، والهيكلات، والإشارات، والعمليات في ملف واحد، ويختار م. م. م.

-- 8-bit 2-to-1 Multiplexer
library ieee;
use ieee.std_logic_1164.all;

entity mux2to1 is
 port (
 a, b : in std_logic_vector(7 downto 0);
 sel : in std_logic;
 y : out std_logic_vector(7 downto 0)
 );
end entity mux2to1;

architecture behavioral of mux2to1 is
begin
 process (a, b, sel) is
 begin
 if sel = '0' then
 y <= a;
 else
 y <= b;
 end if;
 end process;
end architecture behavioral;

وهذا الرمز يتضمن عدة مفاهيم جديدة:

  • Library and use clauses: and are required at the top of every design file that uses or . The library specifies a design library, and the use clause brings the package into scope.
  • Vector ports]: The inputs and are - an 8-bit bus. The output is the same width.
  • Process with multiple inputs]: The sensitivity list includes , ], and because the output depends on all three.
  • If statement inside process]: The is a sequential statement that can only appear inside a process or subprogram.

وهذا المثال قابل للتوليف (يمكن تحويله إلى معدات حقيقية) لأن المنطق هو مجرد مزيج، وهذه العملية تصف جهازاً متعدد الأطراف يعترف به كل أداة توليفية.

قواعد "فينر" الرئيسية يجب أن يعرف كل من

بالإضافة إلى المكونات الأساسية، لدى VHDL عدة قواعد عملية تقبض على الوافدين الجدد وتُبقي هذه المُبكرة ساعات من التضليل.

1- وضع النماذج القوية

VHDL is strongly typed], meaning you cannot directly assign a signal of one type to another even if they look similar (e.g., to ). ويجب أن تستخدم وظائف التحويل من النوع (, [Fches strict] with etc.75],

2. The Difference Between and (Concurrent vs Sequential)

خارج العملية، يمكنك استخدام ] [إرسال إشارة مشروطة متزامنة ] مع :

y <= a when sel = '0' else b;

وهذا يعادل النظام المتعدد الأطراف القائم على العمليات السابق، ولكنه غير متتابع - فهو بيان متزامن واحد، وكثيرا ما يخلط بين المبتدئين (ملحوظة) [(FLT:81] (متزامنة) (ملحوظة)() وكقاعدة: لا يسمح إلا بالعمليات والمهام والإجراءات الداخلية؛ [يستخدم الإشارات المتزامنة:83]

3 - إحالة الإشارة ضد الإحالة المتغيرة

وفي إطار عملية ما، يمكن أن تعلن ] متوافرات باستخدام كلمة مفتاح ، وتُسند إلى المتغيرات وتستكمل فوراً (في نفس دورة المحاكاة)، وهذا يتناقض مع الإشارات التي تستخدم ويُحدَّث بعد عملية وقف إطلاق الإشارات.

process (clk) is
 variable temp : std_logic;
begin
 if rising_edge(clk) then
 temp := a and b; -- variable updates immediately
 y <= temp; -- signal updates after process suspension
 end if;
end process;

4 - أبكمية كشف كلوك إدج

To model a register (flip-flop), you must detect a rising or falling edge of a hour. The standard way is to use or from the , which correctly handles X and Z values. Never] use

5- قوائم الانتظار والبيانات الحساسية

ويمكن أن تكون العملية إما قائمة ]الإطارات[ ]الإطارات: صفر[ ][ ]الإطار: ١[[[ أو تتضمن بيانات ][ ]الإطار: ٩٢[، ولكن ليس كلاهما، وبالنسبة للتوليف، فإن قوائم الحساسية هي القاعدة، ويجب أن تتضمن القائمة كل إشارة تُقرأ داخل العملية )ما لم تكن عملية التوليف بعد، وفي هذه الحالة لا يلزم سوى تحديد موعد زمني محدد للتعديل/الساعة(.

6 - خريطة الموانئ والأدلة المتعلقة بالمكونات

وعندما تقومون ببناء تصميمات هرمية، تقومون بتعليل العناصر الأقل مستوى باستخدام ، وتربط هذه النسيجات الإشارات الداخلية بموانئ الكيان، على سبيل المثال، القيام فورا بفحص نظام " موكس " السابق:

u_mux : entity work.mux2to1
 port map (
 a => data_a,
 b => data_b,
 sel => select_line,
 y => mux_out
 );

ويسمى " مشغل جمعيات الخرائط " ] " الجانب الأيسر هو اسم ميناء الكيان الذي يجري تحريكه، والجانب الأيمن هو الإشارة المحلية، ويمكن أيضا استخدام رسم الخرائط الموقعية، ولكن رسم الخرائط المسمّى هو أكثر أمانا وأكثر قراءة.

التقنيات الوسيطة للمبتدئين في استكشاف

بمجرد أن ترتاح مع الأساسيات يمكنك البدء في استكشاف تركيبات إضافية في دي إل مما يجعل التصميمات أكثر قوة وقابلية لإعادة استخدامها

استخدام المواد الجينية للتصميمات المميزة

Generics] allow you to pass constants into an entity, making the design scalable without rewriting code. For example, a general N-bit MUX:

entity generic_mux is
 generic (
 WIDTH : positive := 8
 );
 port (
 a, b : in std_logic_vector(WIDTH-1 downto 0);
 sel : in std_logic;
 y : out std_logic_vector(WIDTH-1 downto 0)
 );
end entity;

عندما تُسرع، يمكنك تجاوز عبر الخريطة العامة:

generic map (WIDTH => 16)

فهم البيانات التلقائية والبيانات الفوقية

وتحتوي VHDL على فئتين رئيسيتين من البيانات:

  • Concurrent statements]: Execute at the same time, in parallel, they include simple signal assignments (]), conditional signal assignments () component immediateiations, and generate statements.
  • Sequential statements]: Execute one after another, within a process, function, or procedure. They include , , , , and changing assignment.

وكثيرا ما يعتقد المبدعون خطأ أن ترتيب البيانات المتزامنة يهم - لا يهم، ويحدد المحفز ترتيب التنفيذ على أساس المعالين من الإشارات، وليس على النظام النصي.

أجهزة الدولة النمذجة

أما الميكانيكيات الحافظة فهي تطبيق كلاسيكي لعمليات VHDL، حيث تستخدم آلة مور بسيطة عمليتين: إحداهما للمنطق التالي (الإقليمي) والأخرى لسجل الدولة (التسلسل) وهذا الفصل يحسن من إمكانية القراءة:

architecture rtl of fsm is
 type state_type is (idle, run, done);
 signal state, next_state : state_type;
begin
 -- Sequential register
 process (clk, rst) is
 begin
 if rst = '1' then
 state <= idle;
 elsif rising_edge(clk) then
 state <= next_state;
 end if;
 end process;

 -- Next-state logic
 process (state, input) is
 begin
 next_state <= state; -- default to prevent latches
 case state is
 when idle =>
 if input = '1' then
 next_state <= run;
 end if;
 when run =>
 if input = '0' then
 next_state <= done;
 end if;
 when done =>
 next_state <= idle;
 end case;
 end process;
end architecture;

وهذا النمط شائع للغاية في التصميمات الحقيقية، إذ يلاحظ أن الإحالات غير المباشرة ] - وهذا يتفادى الخيوط الخفية بضمان حصول كل إشارة على قيمة في جميع فروع بيان القضية.

الشلالات الرئيسية وكيف تتجنبها

حتى بعد تعلم الـ(سينتاكس) يسافر المبتدئون في كثير من الأحيان حول هذه القضايا، إدراكاً منهم سيسلّم منحنى التعلم

  • Forgot to include the IEE library : Without , you cannot use . The compilationr will throw an unrecognized type error.
  • Using when or separate signals would be clean]: Internal feedback (reading an output port) often leads to , but modern VHDL allows ] port mode, which makes intentions clearer.
  • Not initializing signals orتغييرات: In simulation, default initial values are (uninitialized) for . Use explicit default assignments (e.g., ). For synthesis, reset reason is required.
  • Mixing concurrent and sequential signal assignments to the same signal]: This creates multiple drivers. VHDL does not allow multiple signal drivers unless they are resolved (like ), but even then, conflicts are dangerous. Use one driver per signal.
  • Writing non-synthesizable code]: Many constructs (like , file reading, with severity failure) are only for simulation. Before targeting an FPGA, ensure your code follows synthesis guidelines.

الأدوات والموارد الموصى بها لممارسة العنف ضد المرأة

لتدعيم فهمك، تحتاج إلى تدريب عملي، الأدوات والموارد التالية سهلة للمبتدئين:

ابدأ بدوائر صغيرة مختلطة مثل البوابات، والإضافات، والمضاعفات، ثم انتقل إلى دوائر متتابعة: التقلبات، الواجهات، سجلات النوبات، بسط كل خطوة وراقب الموجات، وحاول، عندما تشعر بالراحة، تنفيذ جهاز إرسال بسيط أو مشغل ثنائي على لوحة فعلية من طراز FPGA (مثل حوض نهر دى10-Lite أو الأحاديث 3).

الاستنتاج: اتخاذ الخطوات التالية في دورتك في العمل

إن فهم أساسيات التلازم والهيكل في القانون الإنساني الدولي - أي الكيانات، والهيكل، والإشارة، والعمليات، وقواعد الطباعة الصارمة - هو أول معلم على طريق التحول إلى تصميم للمعدات ذات القدرة على العمل، وقد غطيت هذه المادة لبنات البناء الأساسية بأمثلة ملموسة، وأبرزت الثغرات المشتركة حتى تتمكن من تجنبها من البداية.

تذكر أن VHDL هو تخصص يكافئ الصبر والممارسة المنهجية، وكتابة الشفرة، وتحفيزها، وتوليفها، وإخراجها من المشاهدين، وفهم التأخيرات في التلويث وتحديث الإشارات، وعلى مر الزمن، ستصبح النسيج الثاني، وستبدأ التفكير في شكل معدات موازية بدلا من برامجيات مائلة.

إبقوا فضوليين، و إستمروا في التجريب، ولا تترددوا في التشاور مع المجتمع المتنامي والموارد الإلكترونية، مع بذل جهود متسقة، سيُتقنون أساسيات الارتقاء بالشبكة والهيكل سيكونون المنافذ في مواضيع متقدمة مثل الأنابيب، والوصلات البينية السريعة، وتصميم النظام على الأقمشة.