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

 
 
> VHDL - сравнение строк.
Jenya7
сообщение Apr 23 2018, 06:46
Сообщение #1


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

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



Есть сигналы
Код
type str_t is array(integer range<>) of std_logic_vector(7 downto 0);

signal g_command : str_t(0 to COM_SIZE-1);

type commands is array(integer range<>) of str_t(0 to COM_SIZE-1);
constant commands_list : commands(0 to COM_COUNT-1) :=
(
    0 => (0 => x"73", 1 => x"74", 2 => x"6F", 3 => x"70", 4 => x"00", 5 => x"00"), --stop
    1 => (0 => x"66", 1 => x"77", 2 => x"64", 3 => x"00", 4 => x"00", 5 => x"00"), --fwd
    2 => (0 => x"72", 1 => x"65", 2 => x"76", 3 => x"00", 4 => x"00", 5 => x"00"), --rev
    3 => (0 => x"01", 1 => x"02", 2 => x"03", 3 => x"00", 4 => x"00", 5 => x"00")  --123
);

Вижу в g_command - '123'.
Сравниваю
Код
if(g_command = commands_list(3)) then
    received_char <= X"03";
else
   received_char <= X"01";
end if;

Получаю received_char <= X"01";
Нужно сравнивать чар-чар? иначе никак?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Apr 24 2018, 13:18
Сообщение #2


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

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



у меня такое несчастье - не заходит в when X"20"
Код
when ST_PARSE_STR =>  --get command and arguments from the string
          
              if (char_idx < RX_BUF_SIZE) then
                    
                    case rx_uart_buf(char_idx) is
                    
                         when X"0D"  =>  --end of string \r
                               DBG_OUT <= "1000000100";
                               Parse1State <= ST_PARSE_VALIDATE;
                                    
                          when X"20"  =>  --spase - arguments delimiter
                              DBG_OUT <= "1110000111";
                                            
                          when others =>    
                               DBG_OUT <= "1000000111";
                                    
                    
                    char_idx := char_idx + 1;
                
              else
                    Parse1State <= ST_PARSE_IDLE;
             end if;

я посылаю 123 567\r - в ASCII table - пробел x20 но я не попадаю в этот кейс.

ой. мой косяк. извиняюсь.

Сообщение отредактировал Jenya7 - Apr 24 2018, 14:08
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 18:45
Рейтинг@Mail.ru


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