Подключите внутренний сигнал к выходному порту в модуле MyHDL

Рассматривая следующий пример (простой 8-битный счетчик), существует ли более простой способ подключения внутреннего s_count сигнал к o_count порт?

def counter(i_clk, i_reset, o_count):

    """ A free-running 8-bit counter with a synchronous reset """

    s_count = Signal(intbv(0)[8:])

    @always(i_clk.posedge)
    def count():
        if i_reset == 1:
            s_count.next = 0
        else:        
            s_count.next = s_count + 1

    @always_comb
    def outputs():
        o_count.next = s_count        

    return count, outputs

Конечно, я мог напрямую увеличить o_count в count функция, но это переводит на inout порт в сгенерированном модуле VHDL, который я не хочу.

1 ответ

Решение

Я подозреваю, что прямое увеличение o_count является приемлемым решением.

Действительно, это переводится как inout, потому что вы не можете прочитать выходные порты в VHDL.

Однако это произойдет только тогда, когда вы преобразуете этот модуль в верхний модуль. Вполне вероятно, что это небольшой подмодуль однако. В этом случае иерархия выравнивается, и o_count будет внутренним сигналом.

Другие вопросы по тегам