Конвейерный сумматор и (отдельно) self-timed схемы из Digital Arithmetic 1st Edition by Milos D. Ercegovac and Tomás Lang
Перед началом семинара по MIPSfpga в МИФИ один из инструкторов стал спрашивать меня на тему race conditions в некоей схеме для специализированных вычислений, которая возникла у них как студенческий проект. Я не уверен, что его правильно понял, но высказал, что в правильно организованном синхронном дизайне таких проблем не возникает и пообщал прислать в качестве примера фотографию страницы из книжки «Цифровая арифметика», на которой разбирается организация конвейерного сумматора, который содержит малое количество комбинаторной логики (такое же как в сумматоре с последовательным переносом), но при этом размещает регистры (D-триггеры) таким образом, что сумматор может запускать новую операцию сложения каждый такт, с частотой тактового сигнала, определяемой задержкой однобитного полного комбинационного сумматора.
Заодно сфотографировал пару страниц про self-times асинхронные схемы (они не имеют отношения к конвейерному сумматору, просто оказались на соседних страницах и заодно являются альтернативным ответом на исходный вопрос):
Digital Arithmetic 1st Edition by Milos D. Ercegovac and Tomás Lang
3 Comments
Юрий, привет!
Вы верно написали, self-timed (самосинхронные) схемы действительно обладают свойством race-free. Но говоря о self-timed схемах не совсем корректно говорить о частоте тактового импульса по двум причинам:
1. В действительности, тактового импульса нет — схема тактирует сама себя. Потому она и self-timed.
2. Период работы ST-схемы зависит от множества факторов: кроме привычного PVT сказываются даже входные наборы данных на входе. Другими словами, схема срабатывает не по worst-case, а по актуальным значениям среды и информационных наборов на входах.
Алексей, вы не прочитали меня внимательно (или я написал спутанно). Я написал о двух разных вещах в одном посте: 1) синхронном конвейерном дизайне 2) self-timed. Я понимаю, что self-timed схема не имеет clock-а и ее время зависит от входных данных.
Юрий, прошу извинить! Неверно Вас понял, да и на скриншотах везде про self-timed говорилось.