Fix the zero count.

This commit is contained in:
Brian Taylor 2023-10-22 20:47:59 -07:00 committed by Holger Vogt
parent 1f5f7ae439
commit 5c6b9f03b5
2 changed files with 16 additions and 14 deletions

View File

@ -12,22 +12,22 @@ v2 2 0 DC 0.0
a1 1 clk1 d_osc1 a1 1 clk1 d_osc1
a2 2 clk2 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"]) .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"]) .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"]) .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") .model proc3 d_process (process_file="prog4in1out")
an1 [o1 ~o2 o3] reseto dand1 an1 [o1 ~o2 o3] reseto dand1
.model dand1 d_and(inertial_delay=true rise_delay=1ns fall_delay=50ns) .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") .model proc4 d_process (process_file="prog1in4out")
.control .control

View File

@ -91,21 +91,23 @@ static int compute(
) )
{ {
uint8_t i0 = 0, zeros = 0; uint8_t i0 = 0, zeros = 0;
uint8_t inbyte = datain[0]; uint8_t inbyte = datain[0] & 0x0F;
dataout[0] = 0; dataout[0] = 0;
i0 = inbyte ^ 0x01; i0 = inbyte & 0x01;
if (i0) zeros++; if (i0 == 0) zeros++;
i0 = inbyte ^ 0x02; i0 = inbyte & 0x02;
if (i0) zeros++; if (i0 == 0) zeros++;
i0 = inbyte ^ 0x04; i0 = inbyte & 0x04;
if (i0) zeros++; if (i0 == 0) zeros++;
i0 = inbyte ^ 0x08; i0 = inbyte & 0x08;
if (i0) zeros++; if (i0 == 0) zeros++;
if (zeros == 2 || zeros == 4) { if (zeros == 2 || zeros == 4) {
dataout[0] = 0x01; dataout[0] = 0x01;
} else { } else {
dataout[0] = 0x00; dataout[0] = 0x00;
} }
fprintf(stderr, "datain %X zeros %d dataout %X time %g\n",
datain[0], zeros, dataout[0], time);
return 1; return 1;
} }