Exemplo n.º 1
0
        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];
        }
Exemplo n.º 2
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];
         }
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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));
            }
        }
Exemplo n.º 5
0
 private void ProcessUnsigned()
 {
     DOut.Next = _hiPad0
                 .Concat(DIn.Cur[_hiSlice, _loSlice])
                 .Concat(_loPad);
 }