Пример #1
0
        //TODO: move this method to a base class
        public void LoadJEDEC(string fileName)
        {
            var assembly = Assembly.GetCallingAssembly();

            using (var stream = assembly.GetManifestResourceStream(fileName))
            {
                if (stream == null)
                {
                    throw new Exception("Cannot find JEDEC data file, make sure it is set to Embedded Resource!");
                }
                using (var reader = new StreamReader(stream))
                {
                    // find *L
                    while (!reader.EndOfStream)
                    {
                        var line = reader.ReadLine();
                        if (line != null && line.Contains("*L"))
                        {
                            int address = int.Parse(line.Substring(2, 5));
                            //TODO: need to account for a possible 44 fuses?
                            for (int i = 0; i < 32 && i + 8 < line.Length; i++)
                            {
                                if (line.Substring(i + 8, 1) == "0")
                                {
                                    Fuses.Add(address + i);
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        // handle PTD fuses (Product Term Disabled)
        private bool IsRowEnabled(int fuseNumber)
        {
            if (!HasPtdFuses)
            {
                return(true);
            }

            //2128 - 2191 PTD (GAL16v8)
            int ptdFuseNumber = (fuseNumber / FusesPerRow) + RowEnableStartFuse;

            // if the fuse is active, then the row is disabled
            return(!Fuses.Contains(ptdFuseNumber));
        }
Пример #3
0
 private void SetMode()
 {
     if (Fuses.Contains(2192) && Fuses.Contains(2193))
     {
         // complex syn=1, ac0=1
         _mode = GalModeEnum.Complex;
     }
     else if (Fuses.Contains(2192))
     {
         // simple syn=1, ac0=0
         _mode = GalModeEnum.Simple;
     }
     else
     {
         // registered syn=0, ac0=1
         _mode = GalModeEnum.Registered;
     }
 }
Пример #4
0
        private double ActiveLevel(int outputNumber, double outputVoltage)
        {
            int fuseNumber = 0;

            foreach (var o in OlmcUnits)
            {
                if (o.OutputPin == outputNumber)
                {
                    fuseNumber = o.S0FuseNumber;
                    break;
                }
            }

            if (Fuses.Contains(fuseNumber))
            {
                return(outputVoltage.Inverted());
            }
            return(outputVoltage);
        }