예제 #1
0
        public virtual void AddAssigment(Assignment assignment)
        {
            Assigmnets.Add(assignment);
            var assignments   = Regex.Match(Text, PC.Assigments).Value;
            var oneAssignment = Regex.Match(assignments, PC.OneAssimnet).Value;

            var newText = Text.Replace(oneAssignment, oneAssignment + "\n" + assignment + Helper.MaybeComma(oneAssignment));

            Change(newText);
        }
예제 #2
0
 public void ConstValuePort(Port port, bool isOne)
 {
     //var a = Assignment.Parse(this, port.N );
     if (Assigmnets.FirstOrDefault(a => a.Left.Signal.Name == port.Name) != null)
     {
         var istr = Regex.Match(port.Name, IndexPattern).Value;
         int index;
         int.TryParse(istr, out index);
         var initVector  = InitVector.ExtractInitVectorValut(GetInitVector());
         var binaryValut = InitVector.FromHexToBibValue(initVector);
         var newBinary   = new StringBuilder(string.Empty);
         var bit         = isOne ? '1' : '0';
         for (int j = 0; j < binaryValut.Length; j++)
         {
             newBinary.Append(j % ((index + 1) * 4) < (index + 1) * 2 ? bit : binaryValut[j]);
         }
         var hex       = InitVector.FomBinToHexValue(newBinary.ToString());
         var newVector = InitVector.ValueToVector(hex);
         ChangeInitVector(newVector);
     }
 }
예제 #3
0
 public AssignmentSignal GetOutput()
 {
     return(Assigmnets.FirstOrDefault(x => x.Left.Signal.Name == Entity.Ports.FirstOrDefault(c => c.PortType == PortTypes.Out).Name).Right.Signal);
 }
예제 #4
0
 public Port GetFreeInput()
 {
     return(Entity.Ports.FirstOrDefault(x => x.PortType == PortTypes.In && Assigmnets.All(a => a.Left.Signal.Name != x.Name)));
 }