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

    

Не могу применить rising_edge

В коде на

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;

компилируется без ошибок.

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

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


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

Без контекста что вокруг непонятно. И что такое SSPI_TX_RDY. Сама конструкция валидна по виду.

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


Ссылка на сообщение
Поделиться на другие сайты
4 minutes ago, alexadmin said:

Без контекста что вокруг непонятно. И что такое SSPI_TX_RDY. Сама конструкция валидна по виду.

SSPI_TX_RDY и SSPI_CLK это сигналы entity - оба in std_logic.

 

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


Ссылка на сообщение
Поделиться на другие сайты
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;

 

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


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

Ok, где это делается? Дайте хоть код всего процесса.

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


Ссылка на сообщение
Поделиться на другие сайты
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;

 

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


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

Если кратко - здесь все не так. Рекомендую почитать что-нибудь про каноническое описание синхронных (триггерных) процессов.

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


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

HDL - это язык описания аппаратуры. Другими словами - схемы электрической принципиальной.

Код в примере это просто программа а не схема.

Схему нарисовать перед описанием на языке можете?

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация