Muscat 0 October 11, 2011 Posted October 11, 2011 · Report post Слушайте, а вот такое дело. Я сейчас делаю так, что сигнал CLK_EN генерится по одному фронту (например, в том же FSM по заднему), а триггеры, в которые он заходит, работают по передним. Я точно знаю, что к моменту прихода переднего фронта в триггер на входе CLK_EN уже будет нужное состояние. Это правильный путь? Или у меня какие то отсталые представления? Если CLK_EN выставляется по переднему фронту и сам триггер срабатывает по переднему, то возникает неконтролируемая гонка сигналов, не? Quote Share this post Link to post Share on other sites More sharing options...
vetal 0 October 11, 2011 Posted October 11, 2011 · Report post Если CLK_EN выставляется по переднему фронту и сам триггер срабатывает по переднему, то возникает неконтролируемая гонка сигналов, не? ПЛИС и САПР, поддерживающие их ориентированы именно на такую организацию передачи управляющих сигналов(не исключая иное). Фиксируя управляющий сигнал по срезу и обрабатывая его по фронту вы фактически в 2 раза сокращаете время на обработку этого сигнала. "Чистая" синхронная схема не требует "ручной" проверки и подгонки - достаточно видеть в отчете, что уложились в заданные ограничения. Создавая асинхронные и псевдосинхронные схемы вы повышаете вероятность того, что что-то не учтете, либо при переносе блока в другой проект он перестанет работать. Quote Share this post Link to post Share on other sites More sharing options...
VladimirB 1 October 11, 2011 Posted October 11, 2011 · Report post ... Это правильный путь? Или у меня какие то отсталые представления? Если CLK_EN выставляется по переднему фронту и сам триггер срабатывает по переднему, то возникает неконтролируемая гонка сигналов, не? первый путь неправильный, во втором случае гонок не будет +500 vetal Quote Share this post Link to post Share on other sites More sharing options...
des00 26 October 12, 2011 Posted October 12, 2011 · Report post Можно здесь несколько поподробней? А конкретно о триггере для переброса данных с одного клока на другой? Когда ставится, чем тактируется, было бы замечательно если бы Вы привели небольшой пример (можно фрагмент на verilog). Спасибо! пользуйтесь поиском. тема, только на моей памяти, обсуждалась раз 20 %) Quote Share this post Link to post Share on other sites More sharing options...
Muscat 0 October 12, 2011 Posted October 12, 2011 · Report post Тогда я не совсем понял. У меня на вход триггера поступает сигнал, формируемый по переднему фроанту, сигнал разрешающий его чтение и сам триггер срабатывает по переднему фронту if (clk'event and clk='1') then INPUT<='1'; CLK_EN<='1; if (clk'event and clk='1') then if (clk_en='1') then OUTPUT<=INPUT; И все сработает правильно, на выходе OUTPUT в тот же момент появится единица? И еще тогда посоветуйте где прочитать про это? В учебника по VHDL и Synthethis Guide's рассматриваются только отдельные модули, а вот про то как правильно тактировать схемы не встречал. Quote Share this post Link to post Share on other sites More sharing options...
troiden 0 October 12, 2011 Posted October 12, 2011 · Report post И все сработает правильно, на выходе OUTPUT в тот же момент появится единица? После первого такта в единицу встанут сигналы INPUT и CLK_EN, и уже после второго такта сработает OUTPUT<=INPUT Quote Share this post Link to post Share on other sites More sharing options...
Muscat 0 October 12, 2011 Posted October 12, 2011 · Report post if (clk'event and clk='1') then INPUT<='1'; CLK_EN<='1; if (clk'event and clk='1') then if (clk_en='1') then OUTPUT<=INPUT; Я правильно понимаю, что в момент 2 управляемый триггер переключится, так как на его входах состояние CLK_EN='1' и INPUT='1' и на выходе появится '1'? Quote Share this post Link to post Share on other sites More sharing options...
vetal 0 October 12, 2011 Posted October 12, 2011 · Report post Я правильно понимаю, что в момент 2 управляемый триггер переключится, так как на его входах состояние CLK_EN='1' и INPUT='1' и на выходе появится '1'? Да, так и будет. Запустите симулятор - он вам все покажет. Quote Share this post Link to post Share on other sites More sharing options...
Muscat 0 October 12, 2011 Posted October 12, 2011 · Report post А посоветуйте чего нибудь толкового по продвинутому дизайну на ПЛИС. где были бы рассмотрены подобные вопросы? Advanced FPGA design уже смотрел А то у меня их много. А что если CLK_EN еще переключает мультиплексор, который может на вход подать 2 разных сигнала. Тогда успеет переключиться? Quote Share this post Link to post Share on other sites More sharing options...
VladimirB 1 October 12, 2011 Posted October 12, 2011 · Report post А посоветуйте чего нибудь толкового по продвинутому дизайну на ПЛИС. где были бы рассмотрены подобные вопросы? Advanced FPGA design уже смотрел А то у меня их много. А что если CLK_EN еще переключает мультиплексор, который может на вход подать 2 разных сигнала. Тогда успеет переключиться? Тут надо по цифровой смехотехнике книги читать - типа "триггеры для чайников" или "создание конечных автоматов своими руками" :) Ежу же понятно, что сигнал на выходе триггера появляется с небольшой задержкой относительно клока, нормированной в даташите (читайте про конечность скорости света, неисчерпаемость электрона и время переключения КР1533ТМ2). И если клок на все триггеры приходит в одно и то же время, то в момент времени "1" сигнал CLK_EN ещё не будет иметь высокий логический уровень. Зато в момент времени "2" CLK_EN будет иметь высокий лог.уровень и не успеет ещё переключится в ноль. Quote Share this post Link to post Share on other sites More sharing options...
Muscat 0 October 12, 2011 Posted October 12, 2011 · Report post Ох, ну специально же написал,что спрашиваю про книги уровня повыше "знакомимся с VHDL" Базовые вещи уже многократно прочитаны. Создание конечных автоматов никаких вопросов не вызывает, ага? Вызывает вопрос взаимодействие двух конечных автоматов. Про время задержки вы мне прямо глаза открыли. Я думал свет распространяется мгновенно и даже от Москвы до Жмеринки пролетает мгновенно. Quote Share this post Link to post Share on other sites More sharing options...
Tiro 0 October 12, 2011 Posted October 12, 2011 · Report post А посоветуйте чего нибудь толкового по продвинутому дизайну на ПЛИС. где были бы рассмотрены подобные вопросы? Advanced FPGA design уже смотрел А то у меня их много. А что если CLK_EN еще переключает мультиплексор, который может на вход подать 2 разных сигнала. Тогда успеет переключиться? Книжку не посоветую, но в любом случае у триггера, тактируемого CLK есть времена предустановки и удержания. То есть комбинаторный сигнал на входе D должен быть стабилен до (предустановка) и после (удержание). Обычно комбинаторные схемы более инерционны, чем триггеры и можно спокойно менять сигнал на их входе, поскольку время удержания будет превышено. А вот время срабатывания комбинаторной схемы и время предустановки триггеров и определят максимальную рабочую частоту Вашего проекта. Если Ваши конечные автоматы тактируются одним или синхронным клоком, то этого достаточно для анализа задержек. Quote Share this post Link to post Share on other sites More sharing options...
VladimirB 1 October 12, 2011 Posted October 12, 2011 · Report post Ох, ну специально же написал,что спрашиваю про книги уровня повыше "знакомимся с VHDL" Базовые вещи уже многократно прочитаны. Создание конечных автоматов никаких вопросов не вызывает, ага? Вызывает вопрос взаимодействие двух конечных автоматов. Про время задержки вы мне прямо глаза открыли. Я думал свет распространяется мгновенно и даже от Москвы до Жмеринки пролетает мгновенно. VHDL тут совершенно не причём. А ваш вопрос про "неконтролируемые гонки сигналов" - это как раз к базовым вещам и относится. Без понимания того как работает схема из двух одновременно тактируемых триггеров с некоторой логикой между ними ничего серьёзнее новогодней гирлянды на FPGA не сделать. А если и сделать, то с бубном. Quote Share this post Link to post Share on other sites More sharing options...
barabek 0 October 12, 2011 Posted October 12, 2011 · Report post Вызывает вопрос взаимодействие двух конечных автоматов. Про время задержки вы мне прямо глаза открыли. Тут все просто. Что есть такие временнные параметры setup и hold Вам уже написали. Они присущи любому триггеру в ПЛИС. Но при дизайне на время забудьте о них и считайте, что любой триггер с приходом клока защелкивает то что было на входе, т.е. устаканившееся состояние в конце предыдущего такта. Если же что-то неуспевает установиться за такт, то об этом Вам скажет таймквест. Но есть исключения - работа с внешним миром, когда таймквест не знает время распространения сигнала вне плис. Эту информацию Вы даете ему с помощью констрейнов. Quote Share this post Link to post Share on other sites More sharing options...
Muscat 0 October 13, 2011 Posted October 13, 2011 · Report post Книжку не посоветую, но в любом случае у триггера, тактируемого CLK есть времена предустановки и удержания. То есть комбинаторный сигнал на входе D должен быть стабилен до (предустановка) и после (удержание) Обычно комбинаторные схемы более инерционны, чем триггеры и можно спокойно менять сигнал на их входе, поскольку время удержания будет превышено barabek,Tiro Спасибо за ответы и прояснение ситуации Про инертность и время установки я понимаю и именно поэтому я делал свои схемы по принципам озвученным выше - сигналы CLK_EN и INP на входе триггера устанавливались по переднему фронту и я предполагал, что к заднему фронту они как раз установятся в постоянное состояние и триггер защелкнет то, что надо. То есть когда я рисовал временные диаграммы на бумажке, я делал их так, чтобы в момент переключения на входах все было постоянно и ничего не переключалось. Вот я как раз полагал, что эта интертность может быть непостоянна и привести к ошибкам, когда один триггер защелкнет состояние на прошлом такте, а другой защелкнет то, что уже успело установиться на предшествующем ему. Но я был не прав и можно считать, что состояние на выходе "защелкнется" быстрее, чем установится новое на входе? А если нет, то Time Analyzer сообщит мне об этом? Quote Share this post Link to post Share on other sites More sharing options...