الاستخدام المتزامن من ارتفاع وهبوط حافة

A

arshad_mir

Guest
مرحبا ،

أريد أن أفعل بعض النشاط على كل من ارتفاع وهبوط حافة إشارة (يقول tick_ip) والقيام ببعض الأنشطة الأخرى عندما لا يكون هناك ارتفاع أو انخفاض حافةإذا كان (tick_ip 'الحدث وtick_ip ='1 ') ثم
next_clockout <= '1' ؛
أيضا
next_clockout <= '0' ؛

إذا كانت الغاية ؛

إذا كان (tick_ip 'الحدث وtick_ip ='0 ') ثم
next_clockout_new <= '1' ؛
أيضا
next_clockout_new <= '0' ؛

إذا كانت الغاية ؛

ولكن المترجم غير قادر على توليف لها.يمكن لأحد مساعدتي

 
هل تريد استخدام "tick_ip" وعلى مدار الساعة أور!
ثم اور ما يحاولون القيام به هو immpossible مع أدوات التوليف الحالية.
عليك أن تحاول القيام ببعض الرقمي غير المتزامن
التصميم الذي لا تدعمه أدوات التوليف الحالي!
هل حصلت على الأمل وجهة نظري

 
في بلادي في وقت سابق الاستعلام ، ما أردت أن أشير إليه هو :

إذا كان (tick_ip'event) ثم
clock_out <= '1' ؛
أيضا
clock_out <= '0' ؛
إذا كانت الغاية ؛

أنا لست قادرة على تجميع عليه.

 
arshad_mir كتب :

في بلادي في وقت سابق الاستعلام ، ما أردت أن أشير إليه هو :إذا كان (tick_ip'event) ثم

clock_out <= '1' ؛

أيضا

clock_out <= '0' ؛

إذا كانت الغاية ؛أنا لست قادرة على تجميع عليه.
 
arshad_mir كتب :

في بلادي في وقت سابق الاستعلام ، ما أردت أن أشير إليه هو :إذا كان (tick_ip'event) ثم

clock_out <= '1' ؛

أيضا

clock_out <= '0' ؛

إذا كانت الغاية ؛أنا لست قادرة على تجميع عليه.
 
هذا ممكن ، لكن لديك لانقسامه ل2 عمليات مختلفة.عملية واحدة سيكون مسؤولا عن العمليات على حواف ارتفاع.والثانية -- التي تقع على الحافة.

 
مرحبا arshad_mir ،

نتذكر أن ما تكتبه في إتش دي إل يصف عناصر منطق أو بالتخبط والوجه.
عند استخدام حجة my_signal'event ، سوف sysnthesiser دائما خريطة my_signal على مدخلات ساعة من هبوط مفاجئ flilp (أو مقلوب على مدار الساعة لحافة السقوط...).
ويبدو أن ما كنت تريد القيام به هو الكشف عن ارتفاع أو على حافة الوقوع في اشارة.
إذا كان لديك إشارة بطيء وأنه لديك إشارة العالمية على مدار الساعة في التصميم الخاص بك (لالسابقين : إشارة إلى 1 كيلو هرتز
، وعلى مدار الساعة في 10 ميغاهرتز...)، يمكنك القيام بذلك من أجل الكشف عن :

اقتباس :عملية (clk ، reset_n)

يبدأ

إذا reset_n = '0' ثم

signal_d <= '0' ؛

clk'event elsif وclk = '1' ثم

signal_d <= إشارة ؛

إذا signal_d / = إشارة ثم -- الكشف عن الحافة

الإخراج <= '1' ؛

أيضا

الإخراج <= '0' ؛

إذا كانت الغاية ؛

إذا كانت الغاية ؛

عملية الغاية ؛

 
وأريد أيضا أن نلاحظ أنه ليست فقط coolrunnerII الذين لديهم المزدوج فرنك فرنسي على مدار الساعة ، وVirtex الثاني ، Spartan3 ، وVirtex - 4 بشكل ثنائي على مدار الساعة فرنك فرنسي ، والذي هو فرنك فرنسي والادماج في المعهد المصرفي.

 
إذا كنت تستخدم في إتش دي إل ، وأعتقد أن هذا لا يمكن القيام به.
أنا باستخدام لوحة ltera @ ولكن ، يا نص الكتاب والمجلس يؤكد ذلك أيضا.

المشكلة هي تحاول استخدام نفس الاشارة مرتين.

على سبيل المثال :
عملية (ساعة)
إذا كان (clock'event وعقارب الساعة = '1') -- ارتفاع الحافة
ثم...
إذا كانت الغاية ؛
عملية الغاية ؛

عملية (ساعة)
إذا كان (clock'event والساعة = '0') -- حافة السقوط
ثم...
إذا كانت الغاية ؛
عملية الغاية ؛

رمز هذا لن ينجح لأنه يمكنك فقط استخدام على مدار الساعة في عملية واحدة.بك حتى compiller سوف تولد بعض الخطأ ، وعادة ما سوف ننظر في واحد فقط وdisreguard عملية أخرى
، وليس عملية توليف الثانية.

تحاول أن تفعل ذلك وبهذه الطريقة سوف تفشل أيضا
على سبيل المثال :
عملية (ساعة)
إذا كان (clock'event وعقارب الساعة = '1') -- ارتفاع الحافة
ثم...
elsif (clock'event والساعة = '0') --
ثم...
أيضا
لا تفعل شيئا ؛
إذا كانت الغاية ؛
عملية الغاية ؛

المشكلة هي أن تتمكن من استخدام clock'event مرة واحدة.مرة أخرى المشكلة هو الحدث الأول هو ارتفاع الحافة ، ولكن المترجم سوف يشكو من الحدث الثاني.

ربما هناك طريقة للتغلب على هذه ، ولكن لم أجد واحدة حتى الآن.آمل أن بعض الأعضاء قد وجدت وسيلة ، لأن هذا من شأنه أن يساعد لي جدا.

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

المدخلات لمساعدة بلدي والى مزيد من المناقشة.
وا

 
ع كتب :

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

....

المشكلة هي تحاول استخدام نفس الاشارة مرتين.

 
الآس خ كتباقتباس :

الآن ، بشأن مشكلتك -- أنا متأكد من ذلك هو أنك تحاول أن يسند الى نفس الاشارة في عمليات مختلفة.
هذا يمكن أن يؤدي إلى مشاكل ، وذلك لأن الإشارة نفسها هي التي أجبرت العديد من السائقين.
 
مرة أخرى ، لديك لاستخدام عمليات مختلفة
، إذا كنت تريد استخدام مرتين على مدار الساعة.

statement on clock.

في عبارة أخرى ، في عملية واحدة مسموح لك استخدام واحد فقط إذا كان
البيان على مدار الساعة.

is not analyzed/synthesized as logic construction by compiler - it is just recognized as prefix that the rest of process represents synchronous part.

وذلك لأن مثل إتش دي إل البناء المتكامل (clk'event وclk = '1')
لم يتم تحليلها / منطق البناء وتوليفها من قبل المترجم -- هو فقط المعترف به البادئة أن بقية العملية تمثل جزءا متزامن.ولأن كل التقلب المفاجىء في إف بي جي إيه / CPLD عادة ما يكون له مدخل واحد فقط على مدار الساعة ، ولذلك لم نتمكن من جعل الإجراءات على كل اطراف مع نفس فرنك فرنسي (قلاب) ، ولكن يمكننا أن نجعل العمل مع فرنك فرنسي واحد على حافة إيجابية ، مع الثانية على السلبية ومن ثم الانضمام الى حد ما نتيجة على مستوى المنطق.ويحدوني الأمل ، أن التصحيحات بك من الأمثلة الواردة أدناه أن هذا واضح.

هنا لديك أمثلة إعادة كتابة إلى اتباع القواعد المبينة :

رمز :عملية (clk)

ستبدأ

اذا كان (clk'EVENT وclk = '1') ، ثم

اذا كان (تحميل = '1') ، ثم

ف <= ع ؛

النهاية إذا ؛

النهاية إذا ؛

إنهاء عملية ؛

عملية (CLK)

ستبدأ

اذا كان (clk'EVENT وclk = '1') ، ثم

اذا كان (count_ena = '1') ، ثم

ع <= س 1 ؛

النهاية إذا ؛

النهاية إذا ؛

إنهاء العملية
 
يمكنك استخدام "NCLK <= لا CLK ؛" واثنين من "عملية (CLK)" و "العملية (NCLK)"

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="ابتسامة" border="0" />
 
أفضل حل لهذه المشكلة هو أن يكتبوا ثلاث عمليات منفصلة -- واحد يعتمد على ارتفاع الحافة ، والأخرى تعتمد على حافة السقوط
، وثالث مستقل واحد من تلك الإشارات

 
وأنا أتفق مع crazyman ، وقد ش استخدام عمليات مختلفة.

 
يا كل شيء ،
هذا وقد عمل... هذه محاولة... واسمحوا لي أن أعرف...
العملية : 1
يبدأ
إذا كان (tick_ip'event) ثم
إشارة <= pre_Signal_state ؛
أيضا
إشارة <= current_signal_state ؛
إذا كانت الغاية ؛
نهاية عملية 1 ؛

العملية : 2
يبدأ
إذا كان (tick_ip'event وtip_ip = '0') ثمنهاية إذايمكنك أيضا محاولة استخدام آلة الدولة...التي يمكن أن تعمل أيضا

 

Welcome to EDABoard.com

Sponsor

Back
Top