# في إتش دي إل

في إتش دي أل أو لغة توصيف العتاد للدارات المتكاملة ذات السرعات المرتفعة جداً (بالإنجليزية: Very High Speed Integreted Circuit Hardware Description Language اختصاراً VHDL)‏ هي لغة برمجة قياسية صممت من قبل وزارة دفاع الولايات المتحدة حيث تستعمل في وصف، وتصميم، ومحاكاة دارات الدوائر الإلكترونية عالية السرعة. أصبحت منذ عام 1987 إحدى مقايس جمعية مهندسي الكهرباء والإلكترونيات وتمت مراجعتها في عام 1997.
تتيح هذه اللغة توصيف التوازي والترابط بالإضافة للتعبير المفصل والمباشر للزمن وتسمح أيضا بتوصيف الدارات التماثلية لكنها غالبا ما تستخدم في تصميم دارات مصفوفة البوابات المنطقية القابلة للبرمجة.
VHDL مقتبسة من لغة Ada في المفهوم العام كالرموز والمصفوفات أحادية البعد وتركيب العبارات وبناءها وهي غير حساسة لحالة الأحرف وهناك الكثير من الميزات غير موجودة في لغة Ada كمجموعة من التعليمات البوليانية التي تتضمن NAND,NOR مثلا وتمثيل العمليات الشائعة في البنية التعاودية مباشرة. وتسمح VHDL بإدخال المصفوفات في اتجاهين تصاعدي وتنازلي لأن كلا الا صطلاحين يستخدم في الـ HardWare ،والنسخة المعدلة الأولى من الـ VHDL تتضمن مجال واسع من أنواع البيانات كالنوع العددي(الصحيح والحقيقي)والمنطقي(البولياني والبتي)والنوع الحرفي والوقت ومصفوفة من النوع البتي التي تسمى الشعاع البتي والمصفوفة من نوع المحارف التي تسمى الشعاع السلسلة.
لغة VHDL هي لغة متعددة وعامة تماماً وعلى الرغم من أنها تتطلب برنامج محاكاة لتشغيل كود البرنامج فإنه يمكنها أن تقرأ وتكتب ملفات على كمبيوتر مضيف، إن VHDL تسمح بتوصيف النظام المتزامن (الأجزاء المقدمة بواسطة سلوك عملها مع بعضها البعض بنفس الوقت)وهي غير محببة كثيراً من لغات أخرى كلغة الـ Basic، pascal، c أو لغات التجميع التي تسمع على مستوى شيفرة الآلة بشكل متعاقب تعليمة واحدة كل مرة لكل بنيان. وعندما يترجم نموذج VHDL إلى بوابات وأسلاك التي تكون منظمة على جهاز منطقي قابل للبرمجة مثل مصفوفة البوابات المنطقية القابلة للبرمجة أو CPLD والعتاد الفعلي يحدد من شيفرة VHDL المنفذة كما في بعض أشكال شريحة المعالج.

## البداية

في لغة VHDL كما في أي لغة برمجة عتادية أو برمجية كي تكون خبيراً فإن ذلك يتطلب دراسة وتمرين، وإذا كان المستخدم يرغب بتعلم تشفيرRTL كتصميم دارات عتادية عن طريق VHDL فإن حزم التصميم والتركيب الموجودة كافية للتعلم.إن معرض البوابات التخطيطية يظهر للمستخدم تصاميم مركبة كالمخططات القابلة للانقياد، والكثير من حزم التصميم FPGA تقدم طرق إدخال تصاميم بديلة مثل النسخ المؤقت لمخطط الحالة والرسوم التخطيطية.وهذه الحزم تزودنا بقالب بدء مفيد لتشفير الأنواع الأساسية من التعليمات التكرارية والدروس التي يتضمنها مفيدة ومساعدة. تقريباً جميع نسخ المحاكاة وتصميم FPGA تدعم كلا Verilog وVHDL تسمح للمستخدم بتعلم كلا اللغتين. بالإضافة إلى أن معظم التصاميم المستوردة نماذج من المكتبات وبعض التصاميم التي تتضمن عدة Architecture.

## البنية الأساسية

* entity (كيان)، يحدد واجهة الترابط (المداخل والمخارج) فقط من دون تحديد الوظيفة. وتتضمن
** تحديد اسم معين للكيان المراد صنعه
** تحديد أسماء المنافذ ports names
** تحديد احجام المنافذ من حيث عدد البتات في كل منفذ
** تحديد اتجاه المنفذ (كونه مدخل input أو مخرج output)
** تحديد نوع المنفذ (يحمل قيمة صفر وواحد فقط أو يحمل قيم أخرى مثل high impedance)
* architecture (البنيان)، يحدد وظيفة الكيان ويتالف من قسمين
** تصريحي (declarative) يظهر اولا في جملة المعمارية وقبل جملة begin يتم فيها التعريف عن المتغيرات الداخلية
** إيعازي (command)يتم فيها شرح كيفية ترابط المنافذ الداخلة لتكوين المنافذ الخارجة

## طرق توصيف البنيان

* توصيف بنيوي structure
** التوصيف على مستويات عليا
** يستخدم بشكل أساسي لدى المحاكاة
* توصيف سلوكي behavior
** مناسب لعمليات التركيب synthesis
** المصمم يتحكم ببنية تصميمه.

## أمثلة
### بوابة AND

شرح بسيط للبوابات المنطقية تقنية رقمية
تبدو كالتالي في الـ VHDL:
بينما الأمثلة في الأسفل تبدو مملة لمبتدئي VHDL فأجزاء كثيرة يمكن أن تبدو لنا اختيارية أو يمكن أن تكتب مرة واحدة فقط، بالإضافة إلى استخدام عناصر std_logic الذي يمكن استبداله بالنوع Bit ونتجنب استيراد المكتبة في البداية، لكن استخدام 9 valued logic(U,X,0,1,Z,W,L) بدلاً من (0,1) يقدم محاكاة قوية جداً وأدوات تصحيح أخطاء غير موجودة في لغات HDL الأخرى. في الأمثلة التالية سنرى كيف أن كود VHDL يكتب بشكل مدمج لكن المصممين عادة يتجنبون النماذج المدمجة ويستخدمون أسلوب تشفير ممل أكثر من أجل أن يكون قابل للقراءة والفائدة الأخرى لاستخدام هذا الأسلوب في التشفير هي برمجة الأدوات القابلة للبرمجة مثلCPLD.

### الناخب

الصورة في الأعلى تبين بنية مضمم 4×1 وبالمقبال نشاهد الشيفرة المصدرية التي يصف هذه البنية ويستخدم طريقة التوصيف البنيوي حيث نلحظ في القسم التصريحي تعداد الأجزاء التي يتكون منها المضمم (Multiplexer) وفي القسم الإيعازي كيفية ارتباط تلك الأجزاء ببعضها.
أما الشيفرة المصدرية التالية فهي تصف البنية السابقة نفسها عن طريق التوصيف السلوكي.

### المغلاق

والمغلاق SR يستخدم إشارات التوضع والتصفير :
والقالب المنطقي 2 يملك ضمنياً (else Q <= Q;) التي نستطيع اضافتها بصراحة إذا أردنا.

### قلاب المعطيات D-type flip-flops

وهو أساس من اجل كل المنطق المتواقت
وبعض القلابات أيضاً تملك إشارات تمكين... وإشارات توضع وتصفير غير متزامنة.
وخطأ المبتدئين الشائع أننا نملك دخل وضع وإعادة الوضع ولكن لا نستخدمها.
والمثالين التاليين غير متساويين... الأول عبارة عن القلاب D.. والثاني عبارة عن القلاب D مع تغذية عكسية بالناخب.

### العداد

المثال التالي عبارة عن عداد مع إعادة وضع غير متزامن... يوضح كيفية كتابة الرنامج في الــ vhdl (كما ذكرنا سابقاً).

### سلسلة فيبوناسي

المثال التالي أكثر تعقيداً:

## مراجع

* ↑ Department of Defense (1992). Military Standard, Standard general requirements for electronic equipment. مؤرشف من الأصل في 2019-12-11. اطلع عليه بتاريخ 2017-11-15.
* ↑ 1076-2002 – IEEE Standard VHDL Language Reference Manual. 2002. DOI:10.1109/IEEESTD.2002.93614. ISBN:0-7381-3247-0.
* ↑ 1076-1987 – IEEE Standard VHDL Language Reference Manual. 1988. DOI:10.1109/IEEESTD.1988.122645. ISBN:0-7381-4324-3.

## وصلات خارجية

* الموقع الرسمي
* VHDL Analysis and Standardization Group (VASG)
* بوابة إلكترونيات
* بوابة برمجة الحاسوب
* بوابة تقانة المعلومات
* بوابة علم الحاسوب