Как инициализировать примитив ShiftRegister в Chisel

Мы используем ShiftRegister в Chisel 2 для реализации задержки. Но неясно, как заставить его инициализировать значение по нашему выбору, например, принудительно установить его равным нулю (НЕ случайным образом). Как это сделать?


person seanhalle    schedule 08.01.2017    source источник


Ответы (1)


У меня немного с Chisel 2, но я считаю, что этот метод ShiftRegister.apply должен работать.

В Chisel 3 есть открытый PR для добавления этой функциональности. Без этого PR все еще возможно следующее:

val shiftIn = Wire(UInt(32.W))
val shiftReg = ShiftRegister(Mux(reset, RESET_VALUE, shiftIn), n)

Просто подключитесь к shiftIn для ввода в shiftReg.

person Jack Koenig    schedule 18.01.2017
comment
Предлагаемое решение может работать при условии, что сигнал «сброса» гарантированно будет активен в течение как минимум «n» циклов, что не всегда гарантируется. Посмотрим на метод применения регистра сдвига. - person seanhalle; 25.01.2017