From 55ed8bb83965b2acc5decdbc4c4fa777718641e3 Mon Sep 17 00:00:00 2001 From: alexmadison Date: Mon, 4 Apr 2022 15:37:31 +0200 Subject: [PATCH] added buffered dr decoder --- dataflow_neuro/coders.act | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/dataflow_neuro/coders.act b/dataflow_neuro/coders.act index 697e2e6..f09fca6 100644 --- a/dataflow_neuro/coders.act +++ b/dataflow_neuro/coders.act @@ -48,11 +48,11 @@ open std::data; namespace tmpl { namespace dataflow_neuro { - /** - * Dualrail decoder. - * Nc is the number of dualrail input channels. - * Then builds N output AND gates, connecting to the right input wires. - */ +/** + * Dualrail decoder. + * Nc is the number of dualrail input channels. + * Then builds N output AND gates, connecting to the right input wires. + */ export template defproc decoder_dualrail (Mx1of2 in; bool? out[N]; power supply) { // signal buffers @@ -86,6 +86,23 @@ defproc decoder_dualrail (Mx1of2 in; bool? out[N]; power supply) { ) } +/** + * Dualrail decoder with buffered outputs. + * Be careful of out[] indexing. + */ +export template +defproc decoder_dualrailX(Mx1of2 in; bool? out[N*OUT_STRENGTH]; power supply) { + decoder_dualrail decoder(.in = in, .supply = supply); + sigbuf sb[N]; + (i:N: + sb[i].in = decoder.out[i]; + sb[i].supply = supply; + (j:OUT_STRENGTH: + sb[i].out[j] = out[j + i*OUT_STRENGTH]; + ) + ) +} + /** * 2D decoder which uses a configurable delay from the VCtrees to buffer ack.