FPGA-向量

当位宽大于 1 时,wire 或 reg 即可声明为向量的形式。如下的例子

reg [3:0]      counter ;    //声明4bit位宽的寄存器counter
wire [32-1:0]  gpio_data;   //声明32bit位宽的线型变量gpio_data
wire [8:2]     addr ;       //声明7bit位宽的线型变量addr,位宽范围为8:2
reg [0:31]     data ;       //声明32bit位宽的寄存器变量data, 最高有效位为0
对于上面的向量,我们可以指定某一位或若干相邻位,作为其他逻辑使用:
wire [9:0]     data_low = data[0:9] ;
addr_temp[3:2] = addr[8:7] + 1'b1 ;

Verilog 支持可变的向量域选择

  [bit+: width] : 从起始 bit 位开始递增,位宽为 width。

  [bit-: width] : 从起始 bit 位开始递减,位宽为 width。

//等价
A = data1[31-: 8] ; A = data1[31:24] ;
//等价
B = data1[0+ : 8] ;
B
= data1[0:7] ;

对向量重新进行组合成新的向量时,需要借助大括号

wire [31:0]    temp1, temp2 ;
assign temp1 = {byte1[0][7:0], data1[31:8]};  //数据拼接
assign temp2 = {32{1'b0}};  //赋值32位的数值0

  

posted @ 2022-09-30 10:13  VarForrest  阅读(124)  评论(0编辑  收藏  举报