[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено dsmv 23 мая 2003 г. 12:04
В ответ на: спасибо, видимо приведение типов многих путает: to_integer, conv_integer, integer() - разница есть? отправлено yes 22 мая 2003 г. 16:49

Разница в используемых библиотеках.
В библиотеки std_logic_arith есть функции
function CONV_INTEGER(ARG: INTEGER) return INTEGER;
function CONV_INTEGER(ARG: UNSIGNED) return INTEGER;
function CONV_INTEGER(ARG: SIGNED) return INTEGER;
и здесь необходимо явно приводить аргумент из std_logic_vector в
signed или unsigned, что бы указать используем знак или нет.
Это и сделано в строке
data<=To_StdLogicVector(mem(conv_integer(unsigned(adr))))

(Вообще говоря определять тип mem как массив bit_vector, было излишне
можно и как массив std_logic_vector)

Есть библиотека std_logic_signed и std_logic_unsigned
В них определена функция
function CONV_INTEGER(ARG: STD_LOGIC_VECTOR) return INTEGER;
Можно подключить только одну из этих библиотек, в этом случае подключаемая библиотека определяет тип преобразования: со знаком или без.

Функция to_integer() определена в библиотеке numeric_std,
этой библиотеки у меня нет и я её не использую.

Выражение integer( xxx ) заключается в преобразовании численного типа
xxx в целое. Это относится только к базовым типам языка, например можно преобразовать из float в integer. К типу std_logic_vector отношения не имеет.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru