ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
184364
IgorChem (08.03.2010 20:19 - 09.03.2010 01:56, просмотров: 12019)
Verilog - как правильно организовать конвейер Совсем запутался, есть простая задача, но не понимаю как ее реализовать... Пусть есть клок и вместе с ним на input сыпятся данные [15:0] A1, например, с интервалом 50нс Пусть имеется 10 модулей, каждый из которых выполняется за 20-40нс (однозначно быстрее, чем валятся данные) но данные должны пройти через эти модули по конвейеру типа: A2=M1(A1); A3=M2(A2); ... RES=M10(A10); меня устраивает, что результат будет получен с задержкой порядка 300нс, но я совершенно не могу понять как ПРАВИЛЬНО синхронизовать между собой эти модули - если их все поставить на один исходный клок, то я не смогу подавать данные на вход быстрее, чем с 300нс задержкой! Пытался после окончания счета устанавливать битовый регистр в 1, а по нему синхронизовать следующий модуль в конвейере, но компилер ругается, то есть я что-то не так делаю. Подскажите, пожалуйста, как правильно! PS: Иногда мой конвейер раздваивается, то есть A2=M1(A1); A3=M2(A2); AX=M22(A2); ... RES=M10(A10,AX); то есть мне хочется начать вычислять М10 только когда и А10 и АХ модифицировались. Как в этом случае поступать, скажите пожалуйста! Спасибо Игорь