Esempio n. 1
0
 private void processChannel(int i, SignalBuffer db)
 {
     if (db == null)
     {
         return;
     }
     if (state[i])
     {
         db.one();
     }
     else
     {
         db.zero();
     }
 }
Esempio n. 2
0
        public override void tick()
        {
            SignalBuffer dbA   = getSignalInputBuffer(ioA);
            SignalBuffer dbB   = getSignalInputBuffer(ioB);
            SignalBuffer dbout = getSignalOutputBuffer(ioOut);

            if (dbout == null)
            {
                return;
            }

            if ((dbA == null) && (dbB == null))
            {
                if ((mode == CompareMode.A_larger_equal_B) || (mode == CompareMode.A_smaller_equal_B))
                {
                    dbout.one();
                }
                else
                {
                    dbout.zero();
                }
                return;
            }

            switch (mode)
            {
            case CompareMode.A_larger_B:
                if (dbA == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (0 > dbB.data[i]) ? 1 : -1;
                    }
                    return;
                }
                if (dbB == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (dbA.data[i] > 0) ? 1 : -1;
                    }
                    return;
                }
                for (int i = 0; i < owner.blockSize; i++)
                {
                    dbout.data[i] = (dbA.data[i] > dbB.data[i]) ? 1 : -1;
                }
                return;

            case CompareMode.A_larger_equal_B:
                if (dbA == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (0 >= dbB.data[i]) ? 1 : -1;
                    }
                    return;
                }
                if (dbB == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (dbA.data[i] >= 0) ? 1 : -1;
                    }
                    return;
                }
                for (int i = 0; i < owner.blockSize; i++)
                {
                    dbout.data[i] = (dbA.data[i] >= dbB.data[i]) ? 1 : -1;
                }
                return;

            case CompareMode.A_smaller_B:
                if (dbA == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (0 < dbB.data[i]) ? 1 : -1;
                    }
                    return;
                }
                if (dbB == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (dbA.data[i] < 0) ? 1 : -1;
                    }
                    return;
                }
                for (int i = 0; i < owner.blockSize; i++)
                {
                    dbout.data[i] = (dbA.data[i] < dbB.data[i]) ? 1 : -1;
                }
                return;

            case CompareMode.A_smaller_equal_B:
                if (dbA == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (0 <= dbB.data[i]) ? 1 : -1;
                    }
                    return;
                }
                if (dbB == null)
                {
                    for (int i = 0; i < owner.blockSize; i++)
                    {
                        dbout.data[i] = (dbA.data[i] <= 0) ? 1 : -1;
                    }
                    return;
                }
                for (int i = 0; i < owner.blockSize; i++)
                {
                    dbout.data[i] = (dbA.data[i] <= dbB.data[i]) ? 1 : -1;
                }
                return;
            }
        }