コード例 #1
0
 public static IEnumerable <StateRegister> EnumerateStates(this CodeConfig config)
 {
     for (var i = 0; i < 1 << config.NoOfStateRegisters; i++)
     {
         yield return(StateRegister.Create(i.GetBools(config.NoOfRegisters).Reverse()));
     }
 }
コード例 #2
0
 public static IEnumerable <Transition> EnumerateTransitions(this CodeConfig config)
 {
     return
         (config.EnumerateStates()
          .SelectMany(state =>
                      new[] { false, true }
                      .Select(input =>
                              CalculateTransition(state, input, config))
                      )
          .ToList());
 }
コード例 #3
0
        private static Transition CalculateTransition(StateRegister state, bool input, CodeConfig config)
        {
            var newState = state.Shift(input);
            var output   = newState.GetOutput(config).ToList();

            return(new Transition(state.State.Values, input, output, newState.State.Values));
        }
コード例 #4
0
        public IEnumerable <bool> GetOutput(CodeConfig config)
        {
            yield return(Mod2Add(config.GeneratorTop));

            yield return(Mod2Add(config.GeneratorBottom));
        }
コード例 #5
0
 public Encoder(CodeConfig config, bool terminateCode)
 {
     this.config        = config;
     this.terminateCode = terminateCode;
 }