Перейти к содержанию
    

Ошибка в функции

есть функция

function ToLower(str : string) return string is
variable ret : string(str'range) := str;
begin
    for i in ret'range loop
        if(ret(i) > X"40" and ret(i) < X"5B") then
            ret(i) := ret(i) + 32;
         end if;
    end loop;
    return ret;
end function ToLower;

получаю ошибку

Error (10327): VHDL error at parser.vhd(54): can't determine definition of operator "">"" -- found 0 possible definitions

Error (10327): VHDL error at parser.vhd(54): can't determine definition of operator ""<"" -- found 0 possible definitions

 

В чем проблема? Оператор сравнения не работает с чарами? А как быть?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем проблема? Оператор сравнения не работает с чарами? А как быть?

 

Смотрите на аттрибут 'POS. Ну и константу, естественно, надо задавать в целом виде, например 16#40#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В чем проблема? Оператор сравнения не работает с чарами? А как быть?
Оператор сравнения работает с чарами, разумеется. Только чаров у вас тут нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ммм...все так грустно да? ну хорошо поставлю вопрос по другому

 

есть строка

signal rx_uart_buf : string (0 to 127);

я хочу проверить каждый чар

when ST_PARSE_COM =>

if (idx < RX_BUF_SIZE) then
    case character'pos(rx_uart_buf(idx)) is
        when 0  => ParseState <= ST_PARSE_IDLE;
        when 32 => ParseState <= ST_PARSE_ARG1;
    end case;
    idx := idx + 1;
end if;

when 0 - это будет '\0' а when 32 - space character? VHDL компайлер это как воспримет?

 

character'pos - это позиция в ASCII Table?

 

впрочем так тоже компилируется

case rx_uart_buf(glob_idx) is
     when NUL  => ParseState <= ST_PARSE_IDLE;
     when ' ' => ParseState <= ST_PARSE_ARG1;

 

но мне тут сказали что стринг не синтезируемый тип. так что это не будет работать в железе?

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...