初识Verilog HDL

从C语言发展而来,区别于C,Verilog HDL 是并行执行的。

逻辑值

​ 0:逻辑低电平

​ 1:逻辑高电平

​ z:高阻态

​ x:未知逻辑电平(实际中不存在x,而存在亚稳态(不是0也不是1))

关键字

example.v

module	example
(
	input	wire	sys_clk		,
    input	wire	sys_rst_n	,
    inout	wire	sda			,
    
    output	wire	po_flag
);
    //线网型变量
    wire	[0:0]	flag	;
    //寄存器型变量
    reg		[7:0]	cnt		;
    //参数
    parameter	CNT_MAX = 100;
    localparam	CNT_MAX = 100;//不能实例化
    
    //模块实例化
    example
    #(
        .CNT_MAX	(8'd100		)
    )
    
    always(posedge sys_clk or negedg sys_rst_n)
        if(syys_rst_n == 1'b0)
            cnt <= 8'd0;

    assign po_flag = (cnt==CNT_MAX) ? 1'b1 :1'b0;	//就是三目运算
endmodule

常量

基数表示法

格式: [ 换 算 为 二 进 制 后 位 宽 长 度 ] [ ′ ] [ 数 值 进 制 符 号 ] [ 与 数 值 进 制 符 号 对 应 的 数 值 ] [换算为二进制后位宽长度]['][数值进制符号][与数值进制符号对应的数值] [][][][]

[数值进制符号]中,h十六进制,o八进制,b二进制,d十进制

[换算为二进制后位宽长度]可有可无,Verilog会自动匹配(左边补0或截断左边位数

若直接写,默认十进制

8'hab//表示位宽8bit,十六进制数ab

赋值方式

  1. 阻塞赋值

    =	//顺序执行
    begin
        a = b;
        c = a;
    end
    
  2. 非阻塞赋值

    <=	//并行执行
    begin
        a <= b;
        c <= a;	//c等于a的初始值
    end
    

算数运算符

+
-
*	一般不使用
\	一般不使用
%	取余数

归约运算符、按位运算符

&
~&
^
~^
|
~|
//例如&有两种用途,一元运算符、二元运算符
&4'b1101 = 1'b0	//一元
4'b1101&4'b1001 = 4'b1001 //二元

逻辑运算符

&&
||
==
!=

关系运算符

<
>
<=
>=

移位运算符

<<	//二进制左移1位表示乘以2,要注意位宽的拓展
>>	//二进制右移1位表示除以2

位拼接运算符

{ ,}
//将8位a,3位b,5位c	拼接为	16位d
d = {a,b,c};

条件运算符

? :

优先级

规约>算数>移位>关系>’==和!=’>按位>’’&&和||’’>条件

一元运算符 > 二元运算符 > 三元运算符

语句

if()
    ;
else if()
    ;
else
    ;

case()
    x1:y1;	//当执行了某一分支项内语句后,就会跳出case。
    default: yn;
endcase

系统函数

Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,被称为系统任务和系统函数,函数大多只能在Testbench仿真中使用,方便我们进行验证。

`timescale 1ns/1ns //时间尺度预编译指令,时间单位/时间精度
#数字//表示延时响应时间单位的时间,#10表示延时10个单位的时间
`timescale 1ns/10ps	//精度0.01,#10.11表示延时10110ps

$display	//打印信息,自动换行
$write		//打印信息
$strobe		//打印信息,自动换行,最后执行(在程序的最后面执行)
$monitor	//监测变量
$stop		//暂停仿真
$finish		//结束仿真
$time		//时间函数
$random		//随机函数
$readmemb	//读文件函数,二进制
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值