码迷,mamicode.com
首页 > 其他好文 > 详细

常见的关系运算符(位拼运算符)

时间:2019-09-13 11:05:28      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:移位操作   符号   写在前面   循环   tab   执行   engine   移动   就会   

写在前面的话

位拼运算符是将多个小的表达式合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用“,”隔开。位拼运算符是梦翼师兄特别喜欢的一种运算符,它聪慧灵秀,不但可以进行简单的数据拼接,更是可以用来执行移位操作,而且数据永远是循环的,不会丢失,用途非常广泛。

代码实例

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

    *   Engineer        :   梦翼师兄

    *   QQ               :   761664056

    *   The module function:位拼接运算符模块

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

01  module shift(clk,rst_n,led_out);

02  input clk;//系统输入

03  input rst_n;//系统复位

04

05  output reg [3:0]led_out;//led驱动端口

06

07  always@(posedge clk or negedge rst_n)

08      begin

09          if(!rst_n)

10              begin

11                  led_out<=4‘b0111;//让其中一盏灯点亮

12              end 

13          else 

14              begin

15                  led_out<={led_out[0],led_out[3:1]};//实现流水灯

16              end 

17      end 

18  endmodule 

编写测试代码如下

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

    *   Engineer        :   梦翼师兄

    *   QQ               :   761664056

    *   The module function:位拼接运算符测试模块

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

01  `timescale 1ns/1ps 

02  module 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都会向右移动一位。到最右边时就会放返回最左边继续循环,使用拼位的运算符,在很多场合-如串并转换等,会使代码编写变得简单。

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

 

常见的关系运算符(位拼运算符)

标签:移位操作   符号   写在前面   循环   tab   执行   engine   移动   就会   

原文地址:https://www.cnblogs.com/mengyi1989/p/11515975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!