wire类型和reg类型的使用问题 您所在的位置:网站首页 wire型数据怎么赋值给reg型 wire类型和reg类型的使用问题

wire类型和reg类型的使用问题

2023-07-22 07:47| 来源: 网络整理| 查看: 265

wire和reg是VerilogHDL中两种常用的信号数据类型,对于如何使用这两种数据,笔者在初学时也迷惑了好一阵。下面简要讲述一下wire型和reg型数据的使用问题。 首先我面需要明确,reg为寄存器数据,wire为连线型数据。 在程序设计中,正确的使用wire和reg需要牢记以下几点: 1)连续赋值语句(assign)只能使用wire类型; 2)在过程语句块(initial,always)中,只能对reg数据进行赋值; 3)结构化描述时,模块的输出信号只能使用wire; 4)在定义模块的端口时,默认为wire类型,如果输出是reg,则需要重新定义;

以下举几个例子加以说明:

module exp1(a,b,c,y); input a,b,c; output y; assign y=a&b&c; endmodule

在例子中,默认为wire类型因此不需要重新定义。

module exp2(clk,q,d); input clk,d; ouput q; reg q; always@(posedge clk) q=d; endmodule

这是一个无复位清零信号的D触发器,q在always语句块中被赋值,因此需要定义为reg型。 注意使用wire型和reg型和是组合电路还是时序电路无关,至于连续赋值和过程语句块中赋值有关。

module exp3 (in1,in2,d,clk,out); input in1,in2,d,clk; output out; wire q; exp1 U1(.a(q),.b(in1),.c(in2),.y(out)) exp2 U2(.d(d),.clk(clk),.q(q)); endmodule

这里D触发器的输出数据q,只是用来描述两个模块之间的连接关系,所以采用wire类型。

reg数据类型,对应的是能存储数据的电路单元,如触发器和锁存器。通常在行为级描述是采用。reg类型本身没有符号,如果对其进行赋值负数时,实际对应的为二级制补码形式,所以在电路设计时建议不要直接赋值,而实以补码的形式赋值。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有