jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба Есть два входа - пин и команда с микроконтролера. В обычном режиме вход скомутирован на выход но если пришла команда с микроконтролера - выход отключается от входа и получает значение пришедшее с контролера. Напрашивается мукс для комутации. Но тут есть еще одно условие - сигнал со входа на выход должен прийти за пару наносекунд. Есть мукс который работает без тактирования? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bambr 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба Такое не подойдет? assign out = (control)? in : command ; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 1 hour ago, bambr said: Такое не подойдет? assign out = (control)? in : command ; а как это описать в VHDL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bambr 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба https://startingelectronics.org/software/VHDL-CPLD-course/tut4-multiplexers/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 1 hour ago, bambr said: https://startingelectronics.org/software/VHDL-CPLD-course/tut4-multiplexers/ спасибо. только я не очень понимаю. если это не в процессе X <= A when (SEL = '1') else B; какой будет propagation delay? по клоку или ограниченный логическим элементом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба Приветствую! 1 hour ago, jenya7 said: ... Напрашивается мукс для комутации. Но тут есть еще одно условие - сигнал со входа на выход должен прийти за пару наносекунд. Есть мукс который работает без тактирования? ... В FPGA ваше условие не выполнить - типичное время задержки на входных - выходных пинах ~3-5 ns, плюс задержки на роутинг и комутацию - так что задержки вряд ли будут < 8-10 ns. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 26 minutes ago, jenya7 said: спасибо. только я не очень понимаю. если это не в процессе X <= A when (SEL = '1') else B; какой будет propagation delay? по клоку или ограниченный логическим элементом? Никакой разницы между X <= A when (SEL = '1') else B; и process(all) begin if (sel = '1') then x <= a ; else x <= b ; end if; end process; У нас нет. А вот с задержкой распространения чуть сложнее. Т.к эта задержка сильно зависит от конкретной FPGA. Но 2..3 нс. слишком много. В FPGA большие задержки от физического входа (ножки) до самой матрицы. Как и наоборот, от матрицы до выхода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 1 hour ago, Flip-fl0p said: Никакой разницы между X <= A when (SEL = '1') else B; и process(all) begin if (sel = '1') then x <= a ; else x <= b ; end if; end process; У нас нет. А вот с задержкой распространения чуть сложнее. Т.к эта задержка сильно зависит от конкретной FPGA. Но 2..3 нс. слишком много. В FPGA большие задержки от физического входа (ножки) до самой матрицы. Как и наоборот, от матрицы до выхода. а Вы уверенны что X <= A when (SEL = '1') else B; будет клокироваться? выражение ведь не в процессе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 20 minutes ago, jenya7 said: а Вы уверенны что X <= A when (SEL = '1') else B; будет клокироваться? выражение ведь не в процессе. Что значит термин клокироваться ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 1 hour ago, Flip-fl0p said: Что значит термин клокироваться ? изменяться по клоку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 26 minutes ago, jenya7 said: а Вы уверенны что X <= A when (SEL = '1') else B; будет клокироваться? выражение ведь не в процессе. Там оба варианта асинхронные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба у меня в топ ентити F_LPTG_IN : in std_logic_vector(12 downto 0); F_LPTG_OUT : out std_logic_vector(12 downto 0); в архитектуре signal sel : std_logic := '0'; signal cpu_out : std_logic := '0'; ----------------------------------------------------------------------------- begin F_LPTG_OUT(0) <= F_LPTG_IN(0) when (sel = '1') else cpu_out; компилирую. смотрю в RTL Viewer - пины остались неподключенные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба А sel как формируется? В тексте нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 1 hour ago, _sda said: А sel как формируется? В тексте нет. я его никуда не подключил. может это и есть причина Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 октября, 2018 Опубликовано 8 октября, 2018 · Жалоба 29 minutes ago, jenya7 said: я его никуда не подключил. может это и есть причина Это и есть причина. Sel не формируется. Поэтому выражение не выполняется. Поэтому всегда у нас работает ветка когда sel = 0 т.е на выход присваивается константа. Вот только странно. В первом сообщении нужен обычный мультиплексор. А сейчас Вы хотите, чтобы он тактировался, т.е чтобы где-то ещё стоял триггер. Так как вам надо то сделать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться