سؤال

لطالما أردت أن تجعل بلدي المعالج..قرأت كيف يمكنني جعل بلدي متحكم? .

حاولت عدة مرات أن تتعلم بعض Verilog و VHDL.ولكن بالنسبة لي أنا فقط لا يمكن الحصول على رأسي حول أنماط اللغة.لقد جئت من C/C++/C# الخلفية و قد مست بعض(النجاح) مع القيام functionalish البرمجة روبي.

يمكن لأي شخص أن يقترح كتاب أو الموارد على الانترنت لتعليم HDL اللغة من الصفر(حتى أستطيع أن أتعلمه بلدي الإجرائية طريقة التفكير)

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

أساسا أنا فقط بحاجة لمن ساعدني في رأسي حول HDLs و المحاكاة.

هل كانت مفيدة؟

المحلول

وتذكر، وكان القصد هدلس لنموذج الأجهزة. مع الأجهزة كل شيء يحدث في وقت واحد. من قبل الأجهزة، أعني مجموعة من البوابات المنطقية المتصلة مدخلات ومخرجات البوابات المنطقية الأخرى في بعض الأزياء. هذا هو في الأساس ما هي FPGA أو ASIC هو (في FPGA تلك الاتصالات هي برمجة). تذبذب مداخل والآثار تموج من خلال سلسلة من البوابات المنطقية - التفكير في كل باب المنطق، قليلا المعالج الذي هو تقييم باستمرار انها المدخلات

وهكذا في HDL أول شيء تحتاج إلى النظر هو أن جميع المهام التي تحدث في نفس الوقت. الأشياء الوحيدة مكان يحدث بالمعنى "العادي" (عبارة واحدة بعد أخرى كما هو الحال في لغة البرمجة العادية) هو داخل كتلة العملية (في VHDL، أو منع دائما في فيريلوج). ولكن بعد ذلك يجب أن ندرك أن جميع الكتل عملية (أو دائما كتل في فيريلوج) يتم تنفيذ أيضا في وقت واحد.

وهدلس هي مجرد محاولة لنموذج التوافق من الأجهزة.

وبقدر ما الكتب التي تحاول تعليم هدلس لمطوري البرمجيات ... لا أعتقد أن هناك أي. وتهدف الأكثر عرضة للمهندسين الأجهزة.

وأنت ذكرت أنك قد فعلت بعض البرمجة روبي. إذا كنت تريد أن تلعب مع HDL مكتوب في روبي يمكنك تجربة RHDL: http://rhdl.rubyforge.org/ المفاهيم HDL الأساسية هي هناك، ويتطلع الكثير مثل VHDL، لكنه روبي لذلك يمكنك تجربة أكثر قليلا مع المصارين. يمكنك إرسال النماذج ومن ثم محاكاة لهم. وهناك بعض الأمثلة المدرجة.

نصائح أخرى

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

ويمكنك طباعة الامور مع VHDL باستخدام "تقرير" بيان، ولكن عليك أن تفعل التنسيق بطريقة غير SW جدا:

وreport "The value is not " & integer'image(some_integer_variable);

لأسهل نوعا ما والطباعة، واستخدام textio حزمة .

وطرف آخر - الكثير من التعليمات البرمجية هناك وuse ieee.std_logic_arith.all; في ذلك. هذه المكتبة هي غير القياسية (على الرغم من اللقب IEEE)، واستخدام ieee.numeric_std.all بدلا من ذلك.

وتبدأ بسيطة - إنشاء عداد التي ترتفع من جانب واحد في كل مرة تدق الساعة (استخدام لغة if rising_edge(clk) then). عندما يحصل العداد إلى قيمة معينة، تبديل إشارة.

وإنشاء testbench لمحاكاة ذلك، وهو ما يعني في الأساس مجرد جعل CLK إشارة الذهاب '0'، '1'، '0'، '1'.

وسيلة سهلة لفهم الطريقة هو هذا:

process:
begin
    clk <= '0';
    wait for 5 ns;
    clk <= '1'; 
    wait for 5 ns;
end process;

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

وهذا ما يعادل FPGA ل"مرحبا العالم"!

لتصحيح تقدم فيريلوج printf مثل نظام المهام مثل عرض $ أو $ مراقبة. وهذه هي بالطبع ليست synthesizable، ولكن كل محاكاة يجب فهمها. التصحيح ثم هو من جهة عمله، تماما مثل التصحيح SW، عن طريق طباعة من القيم إشارة وأي شيء آخر إلى وحدة التحكم باستخدام diplay $ سبق ذكرها والاشياء. وعلى الجانب الآخر من يحدق في أشكال موجة إشارة حتى تجد بقعة سوء. لهذه الأشياء التي لا تحتاج حتى إلى FPGA، محاكاة جيدة هو كل ما تحتاج. ولكن وجود FPGA لجعل بعض المصابيح وميض هو دائما لطيفة:)

لمحاكاة يجب أن يكون لديك نظرة على Modelsim. إذا كنت على النوافذ هناك طبعة طالب متاحة مجانا.
http://www.model.com/content/modelsim- بي-طالب-طبعة HDL-محاكاة

وثمة خيار آخر هو XILINX "ISE الويب حزمة. حتى هذا يعمل على لينكس ويشمل تدفق FPGA كاملة. http://www.xilinx.com/tools/webpack.htm
ولكن أوصي Modelsim لمحاكاة.

وبعض المنطلقات لدي في متناول اليد هي:
http://www.asic-world.com/
http://www.doulos.com/knowhow/verilog_designers_guide/

جوابي قد يكون عاما في وقت متأخر ، ولكن هذا هو المستقبل المشاهدين الذين قد يكون نفس الاستعلام.

كما جاء من C++/C# الخلفية.جوابي يتعلق فقط مع Verilog HDL و لا VHDL على الرغم من.أنا حاليا أخذ دورة هذا المصطلح و هنا هي الكتب التي ساعدتني على فهم Verilog أفضل:

يمكنك العثور على الكثير من الكتب هنا كما هو موضح في asic العالم الموقع.

كما skorgon قد أجاب ، يمكنك استخدام Xilinx ISE للمحاكاة.هو الأقرب إلى Visual Studio مع C++/C# كما أن Verilog.ولكن البدائي يشعر (لا IDE), قد ترغب في محاولة iVerilog أو ايكاروس Verilog.هذا هو واحد يستخدم في الحال.هنا كيفية تنفيذ Verilog الملفات باستخدام iVerilog:

اكتب التعليمات البرمجية في محرر نص ، .vl داخل المجلد bin من iVerilog.في موجه الأوامر, اذهب إلى مجلد سلة.ثم اكتب ما يلي:

iverilog -o <name of exe file you want for your .vl file> <your .vl file>
vvp <name of exe file>

على سبيل المثال:

iverilog -o samp sample.vl
vvp samp

ويساعد هذا الأمل!

وأحيانا يحتاج المرء لطباعة اسم المثيل. وهذا مفيد إذا تم استخدام العديد من مثيل من نفس المكون في تصميم: "... في حين أنها بسيطة في فيريلوج (٪ م في وظيفة نظام العرض)، في VHDL مطلوب أكثر قليلا كتابة التعليمات البرمجية. $ عرض ( "DBG اسم المثيل٪ م في٪ d"، $ الوقت). على سبيل المثال كيفية طباعة اسم مثيل في systemc هو أيضا على هذا الموقع.

وأهمية معلومات التصحيح هذه هي عندما تصميم يحتوي على حالات كثيرة من نفس المكون.

لقد ليتم استدعاؤها النص الأول مكتبة IO، وينبغي أن أعلنت متغير خط. يرجى الرجوع إلى طباعة سبيل المثال لمعرفة تفاصيل.

التالي لديك لاختيار بين خيارين: واحد هو: اسم المثيل فقط في سلسلة التصحيح والخيار الآخر يعطي مزيد من المعلومات مثل أسماء الدخول والهندسة المعمارية ... " http://bknpk.ddns.net/my_web/MiscellaneousHW/vhdl_path_name_print.html

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top