流操作符
作用
把其后的数据打包成一个比特流 >> 和<< 操作符>>把数据从左向右变成流,<<则把数据从右到左变成流。 注意: 可以指定一个片段宽度,把源数据按照这个宽度分段以后再转变成流。 例如 h={>>1 {j}} 或h={>> {j}},片段宽度为1变为流 h={>>8 {j}} 或 h={>>byte {j}};以片段宽度为8(byte)变为流
运行结果
# h={>>{j}} //第一行为操作
# 00001010000010110000110000001101//第二行为结果,以二进制输出
# 0a0b0c0d//第三行为结果,以十六进制输出
#
# h={<<{j}}
# 10110000001100001101000001010000
# b030d050
#
# h={>>byte{j}}
# 00001010000010110000110000001101
# 0a0b0c0d
#
# h={<<byte{j}}
# 00001101000011000000101100001010
# 0d0c0b0a
#
# h=h={>>8{j}}
# 00001010000010110000110000001101
# 0a0b0c0d
#
# h={<<8{j}}
# 00001101000011000000101100001010
# 0d0c0b0a
测试代码
module test;
initial begin
int h;//32位
bit [7:0] b,g[4],j[4]='{8'ha,8'hb,8'hc,8'hd};
//bit [7:0] q,r,s,t;
h={>>{j}};//将0a0b0c0d从左往右按位打包成整型
$display("h={>>{j}}");
$display("%b",h);
$display("%x",h);
$display();
h={<<{j}};//将0a0b0c0d,按位倒序,即00000001,00000010,00000011,00000100的从右往左打包
$display("h={<<{j}}");
$display("%b",h);
$display("%x",h);
$display();
h={>>byte{j}};//0a0b0c0d按字节(8位)从左往右进行打包
$display("h={>>byte{j}}");
$display("%b",h);
$display("%x",h);
$display();
h={<<byte{j}};//0a0b0c0d按字节(8位)从右往左进行打包
$display("h={<<byte{j}}");
$display("%b",h);
$display("%x",h);
$display();
h={>>8{j}};//0a0b0c0d按字节(8位)从左往右进行打包
$display("h=h={>>8{j}}");
$display("%b",h);
$display("%x",h);
$display();
h={<<8{j}};//0a0b0c0d按字节(8位)从左往右进行打包
$display("h={<<8{j}}");
$display("%b",h);
$display("%x",h);
$display();
|