andrei_moiseev 2 24 октября, 2018 Опубликовано 24 октября, 2018 · Жалоба Есть гуру, помогите, плиз. Сигнал типа STD_LOGIC. Не могу настроить на прием и передачу, если любое присваивание приходящему сигналу есть, тупо нет приема.. Вот прога - usb_dn <= usb_2_dn;-- usb_2_dn входящий, usb_dn - читает usb_dp <= usb_2_dp;-- usb_2_dp входящий, usb_dp - читает kl : process(clk_120MHz) is begin if rising_edge(clk_120MHz) THEN if (switchIn(2)= '1') then -- usb_2_dp <= 'H'; -- usb_2_dn <= 'L'; elsif(switchIn(3)= '1') then -- usb_2_dp <= 'Z'; -- usb_2_dn <= 'Z'; elsif(switchIn(4)= '1') then -- usb_2_dp <= 'W'; -- usb_2_dn <= 'W'; elsif(switchIn(5)= '1') then -- usb_2_dp <= '-'; -- usb_2_dn <= '-'; elsif(switchIn(6)= '1') then -- usb_2_dp <= 'X'; -- usb_2_dn <= 'X'; elsif(switchIn(7)= '1') then -- usb_2_dp <= 'U'; -- usb_2_dn <= 'U'; else end if; end if; end process kl; Если убираю прочерки(--), при любом значении switchIn(переключатель/перемычка для отладки) шина перестает читаться. В чем подвох? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба 9 часов назад, andrei_moiseev сказал: Советую внимательно ознакомиться с описанием типа STD_LOGIC. Объекты типа STD_LOGIC могут принимать 9 значений: '0', '1', 'Z', '–', 'L', 'H', 'U', 'X', 'W'. Из них для синтеза можно применять только '0', '1', 'Z', '–'. Остальные нужны только для моделирования. В Вашем случае принимать данные возможно только тогда, когда Ваша двунаправленная шина в Z состоянии т.е: elsif(switchIn(3)= '1') then usb_2_dp <= 'Z'; usb_2_dn <= 'Z'; Соответственно одновременно с переводом данных можете начинать читать шину: process(clk) begin if (rising_edge(clk_120MHz)) then if (switchIn(3)= '1') then -- Можно читать когда шина в Z состоянии. usb_dn <= usb_2_dn; -- usb_2_dn входящий, usb_dn - читает usb_dp <= usb_2_dp; end if; end if; end process; Ествественно с учетом всех времянок и таймингов. Т.к переводить шину в Z состояние и одновременно её читать - нельзя, поскольку нужно некоторое время чтобы разрядилась паразтная емкость. В остальных значениях switchIn - вы пишите в шину что-то, а не читаете её. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба 10 часов назад, andrei_moiseev сказал: тупо 10 часов назад, andrei_moiseev сказал: прога 10 часов назад, andrei_moiseev сказал: прочерки Мда. Вопрос, как писать двунаправленный порт, на форуме задавался миллион раз. И миллион раз давался ответ. Пользуйтесь поиском. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться