كيفية تحويل 'القيم' حقيقية لstd_logic_vector؟

G

GeekWizard

Guest
هل هناك طريقة لتحويل القيم الحقيقية لتنسيق std_logic_vector؟

وconv_std_logic_vector () على ما يبدو فقط يأخذ في القيم صحيحا ويعطي خطأ للآخرين!

شكرا جزيلا.

 
بادئ ذي بدء ، ما هو نوع من العلاج لا تريد لأرقام غير صحيح؟

العدد الحقيقي 5.25 ينبغي أن تصبح ما بت نمط؟
00000101 لمدة 5؟
00010101 لمدة 21 أرباع (أعرب مع LSB يجري حدة ربع واحد)؟

في أي حال يجب عليك استخدام ieee.numeric_std.all ، واستخدام to_unsigned.يمكنك يلقي الحقيقي لعدد صحيح فقط إذا كنت تريد أن تأخذ جزءا صحيحا

my_sig <= to_unsigned (عدد صحيح (5.25) ، my_sig'length) ؛

 
1.الحساب الحقيقي وتحويل نوع يعني الحقيقية لم تتم معالجة حزمة من IEEE.NUMERIC_STD بدلا من IEEE.MATH_REAL.

2.تحويل حقيقي لصحيحا يتطلب الجولة IEEE.MATH_REAL () وظيفة.E. g. :
رمز :

UREF ثابت : صحيح : = الجولة (1.23 * 2.0 ** 15) ؛
 
هيريس مشكلتي :

1.'صحيح' ليست سوى 32 بت.أنا أعمل مع أعداد أكبر من 48 بت uptil.(على سبيل المثال 4.456E13)

2.فكرتي هي استخدام 'الأرقام الحقيقية لجميع الحسابات ومن ثم تحويلها إلى std_logic_vector من 48 بت إلى الموانئ الانتاج.

ولذا ليس من أرقام النقطة العائمة التي انا قلق.أي فكرة حول كيفية الحصول على هذه المشكلة؟

شكرا!وأضاف بعد دقائق 2 :على الجانب علما ، هل هناك وحدة اتحاد المحامين العرب في تشو (على) مترجم rtus؟لقد بحثت من خلال المتاحة 'رموز' في مكتبة
، ولا يمكن لأي عنصر من هذا النوع.

 
be used for synthesis, isn't limited to 32 bit (although some IP, eg Xilinxs divider core has an arbitrary 32 bit limitation).

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

be used - with special IP.

ويمكن
أيضا أن تستخدم نقطة عائمة -- مع الملكية الفكرية الخاصة.opencores.org لديه بعض الاشياء تطفو.

فلاشيات على وجه الخصوص قد FP_ADD_SUB ، FP_MULT ، FP_DIV ، FP_SQRT وFP_COMPARE Megafunctions شحنها مع تشو (على) rtus.

 
أنا اختار للعمل مع جميع 'الأرقام غير موقعة' اكتب وانا حصول خطأ في استخدام "/" (تقسيم) المشغل!

اقتباس :

خطأ (10327) : الخطأ في إتش دي إل computation2.vhd (90) : لا يمكن تحديد تعريف المشغل ""/""-- وجدت التعاريف الممكنة 0
 
فواصل لا infered من "/" المشغل في معظم أدوات التوليف.

 
فكيف ينبغي أن تنفذ فواصل يكون في إتش دي إل لتشو (على) rtus؟

الشيء هو تشو (على) rtus مترجم كان استنتاج "/" المشغل باعتباره فاصل عندما كانت تشارك أعداد أنواع عدد صحيح ولكن ليس لغير موقعة!

 
لا أعتقد أن يستدل Quartus فواصل مع نوع صحيح (أو لم أكن على علم من هذه الميزة حتى الآن).لا يمكن تقييم "/" المشغل في التعبيرات ثابتة أو لتجميع حسابات فى الوقت المناسب.ولكن لأغراض التجميع ، لديك لاستخدام alt_divide Megafunction أو أي دولة أخرى الأساسية المفرق ، التي قمت بإرسالها.

ملاحظة : لقد وجدت ، أن Quartus الواقع يستنتج من فواصل divisison صحيحا.ومع ذلك ، فإن الميزة لا يحملون وثائق على نحو فعال في Quartus الكتيب.لقد تعلم ، إذا المعلمات المفرق يمكن conrolled بطريقة مفيدة.أشكركم على هذه الرؤية للاهتمام.

وذكر المكتب الصحفى : يمكننا تحديد حجم المعامل عن طريق ضبط صحيحا المدى ، وأيضا> = 0 مدى فرعي هو يعامل المعامل غير الموقعة.ولكن يبدو أن العمل مع عدد صحيح نوع فقط.

 

Welcome to EDABoard.com

Sponsor

Back
Top