Verilog HDL数字设计与综合(第二版)学习笔记-第三章

一、词法约定

1.Verilog是大小写相关的,要区分,其中关键字全部都要小写

2.空白符又空格(/b)和制表符(/t)组成,除字符串中的空白符,其它的仅作分割表示,无实际意义。

3.注释:单行 //    多行:/*   */,多行的不准嵌套多行,但可以嵌套单行的。

4.操作符有三种,用来分隔三个操作数:单目、双目和三目操作数,单目操作数优先于双目的,如:~>&&。三目的举例:a = b ? c : d;

5.数字声明:

  5.1指明位宽的:<size位宽>'<base format基数><number值>,2(b/B)、8(o/O)、十进制(d/D)、十六进制(h/H)。如16’d255。

  5.2不指明位数:未指定基数时,默认为十进制数。未指定位宽,默认位宽与仿真器和使用的计算机有关(最小为32位)。如23456或 ' o21。

  5.3  x=不确定值;z=高阻值

  5.4  负数,符号放最前面:-6d'3。亦可加一个可选的带符号说明符:-6'sd3,这是一个6位的用于带符号算术运算的负数。

  5.5下划线除出现在第一个字符,其它随意,仅提高可读性。

6.字符串必须一行写完,不能有回车符。

7.关键字全部小写。标识符是对象的名字,由字母数字、下划线、$组成,区分大小写,首字母必须是字母数字或下划线(与5.5区分)

8.转义标识符:不懂,懒得理解

二、数据类型

1.四值电平:0、1、x、z。八种信号强度supply>stromg>pull>large>weak>medium>small>highz

2.线网wire,位宽1 ,默认值z。

注:net不是关键字,它代表一组数据类型。包括wire,wand,wor,tri,triand,trior,trireg。

3.寄存器,存储元件,与硬件寄存器作区分,register仅仅意味着一个保存数值的变量,无需驱动,可通过赋值改变。寄存器数据类型一般用关键字reg来声明,默认值位x。例:   

reg rester;//声明能保持数值的变量reset
initial;//忽略
begin
  reset = 1'b1;       // 初始化为1
  #100 reset = 1'b0;  // 100个时间单位后,reset置为0
end

寄存器也可以声明为带符号(signed)类型的变量。

reg signed [63:0] m;//64位带符号数
integer i;//32位带符号的值

4.向量,略,太多了没耐心看

5.整数、实数、和时间寄存器数据类型:

  整数:integer,有符号数。

  常实量和实数寄存器数据类型:real,可用十进制或科学计数法表示,不能带有范围。

  时间寄存器:time,保存仿真时间。

time save_sim_time;//定义时间类型的变量save_sim_tim
initial
  save_sim_tim = $time;//把当前的仿真时间记录下来

6.数组,维度不限,形<数组名>[<下表>]

integer count[0:7];//由8个计数变量组成的数组
reg bool[31:0];由32个1位的布尔寄存器变量组成的数组

注意,数组与线网或寄存器向量混淆,向量是一个单独的元件,位宽位n,数组由多个元件组成,美国元件位宽位n或1。

7.存储器,42页,写的不多

8.参数,使用parameter在模块内定义常数,还可以的意义参数的类型和范围进行定义。

parameter port_id = 5;
parameter signed [15:0] WIDTH;//规定WIDTH有正负号,宽度位为16位

局部参数:localparam,等同于参数,区别在于局部参数不可更改。一般参数可以通过参数重载语句(defparam)或通过有序参数列表或命名参数赋值来直接修改。

9.字符串,保存在reg类型的变量中。宽度应足够大

三、系统任务和编译指令

3.1.系统任务

3.1.1显示信息:$display,  $display(p1,p2,p3,···,pn);pn是用双引号扩起来,它会在末尾自动加一个换行符哦

3.1.2监视信息:$monitor,对信号值进行监视,$monitor(p1,p2,p3,···,pn);pn是用双引号扩起来,调用一次即可在整个仿真过程中生效,与display不同。

3.1.2暂停和结束仿真:$stop和$finish

initial
begin
clock = 0;
reset = 1;
#100 $stop;//在仿真时刻为100单位时,暂停仿真
#900 $finish;//在仿真时刻为1000单位时,终止仿真
end

3.2编译指令

3.2.1 'define:定义文本宏,类似C中的#define

3.2.2 'include:将一个Verilog源文件包含在另一个Verilog文件中,类似C中的#include

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值