From 5c6b9f03b5624aafe5870222979555e7644d087a Mon Sep 17 00:00:00 2001 From: Brian Taylor Date: Sun, 22 Oct 2023 20:47:59 -0700 Subject: [PATCH] Fix the zero count. --- examples/xspice/d_process/prog1-4.cir | 10 +++++----- examples/xspice/d_process/prog4in1out.c | 20 +++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/examples/xspice/d_process/prog1-4.cir b/examples/xspice/d_process/prog1-4.cir index 1d5f87bea..7f3a8ca91 100644 --- a/examples/xspice/d_process/prog1-4.cir +++ b/examples/xspice/d_process/prog1-4.cir @@ -12,22 +12,22 @@ v2 2 0 DC 0.0 a1 1 clk1 d_osc1 a2 2 clk2 d_osc1 -ap0_4 null clk1 null [q1 q2 q3 q4] proc0 +ap0 null clk1 null [q1 q2 q3 q4] proc0 .model proc0 d_process (process_file="graycode" process_params=["none"]) -ap1_4 [clk2] clk1 null [o1 o2 o3 o4] proc1 +ap1 [clk2] clk1 null [o1 o2 o3 o4] proc1 .model proc1 d_process (process_file="prog1in4out" process_params=["opt1", "qwerty"]) -ap4_1 [o1 o2 o3 o4] clk1 null [zeros] proc2 +ap2 [o1 o2 o3 o4] clk1 null [zeros] proc2 .model proc2 d_process (process_file="prog4in1out" process_params=["abc", "99"]) -ap4_1a [q1 q2 q3 q4] clk1 null [qzeros] proc3 +ap3 [q1 q2 q3 q4] clk1 null [qzeros] proc3 .model proc3 d_process (process_file="prog4in1out") an1 [o1 ~o2 o3] reseto dand1 .model dand1 d_and(inertial_delay=true rise_delay=1ns fall_delay=50ns) -ap1_4a [clk2] clk1 reseto [b1 b2 b3 b4] proc4 +ap4 [clk2] clk1 reseto [b1 b2 b3 b4] proc4 .model proc4 d_process (process_file="prog1in4out") .control diff --git a/examples/xspice/d_process/prog4in1out.c b/examples/xspice/d_process/prog4in1out.c index dc0fc993c..28ebdd6c4 100644 --- a/examples/xspice/d_process/prog4in1out.c +++ b/examples/xspice/d_process/prog4in1out.c @@ -91,21 +91,23 @@ static int compute( ) { uint8_t i0 = 0, zeros = 0; - uint8_t inbyte = datain[0]; + uint8_t inbyte = datain[0] & 0x0F; dataout[0] = 0; - i0 = inbyte ^ 0x01; - if (i0) zeros++; - i0 = inbyte ^ 0x02; - if (i0) zeros++; - i0 = inbyte ^ 0x04; - if (i0) zeros++; - i0 = inbyte ^ 0x08; - if (i0) zeros++; + i0 = inbyte & 0x01; + if (i0 == 0) zeros++; + i0 = inbyte & 0x02; + if (i0 == 0) zeros++; + i0 = inbyte & 0x04; + if (i0 == 0) zeros++; + i0 = inbyte & 0x08; + if (i0 == 0) zeros++; if (zeros == 2 || zeros == 4) { dataout[0] = 0x01; } else { dataout[0] = 0x00; } + fprintf(stderr, "datain %X zeros %d dataout %X time %g\n", + datain[0], zeros, dataout[0], time); return 1; }