реклама на сайте
подробности

 
 
> Ошибка в функции
Jenya7
сообщение Jul 11 2017, 07:49
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



есть функция
Код
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

В чем проблема? Оператор сравнения не работает с чарами? А как быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Jul 11 2017, 12:25
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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

есть строка
Код
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 - Jul 11 2017, 13:18
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016