Verilog-数据类型

数据类型

  • 基本数据类型:integer、parameter、reg和wire
  • 其他类型:类似tri0
  • 常量:数字、parameter
    1)其中<位宽>‘<进制><数字>表示常整数,
    2)x和z值:当表明位宽的数在某些位用来x和z来表示,只有他们在最左边的时候表示这几位上具有扩展性。对于?”号也表示z
    3)负数:-8’d5(要用5的补数进行标识)
    4)parameter:右边必须是常数。只在本模块中有用,如果在模块中要用,需要通过参数传递。这里还有一个localparm,仅适用于当前的module,不能进行传递参数
  • 模块实例引用时传递参数defparam
module m(a,b,out);//被引用模块
	parameter c= 7;
endmodule
module test

	m mk(a,b,out);
	defparam mk.c = 5;//例化模块名,和参数名
	//m #(4) mk(a,b,out);对模块m的实例引用
	...
endmodule

5)变量

  • nets type
    输出随输入的变化而变化,wire变量,是通过assign语句进行组合逻辑,缺省时为wire。其中wire[n-1:0] 数据m表示每条总线,位宽为n,共有m条总线。

  • register type
    可以看成是触发器,寄存器。然后主要使用过程块语句initial always task function等进行赋值,它需要明确的赋值,然后在重新赋值前保持原值。reg不一定都是触发器的组成,也可能是组合逻辑。

module w(a,b,out,c);
	input a,b;
	output out;
	reg out;
	wire c;
	assign c = a;//assign只能生产组合逻辑
	always @(b)//reg就可以生成由电平d的组合逻辑
		out < = ~b;
endmodule
  • memory type
    由若干个相同宽度的reg的向量组成的数组。
    类似reg[n-1:0] rega是一个n位的寄存器,reg mema[n-1:0]是由n个1位组成的寄存器组成的存储器。
    赋值方式不一样:n位寄存器可以用一条赋值语句赋值,存储器的赋值需要先指明该单元在这个存储器的地址后,再进行读写操作。例如:rega = 0;√,mema[1023:0] = 0;√,其中的1023是指明了存储单元的地址。
上一篇:解决 pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置


下一篇:Vue中的computed计算属性在生命周期中的执行阶段