private void MakeVectors(int value1, int width1, int value2, int width2, out StdLogicVector r1, out StdLogicVector r2) { StdLogicVector v1 = StdLogicVector.FromLong(value1, width1); StdLogicVector v2 = StdLogicVector.FromLong(value2, width2); StdLogicVector v = v1.Concat(v2).Concat(StdLogicVector._0s(2 * MaxWidth - width1 - width2)); r1 = v[2 * MaxWidth - 1, MaxWidth]; r2 = v[MaxWidth - 1, 0]; }
private void Processing() { if (Clk.RisingEdge()) { int shift = Shift.Cur.UnsignedValue.IntValue; if (Dir.Cur == "0") // shift left { _y.Next = X.Cur.Concat(_pad)[2 * DataWidth - shift - 1, DataWidth - shift]; } else // shift right { _y.Next = _pad.Concat(X.Cur)[DataWidth + shift - 1, shift]; } } }
private void ProcessSigned() { if (DIn.Cur[InputWidth - 1] == '1') { DOut.Next = _hiPad1 .Concat(DIn.Cur[_hiSlice, _loSlice]) .Concat(_loPad); } else { DOut.Next = _hiPad0 .Concat(DIn.Cur[_hiSlice, _loSlice]) .Concat(_loPad); } }
private void Process() { StdLogic ib1 = X.Cur[FracWidth + 1]; StdLogic ib0 = X.Cur[FracWidth]; StdLogicVector rv = X.Cur[FracWidth - 1, 0]; bool ibf1 = ib1 == '1'; bool ibf0 = ib0 == '1'; bool rvz = rv == _zeroes; bool flag = ibf0 && (ibf1 || !rvz); if (flag) { R.Next = _padOnes.Concat(ib0.Concat(rv)); } else { R.Next = _padZeroes.Concat(ib0.Concat(rv)); } }
private void ProcessUnsigned() { DOut.Next = _hiPad0 .Concat(DIn.Cur[_hiSlice, _loSlice]) .Concat(_loPad); }