Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post Если вам надо целый сконвертировать в bit_vector, то делаете в зависимости от знаковости целого bit_vector (to_signed (value, width)) или bit_vector (to_unsigned (value, width)). Соответственно, наоборот: to_integer (signed (value)) или to_integer (unsigned (value)). Так а зачем нужно явно подтип конвертировать в базовый тип? А можно еще использовать при преобразовании к подтипу квалификатор подтипа в виде имени подтипа с апострофом, насколько я помню. Но давно не брал я в руки шашек, уже стало забываться. :) Quote Share this post Link to post Share on other sites More sharing options...
FROL_256 0 September 30, 2010 Posted September 30, 2010 · Report post Ну вот, так получше вроде LIBRARY ieee; use ieee.numeric_bit.all; package body UTILS is function to_uint(bits: BIT_VECTOR) return integer is begin return to_integer(unsigned(bits)); end to_uint; function To_BitVector32(number : integer) return BIT_VECTOR is begin return BIT_VECTOR(to_unsigned(number,32)); end To_BitVector32; end UTILS; Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post Попробуйте на несколько символов меньше: function To_BitVector32(number : integer) return BIT_VECTOR is begin return to_unsigned(number,32); end To_BitVector32; Quote Share this post Link to post Share on other sites More sharing options...
FROL_256 0 September 30, 2010 Posted September 30, 2010 · Report post Попробуйте на несколько символов меньше: function To_BitVector32(number : integer) return BIT_VECTOR is begin return to_unsigned(number,32); end To_BitVector32; Не так не хочет Error (10511): VHDL Qualified Expression error at DE2_115.vhdl(20): TO_UNSIGNED type specified in Qualified Expression must match bit_vector type that is implied for expression by context Несколькими постами des00 советовал не использовать bit_vector- забыл спросить а чем плохо? Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post Несколькими постами des00 советовал не использовать bit_vector- забыл спросить а чем плохо? Это его личные предпочтения. Не использовать никаких типов, кроме std_logic_vector. Наверное, потому, что придется писать прокладки к генерируемым визардами блокам, из-за упоминавшейся мною ранее вериложности разработчиков тулзов. Не так не хочет Error (10511): VHDL Qualified Expression error at DE2_115.vhdl(20): TO_UNSIGNED type specified in Qualified Expression must match bit_vector type that is implied for expression by context Странно. Сейчас не стоит ISE - не могу проверить. Но по тексту сообщения об ошибке возникает впечатление, что он считает имя to_unsigned именем типа, а не функции. Вы не включили случайно numeric_std? Quote Share this post Link to post Share on other sites More sharing options...
tAmega 0 September 30, 2010 Posted September 30, 2010 · Report post Поддержу des00. Есть смысл использовать std_logic тип везде где только можно, потому что синтезируется все таки да в std_logic. И при использовании других типов придется писать те самые "прокладки", чтобы контролировать преобразование типов. Чтобы раз и навсегда забыть про это дело, имеет смысл, работать напрямую с std_logic, кстати это будет и надежнее, потому что проще для синтезатора. Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post Поддержу des00. Есть смысл использовать std_logic тип везде где только можно, потому что синтезируется все таки да в std_logic. И при использовании других типов придется писать те самые "прокладки", чтобы контролировать преобразование типов. Чтобы раз и навсегда забыть про это дело, имеет смысл, работать напрямую с std_logic, кстати это будет и надежнее, потому что проще для синтезатора. Да, и вы - тоже, типичный вериложник по образу мышления. Надежнее не будет, так как вы лишаетесь возможности контролировать свои ошибки при помощи правильно сконструированной системы необходимых типов. Синтезатор ошибается гораздо реже программиста. Quote Share this post Link to post Share on other sites More sharing options...
DSIoffe 5 September 30, 2010 Posted September 30, 2010 · Report post Синтезатор ошибается гораздо реже программиста. Золотые слова. А переходить от типа к типу всё равно придётся, они все для чего-то придуманы, в одном месте лучше один, а в другом другой. Quote Share this post Link to post Share on other sites More sharing options...
FROL_256 0 September 30, 2010 Posted September 30, 2010 · Report post Вы не включили случайно numeric_std? И с ним и без него пробовал. Но у меня Quartus 2, может в этом дело. Ну да ладно, так нормально в принципе) Quote Share this post Link to post Share on other sites More sharing options...
des00 26 September 30, 2010 Posted September 30, 2010 · Report post Это его личные предпочтения. Не использовать никаких типов, кроме std_logic_vector. я этого не говорил, не обобщайте. я говорил только про тип bit_vector. использовать который для синтезируемого кода ИМХО не имеет большого смысла, а в некоторых случаях даже вредно. Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post я этого не говорил, не обобщайте. я говорил только про тип bit_vector. использовать который для синтезируемого кода ИМХО не имеет большого смысла, а в некоторых случаях даже вредно. По сравнению c std_logic_vector преимущество просто огромное, так как он не resolved. По сравнению с std_ulogic_vector преимущество чуть меньшее и заключается в избегании излишних сущностей. Quote Share this post Link to post Share on other sites More sharing options...
des00 26 September 30, 2010 Posted September 30, 2010 · Report post По сравнению c std_logic_vector преимущество просто огромное, так как он не resolved. По сравнению с std_ulogic_vector преимущество чуть меньшее и заключается в избегании излишних сущностей. вы гуру, вам виднее. свое мнение я высказал. Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 30, 2010 Posted September 30, 2010 · Report post вы гуру, вам виднее. свое мнение я высказал. Не возражаю. У вас, как я смог заметить, тоже больше двух тыщ постов скопилось. :laughing: Quote Share this post Link to post Share on other sites More sharing options...