public override void StreamVhdlRealization(KeyValuePair <string, TimeInterval> param, System.IO.StreamWriter sw) { int numbRepeats = (int)(param.Value.GetTimeUnitInFS() / this.timeStep.GetTimeUnitInFS()); //число повторений sw.Write("--random generator\n"); sw.Write("process is \n begin\n"); sw.Write(param.Key); sw.Write(" <= "); sw.Write(DataConvertorUtils.ToBitArrayString((int)this.NextValue(), SizeVector)); sw.Write(";\n"); StringBuilder temp = new StringBuilder(); for (int i = 0; i < numbRepeats;) { temp = new StringBuilder(); for (int j = i % 1000; (j < 1000 - 1) && (j < numbRepeats); ++j, ++i) { temp.Append("wait for "); temp.Append(timeStep.TimeNumber); temp.Append(" "); temp.Append(timeStep.Unit); temp.Append(";\n"); temp.Append(param.Key); temp.Append(" <= "); temp.Append(DataConvertorUtils.ToBitArrayString((int)this.NextValue(), SizeVector)); temp.Append(";\n"); } sw.Write(temp); ++i; } sw.Write("wait;\n"); sw.Write("end process;\n"); }
public override IEnumerable <bool[]> GetBitArrayEnumerator() { while (true) { yield return(DataConvertorUtils.ToBitArray((int)NextValue(), SizeInBits)); } }
SortedList <ulong, bool[]> IGeneratorDataFill <bool[]> .InsertValues(ulong StartTime, ulong EndTime) { SortedList <UInt64, bool[]> data = new SortedList <ulong, bool[]>(); data.Add(StartTime, DataConvertorUtils.ToBitArray(IntegerValue, 64)); return(data); }
public override string GetStringStartValue() { StringBuilder res = new StringBuilder(); res.Append("\""); for (int i = CurrentValue.Length - 1; i >= 0; i--) { res.Append(DataConvertorUtils.BoolToInt(CurrentValue[i])); } res.Append("\""); return(res.ToString()); }
/// <summary> /// Создание объекта STD_LOGIC_VECTOR_VALUE из числа /// </summary> /// <param name="value"></param> /// <returns></returns> public static STD_LOGIC_VECTOR_VALUE CreateSTD_LOGIC_VECTOR_VALUE(Int64 value, int size) { List <AbstractValue> elements = new List <AbstractValue>(); bool[] booleanData = DataConvertorUtils.ToBitArray(value, size); foreach (bool b in booleanData) { elements.Add(new STD_LOGIC_VALUE(b ? VHDL.builtin.StdLogic1164.STD_LOGIC_1 : VHDL.builtin.StdLogic1164.STD_LOGIC_0)); } return(new STD_LOGIC_VECTOR_VALUE(elements)); }
/// <summary> /// Создание объекта BIT_VECTOR_VALUE из числа /// </summary> /// <param name="value"></param> /// <returns></returns> public static BIT_VECTOR_VALUE CreateBIT_VECTOR_VALUE(Int64 value, int size) { List <AbstractValue> elements = new List <AbstractValue>(); bool[] booleanData = DataConvertorUtils.ToBitArray(value, size); foreach (bool b in booleanData) { elements.Add(new BIT_VALUE(b ? VHDL.builtin.Standard.BIT_1 : VHDL.builtin.Standard.BIT_0)); } return(new BIT_VECTOR_VALUE(elements)); }
public IEnumerable <double> GetDoubleEnumerator() { yield return(DataConvertorUtils.ToLong(CurrentValue)); while (true) { if (isUpDirection == true) { yield return(DataConvertorUtils.ToLong(Next())); } else { yield return(DataConvertorUtils.ToLong(Prev())); } } }
public override StringBuilder StringVhdlRealization(KeyValuePair <string, TimeInterval> param) { int numbRepeats = (int)(param.Value.GetTimeUnitInFS() / this.timeStep.GetTimeUnitInFS()); //число повторений StringBuilder res = new StringBuilder(); res.Append("--random generator\n"); res.Append("process is \n begin\n"); res.Append(param.Key).Append(" <= ").Append(DataConvertorUtils.ToBitArrayString((int)this.NextValue(), SizeVector)).Append(";\n"); for (int i = 0; i < numbRepeats; ++i) { res.Append("wait for ").Append(timeStep.TimeNumber).Append(" ").Append(timeStep.Unit).Append(";\n"); res.Append(param.Key).Append(" <= ").Append(DataConvertorUtils.ToBitArrayString((int)this.NextValue(), SizeVector)).Append(";\n"); } res.Append("wait;\n"); res.Append("end process;\n"); return(res); }
private bool GenerateCounter() { Counter counter = null; if (RadiobuttonCounterBinary.IsChecked == true) { counter = new BinaryCounter(); } if (RadiobuttonCounterGray.IsChecked == true) { counter = new GrayCounter(); } if (RadiobuttonCounterJohnson.IsChecked == true) { counter = new JohnsonCounter(); } if (RadiobuttonCounterOneHot.IsChecked == true) { counter = new Circular1(); } if (RadiobuttonCounterOneZero.IsChecked == true) { counter = new Circular0(); } counter.IsUpDirection = RadiobuttonCounterUp.IsChecked == true; counter.StepCount = (uint)TextBoxCounterChangeBy.GetIntegerValue(); counter.CurrentValue = DataConvertorUtils.ToBitArray(TextBoxCounterStartValue.GetIntegerValue(), (int)genSettings.Size); if (counter.CurrentValue == null) { MessageBox.Show(string.Format("You have errors, when enter StartValue for {0}. It must be one \'0\' and other \'1\'(Circular0) or one \'1\' and other \'0\'(Circular1)", counter.ToString()), "Error!"); return(false); } if (timeUnitUserControlClock.TimeInterval.GetTimeUnitInFS() == 0) { MessageBox.Show("Time must be non zero", "Error!", MessageBoxButton.OK); return(false); } counter.TimeStep = timeUnitUserControlCounter.TimeInterval; generator = counter; return(true); }
public override StringBuilder StringVhdlRealization(KeyValuePair <string, TimeInterval> param) { StringBuilder res = new StringBuilder(); if (dutyCycle == 50) { res.Append(param.Key).Append("<=not ").Append(param.Key).Append(" after ").Append((ulong)timeStep.GetTimeUnitInFS() / 2).Append(" ").Append(TimeUnit.fs).Append(" when now < END_TIME;"); } else { res.Append("process is").Append("\n").Append("begin").Append("\n").Append(" if now<END_TIME then").Append("\n").Append(param.Key).Append("<=").Append("\'").Append(DataConvertorUtils.BoolToInt(startValue)).Append("\';").Append("\n"); res.Append(" wait for ").Append((ulong)(timeStep.GetTimeUnitInFS() * (dutyCycle / 100))).Append(" ").Append(TimeUnit.fs).Append(" ;").Append("\n"); res.Append(param.Key).Append("<=").Append("\'").Append(DataConvertorUtils.BoolToInt(!startValue)).Append("\';").Append("\n"); res.Append(" wait for ").Append((ulong)(timeStep.GetTimeUnitInFS() * (1 - dutyCycle / 100))).Append(" ").Append(TimeUnit.fs).Append(" ;").Append("\n"); res.Append(" else wait;").Append("\n").Append(" end if;").Append("\n").Append("end process; ").Append("\n"); } return(res); }
private static SortedList <UInt64, TimeStampInfo <VHDLBaseValue> > FormIntegerGeneratedData(BaseGenerator generator, UInt64 StartTime, UInt64 EndTime) { SortedList <UInt64, TimeStampInfo <VHDLBaseValue> > res = new SortedList <UInt64, TimeStampInfo <VHDLBaseValue> >(); if (generator is IGeneratorDataFill <Int64> ) { SortedList <UInt64, Int64> valuesForInsert = (generator as IGeneratorDataFill <Int64>).InsertValues(StartTime, EndTime); foreach (var el in valuesForInsert) { TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(Convert.ToInt32(el.Value))); res.Add(el.Key, inf); } return(res); } if (generator is IGeneratorDataFill <bool[]> ) { SortedList <UInt64, bool[]> valuesForInsert = (generator as IGeneratorDataFill <bool[]>).InsertValues(StartTime, EndTime); foreach (var el in valuesForInsert) { TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(DataConvertorUtils.ToInt(el.Value))); res.Add(el.Key, inf); } return(res); } if (generator is IGeneratorDataFill <Double> ) { SortedList <UInt64, Double> valuesForInsert = (generator as IGeneratorDataFill <Double>).InsertValues(StartTime, EndTime); foreach (var el in valuesForInsert) { TimeStampInfo <VHDLBaseValue> inf = new TimeStampInfo <VHDLBaseValue>(new VHDLIntegerValue(Convert.ToInt32(el.Value))); res.Add(el.Key, inf); } return(res); } return(res); }
public override string GetStringStartValue() { return("\'" + DataConvertorUtils.BoolToInt(startValue) + "\'"); }