一般的な関係演算子(ビットスペルオペレータ)

EDITORIAL言葉

ファイトオペレータビットは小さな式の複数のシンボルを大式を形成するためにマージされている分離された「」発現との間の各演算式が複数接続されている達成するために、{}。スリーパービット戦い演算子は、特に翼先輩オペレータ、それコングHuiling秀、だけではなく、単純なデータのステッチが、シフト操作を実行するために使用され、データが失われることはありません、常に円形であることができ、使用のようなものです非常に大規模な。

コード例

    / ************************************************* ***          

    *エンジニア:    ドリーム・ブラザーウイング

    * QQ:761664056

    *モジュールの機能:ビット連結演算子モジュール

    ************************************************** *** /

01   モジュールの  シフト CLK RST_N led_out )。

02   入力  CLKを // システム入力

03   INPUTの  RST_Nを; // リセット

04

05   出力 REG  [ 3 0 ] led_out ; // LED 駆動ポート

06

07   常に(@ posedgeの  CLK または negedgeの  RST_N

08       始めます

09           もし(! RST_N

10               始めます

。Led_out 11 <= 4'b0111 ; // ランプのいずれかが点灯している作ります

12               終了 

13            

14               始めます

15 Led_out <= { led_out [ 0 ]、 led_outの[ 3 1 ];} // 達成水ライト

16               終了 

17       終了 

18   ENDMODULE 

次のようにテストコードを書きます

    / ************************************************* ***          

    *エンジニア:    ドリーム・ブラザーウイング

    * QQ:761664056

    *モジュールの機能:ビット連結演算子テストモジュール

    ************************************************** *** /

01 `タイムスケール1nsの/ 1PS 

02   モジュール  TB

03   REGの  CLK ;

04   REGの  RST_N

05

06  wire [3:0]led_out;

07

08  initial

09      begin

10          clk=0;

11          rst_n=0;

12          # 1000.1 rst_n=1;

13      end 

14

15  always #10 clk=~clk;    

16      

17  shift shift(

18      .clk(clk),

19      .rst_n(rst_n),

20      .led_out(led_out)

21   );

22  endmodule 

查看仿真波形如下:

 

从仿真图可以看出,每个时钟周期,0都会向右移动一位。到最右边时就会放返回最左边继续循环,使用拼位的运算符,在很多场合-如串并转换等,会使代码编写变得简单。

代码的意思是,每次把最低位放到最高位,让前三位放到后面,这样逻辑就实现了移位,形成了循环。

 

おすすめ

転載: www.cnblogs.com/mengyi1989/p/11515975.html