>○ ps <= { ps[6:0], si };

そうか。こうだ!!!
めっちゃ美しい。

ps <= ps <<1;
こんな書き方では最下位ビットはどうなるのかわからん。
<<の演算子はいらないな。どう考えても使い道がない。ゴミ決定。

ifのbegin end,<<,>> 使用禁止