Подключите внутренний сигнал к выходному порту в модуле 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 будет внутренним сигналом.