Решил после контроллеров и микропроцессоров заняться ПЛИС, купил отладочную плату Nexys 2 с ксилинксовским спартаном, начал эксперементировать на VHDL.
Не могли бы вы прояснить один вопрос?
Грубо говоря, сколько действует событие risng_edge(...)? Сейчас поясню, что я имею в виду.
Предположим, у нас есть два блока, соединенных проводником. Оба тактируются от глобального тактового сигнала CLK (будем считать что он разведен правильно, через глоб. буферы, и к обоим блокам поступает без перекоса фазы).
Первый блок в process(CLK), допустим, выставляет некоторый бит информации на свой выходной if rising_edge(CLK).
Второй же, также в process(CLK) и if rising_edge(CLK) берет со входа эту инфу и как-то обрабатывает.
Как гарантировать правильное функционирование этой схемы? Ведь когда начинает нарастать напряжение на CLK, в какой-то момент оно начинает удовлетворять условию risng_edge(), а т.к. клок одинаков для всех блоков, они одновременно и сработают - но валидные данные-то поступят на вход второго блока только после dT1+dT2, где dT1 - время прохождения сигнала через блок 1, а dT2 время распространения от первого до второго блока!
Пусть даже не будем учитывать dT2, считая, что по проводникам сигнал пройдет очень быстро, но dT1 зависит только от структуры первого блока. Может быть такое dT1, что к тому моменту, как сигнал вычислится и выставится на выход, во втором блоке условие rising_edge() уже пройдет? Как правильно проектировать, чтобы избежать таких проблем?
Я смотрел пример, 8битный риск процессор на VHDL - меня очень интересовал блок регистров и АЛУ, а именно операции вида ADDI, допустим - "регистр R <= регистр R + I".
То есть необходимо из регистра подать значение на сумматор, вычислить результат, как-то его защелкнуть на выходе АЛУ, подать его на регистр, защелкнуть там.
Я-то думал что это сделано благодаря сдвинутым по фазе клоковым сигналам, когда по
rising_edge(CLK), допустим, энейблится выход регистра и АЛУ, а по rising_edge(CLK90) регистр отрубается от шины и в него защелкивается новое значение.
Но в примере не было сдвинутых по фазам клоков, поэтому я не очень понял, как они гарантируют, что все устройства будут работать именно с такими задержками.
Буду очень благодарен за помощь.


