У меня есть таблица, где каждая строка таблицы содержит состояние (регистры). Есть логика, которая выбирает одну конкретную строку. Только одна строка получает сигнал «выбрано». Затем осуществляется доступ к состоянию из выбранной строки. Либо часть состояния подключается как выход к IO модуля, либо часть IO используется как вход для обновления состояния.
Если бы я реализовал это с помощью схемы, я бы использовал шлюзы. Выбранный сигнал включит один набор шлюзов, которые подключат регистры строки к шине. Затем шина будет подключена к пучку ввода-вывода. Это быстрая, небольшая площадь и низкое энергопотребление.
В Chisel есть простой способ реализовать это. Он кодирует выбранную строку как двоичное число, а затем применяет это число к выбранному входу традиционного мультиплексора. К сожалению, для таблицы с 20–50 строками и состоянием из сотен бит такая реализация может быть довольно медленной и расточительной по площади и энергии.
Вопрос состоит из двух частей: 1) Есть ли способ указать автобусы в Chisel, чтобы у вас были пропускные пункты или традиционные водители с тремя штатами, которые все свешивались с автобуса?
2) Если это не так, есть ли в Chisel быстрый, небольшой по площади и низкоэнергетический способ сделать это?
Спасибо