学习Verilog语法要素_周报 5.22

对最近学习的基础东西总结,防止又给忘了...

——线网类型

1. wire类型:

起到连接功能,且需要被持续的驱动(驱动它的可以是逻辑门或者模块),当驱动的值发生变化时,新值会自动传送到线网上。

经常用于连续赋值语句的输出。

注意:程序模块中输入输出信号类型默认为wire型。

wire d ;                   //默认1 bit 的连线

wire [7:0] x, y, z;     //x,y,z都是8 bit 的wire 型连线

2.tri类型:

多种驱动源驱动同一个线时的线网数据类型。

栗子:tri [7:0] data;     就是声明了一个 8 bit 三态线网

我们就可以用wire表示下图:

module mux2_1(out,in1,in2,sel);
output out ;
input in1 in2 sel;
wire sel_ba,and_out1,and_out2;
      not  u1(sel_ba,sel);
      and  u2(and_out1,in1,sel_ba);
      and  u3(and_out2,in2,sel);
      or   u4(out,and_out1,and_out2);
  endmodule
      

//没试验,所以不知道对着还是错。。。不过表达的意思应该没问题;

——变量声明:

有reg,time,integer等,初始值是不定态“x”值。

*声明过的变量就不能再声明

——寄存器类型:

除了类型名称,和c语言的变量的作用我觉得没区别。

在被赋予新值之前能一直保持原数值的变量类型,这也是和线网类型的不同之处,线网类型需要一直被驱动才能保持原数值。

1.reg:

可为正,可为负,当reg型数据是表达式中的数据时,其值默认是正值,所以reg型变量要明确声明其符号(当然我的建议是用下面的integer)。将有符号数赋给reg会变成别的数。

  • 使用Verilog的reg信号,用于过程块中的左值赋值。

  • 使用Verilog的wire信号,用于连续赋值。

 2.integer:

integer型变量不必也不允许声明符号,其中存储的二进制数本身就代表有符号数

3.real:

实数寄存器。

当实数赋给整数时,实数会取最接近的整数赋给整数变量

就像下面的这个

real dhx;

integer zl;

 dhx = 3.14;

  zl = dhx;    // 这个时候zl的值是3,如果dhx是3.7的时候zl是4

4.time:

保存仿真时间。

——标量与矢量:

标量:位宽1 bit 的线网和寄存器类型。

矢量:位宽大于1 bit的线网和寄存器类型。

——端口:

module 模块名字(端口 , 端口 ,......) ;

注意:端口必须声明;端口声明不能重复;数据间的数据只能通过其端口调用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值