Pull to refresh

Comments 7

Кажется тут не хватает парочки сигналов xD

Вы конечно ловко оградили свою логику от чужой двумя регистрами, но тем самым создали более серьезную проблему - при обьединении блоков в цепочку у вас будет сильно недогруженный конвейер (холостые циклы ожидания результата или "пузыри"). Короче, один регистр явно лишний. По устоявшимся традициям регистр устанавливается на выходе, т.е. регистрируется результат.

Не все так однозначно. Добавляя регистры, мы увеличиваем задержку. Если в конвейере есть зависимости и обратные связи, то это может привести к проблемам.

Например, в конвейере процессора это может привести к пузырям, о которых вы говорите, когда мы не можем выполнить следующую команду пока не готов результат от предыдущей.

Если таких зависимостей нет, например, как это часто бывает к конвейерах ЦОС или обработки видеопотока, то увеличение задержки не вызовет никаких проблем, но дополнительные регистры могут существенно упростить разводку.

Взгляните, например, на устройство DSP блоков у xilinx и intel. Там стоят регистры на входах и выходах, но также предусмотрена возможность их обхода

А почему вы не хотите сделать сумматор комбинаторно?

Тем более AXI-stream сам выдаст вам слагаемые на каналах A и В и будет их держать до подтверждения сигналом ready:

Все зависит от того, что мы хотим получить. Если сумматор будет располагаться внутри более крупного IP, и мы знаем к чему и как он будет подключен, то можно обойтись без регистров. Если же сумматор будет использоваться как отдельный блок, то ситуация иная. Мы заранее не знаем, как и где он будет использоваться. Например, кто-то захочет собрать из трех двухвходовых комбинационных сумматоров один четырехвходовый. Это может привести к большому числу уровней логики и проблемам с времянками. Или входная часть блока, к которому подключен сумматор может тоже быть чисто комбинационной, и написана так, что мы получим combinational loop. Когда многое неизвестно, лучше предусмотреть регистры. Для большей гибкости можно добавить возможность их отключения через параметры

Это вы говорите про то что если мы делаем AXI-stream блок то все выходы должны иметь регистры - это да. Ну тут разного рода FIFO (в том числе глубиной 1) и skid-buffer'ы помогают. :-)

Видимо недопонял вопрос) да, можно взять эту схему поставить регслайсы на входы и выходы, и не придется городить конечные автоматы, как в следующей части. Но, так как, статьи учебные хотелось показать процесс разработки с нуля, а не проверенное готовое решение.

Sign up to leave a comment.

Articles