jenya7 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 (изменено) · Жалоба В коде на if (rising_edge(SSPI_TX_RDY)) then st_count := st_count + 1; end if; ругается Quote couldn't implement registers for assignments on this clock edge хотя в другом месте elsif (rising_edge(SSPI_CLK)) then spi_clk_counter <= spi_clk_counter + '1'; idx := idx + 1; if (idx = 8) then idx := 0; bytes_counter <= bytes_counter + '1'; end if; end if; компилируется без ошибок. Изменено 19 ноября, 2018 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба Без контекста что вокруг непонятно. И что такое SSPI_TX_RDY. Сама конструкция валидна по виду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба 4 minutes ago, alexadmin said: Без контекста что вокруг непонятно. И что такое SSPI_TX_RDY. Сама конструкция валидна по виду. SSPI_TX_RDY и SSPI_CLK это сигналы entity - оба in std_logic. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба Что делается с st_count? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба 14 minutes ago, andrew_b said: Что делается с st_count? case st_count is when 1 => SSPI_TX_DATA <= sspi_data_out(15 downto 8); when 2 => SSPI_TX_DATA <= sspi_data_out(7 downto 0); when others => end case; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба Ok, где это делается? Дайте хоть код всего процесса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба 9 minutes ago, alexadmin said: Ok, где это делается? Дайте хоть код всего процесса. вобщем то почти все я привел выше when ST_WORD_SPI_OUT => if (cs2 = '0') then if (rising_edge(SSPI_TX_RDY)) then st_count := st_count + 1; end if; case st_count is when 1 => SSPI_TX_DATA <= sspi_data_out(15 downto 8); when 2 => SSPI_TX_DATA <= sspi_data_out(7 downto 0); when others => end case; else SitalState <= ST_SITAL_IDLE; end if; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба Если кратко - здесь все не так. Рекомендую почитать что-нибудь про каноническое описание синхронных (триггерных) процессов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 19 ноября, 2018 Опубликовано 19 ноября, 2018 · Жалоба HDL - это язык описания аппаратуры. Другими словами - схемы электрической принципиальной. Код в примере это просто программа а не схема. Схему нарисовать перед описанием на языке можете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться