Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в функции
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
Jenya7
есть функция
Код
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

В чем проблема? Оператор сравнения не работает с чарами? А как быть?
alexadmin
Цитата(Jenya7 @ Jul 11 2017, 10:49) *
В чем проблема? Оператор сравнения не работает с чарами? А как быть?


Смотрите на аттрибут 'POS. Ну и константу, естественно, надо задавать в целом виде, например 16#40#.
andrew_b
Цитата(Jenya7 @ Jul 11 2017, 10:49) *
В чем проблема? Оператор сравнения не работает с чарами? А как быть?
Оператор сравнения работает с чарами, разумеется. Только чаров у вас тут нет.
Jenya7
ммм...все так грустно да? ну хорошо поставлю вопрос по другому

есть строка
Код
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;


но мне тут сказали что стринг не синтезируемый тип. так что это не будет работать в железе?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.