关于Verilog 位拼接运算符{ }的使用记录

因为自己接触的东西很多,公司事情很多,很多东西需要做记录,要不然就一直学一直忘;

 

拼接运算符{ }

字面上就很好理解,用于将多个信号拼接起来,形成一个新的信号;

 

我这里只说使用结果,不多做解释;

 

reg [7:0] Value;

...

assign Value <= {0, Value[7:1]};

 

上面这个逻辑,可以实现 寄存器Value右移1位,最高位由 “0”代替;

假设Value的值为  1111_1111;

第一次运算

Value <= {0, Value [7:1]};


Value  右移一位,然后0与右移后的Value拼接, 得到的值: 0111_1111

 

第二次运算

Value <= {0, Value [7:1]};


Value  右移一位,然后0与右移后的Value拼接, 得到的值: 0011_1111;

 

第三次运算

Value <= {0, Value [7:1]};


Value  右移一位,然后0与右移后的Value拼接, 得到的值: 0001_1111;

 

此处不继续运算,说到这里,基本也都清楚了!

 

参考之前写过的实例,可能更好理解,下面这个逻辑,通过位拼接运算,将值进行操作,得到新的值,

而且通过代码很好理解,外部信号进入到这个逻辑,会自动进行拼接操作,实现数据整合。

module gray
(
    input clk,
    input rst_n,
    input [7:0] data_in,
    output reg [31:0] data_out,
    output reg clk1x_en
);

***
reg [31:0] shift_reg;

always @ (posedge clk,negedge rst_n)
begin
    if(!rst_n)
        shift_reg <= 32'b0;
    else
        shift_reg <= {shift_reg[23:0],data_in};
end

 

***

endmodule

 

 

 

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值