Як конвертувати реальна цінність для 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.Real арифметика і тип конверсії увазі реально не обробляються IEEE.NUMERIC_STD пакету, а не IEEE.MATH_REAL.

2.Перетворення в ціле реального вимагає IEEE.MATH_REAL круглі () функцію.E. Г.:
Код:

CONSTANT UREF: INTEGER: = ROUND (1.23 * 2.0 ** 15);
 
Heres моя проблема:

1.'INTEGER' це тільки 32 біт.Я працюю з номерами більше ніж uptil 48 біт.(наприклад, 4.456E13)

2.Моя ідея полягала в тому, щоб використовувати "реальних" номерами для всіх розрахунків, а потім перетворити їх в std_logic_vector 48 біта на виході портів.

Тому її не чисел із плаваючою точкою, що я стурбований.Будь-яка ідея про те, як обійти цю проблему?

Спасибо!Додано через 2 хвилини:На боці відомості, чи є блок ALU в Кью (на) 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-бітних (хоча деякі IP, наприклад, Xilinxs Divider основних має довільну обмеження 32 біт).Я згадав лише ціле число типу продемонструвати використання IEEE.MATH_REAL в синтезі.

be used - with special IP.

Крім того, з плаваючою точкою може
бути використана - з особливим IP.opencores.org має деякі речі плавають.

@ Ltera, зокрема, FP_ADD_SUB, FP_MULT, FP_DIV, FP_SQRT і FP_COMPARE Megafunctions поставляється з Кью (на) rtus.

 
Я вирішив працювати з усіма 'непідписані' тип номера, і я отримую повідомлення про помилку при використанні "/" (поділ) оператор!

Цитата:

Помилка (10327): VHDL помилку в computation2.vhd (90): не можу визначити, визначення оператора ""/"" - знайдено 0 можливих визначень
 
Циркуль НЕ infered від "/" оператора в більшості синтезу інструментів.

 
Отже, яким повинен бути розділювач здійснюватися в VHDL для Кью (на) rtus?

Справа в Кью (на) rtus компілятор був висновок про "/" Оператор як дільник, якщо число що беруть участь було ціле типів, але не для непідписані!

 
Я не думаю, що виведення Кварт циркуль з цілочисельних типом (або я не був обізнаний про функція поки що).Він може оцінити "/" Оператор в постійному виразів або для компіляції розрахунків.Але для узагальнення цілей, вам доведеться використовувати alt_divide Megafunction або будь-який інший розділювач ядро, вам пропозицію.

PS: Я виявив, що в дійсності мається на увазі Кварт дільники від цілочисельного divisison.Тим не менш, ця функція ефективно незареєстрованих в Кварт довідника.Я довідався, якщо дільник параметри можна в conrolled корисним способом.Спасибо за це цікаве подання.

PPS: Ми можемо визначити розмір операндів по INTEGER Діапазон установки,
а також> = 0 subrange трактується як беззнаковое операндів.Але, як працювати з цілими тільки.

 

Welcome to EDABoard.com

Sponsor

Back
Top