Verilog(1)-- 基础知识

本文详细介绍了Verilog HDL语言的基础知识,包括空白符、注释符、标识符、关键字、数值及其表示。深入探讨了数据类型,如物理数据类型(连线型、寄存器型)和抽象数据类型(整形、时间型、实型、参数型),以及运算符的使用。此外,还讲解了模块的基本概念和端口定义,是Verilog HDL初学者的入门教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1,Verilog HDL语言要素

1.1,空白符

1.2,注释符

1.3,标识符和转义标识符

标识符

转义标识符

 1.4,关键字

1.5,数值

1,整及其表示

2,实数及其表示

3,字符串及其表示 

2,数据类型

2.1,物理数据类型

2.1.1,连线型

2.1.2,寄存器型

2.1.3,连线型和寄存器型数据类型的声明

        连线型声明

         寄存器型声明

         存储器型

2.2,抽象数据类型

 整形

 时间型

实型

 参数型

 3,运算符

3.1,算术运算符

3.2,关系运算符

3.3,相等关系运算符

 3.4,逻辑运算符

3.5,按位运算符

3.6,归约运算符;

 3.7,移位运算符

3.8,条件运算符(:?)

 3.9,连接和复制运算符

 4,模块

4.1,模块的基本概念

4.2,端口

 端口定义

端口引用


1,Verilog HDL语言要素

语言要素:符号、数据类型、运算符、表达式

1.1,空白符

空白符包括:空格符,制表符,换行符,换页符。

空白符可以使代码看起来结构清晰,阅读起来方便。在编译和综合的时候会被忽略。

编写Verilog程序的时候,加不加空白符都可以,加空白符的目的是为了看起来更加美观,清晰。

1.2,注释符

1,单行注释:以 ‘ // ’开始,注释从‘ // ’到行尾的内容。

2,多行注释:从 “ /* ”开始,到 “ */ ” 结束,注释两个注释符之间的内容。

注意:多行注释不可以嵌套多行注释,多行注释可以嵌套单行注释。

1.3,标识符和转义标识符

标识符

标识符:用来命名信号(reg,wire......),模块(module),参数(parameter)等等。

标识符命名格式:

1,标识符区分大小写

2,第一个字符必须是字母或者下划线

3,后续字符可以是任意 字母、数字 、下划线 (_)和 $符号的组合。

4,标识符不能是关键字。

转义标识符

转义标识符命名格式:

1,以“ \ "开头,以空白符(最好是一个空格)结尾

2," \ "和"  "之间可以是任意能打印的字符内容,也就是任意字符都可以。

转义标识符在使用的时候也必须带上" \ ""  "

举例: “\00abc ”作为转义字符。


module ch;
    reg [3:0] \00abc ;
    initial begin
        \00abc = 10;
        $display("%d",\00abc );
    end
endmodule

如果不带空格符,那么 “\00abc; ”会被认为是一个转义标识符,编译的时候会报错;因为分号被认为是标识符的一部分,从而缺失了分号“;”

如果你想带分号,可以这样表示:

    reg [3:0] \00abc; ;

 1.4,关键字

关键字(保留字)非常多,在这里不进行展示了。

需要注意的是:

1,这时Verilog HDL内部的专用词,用户不能随便使用,在特定时候使用特定关键字。

2,所有关键字都是小写的,比如:ALWAYS和always不一样。

1.5,数值

四值电平逻辑
状 态 含 义
0 低电平、逻辑0或“假”
1 高电平、逻辑1或“真”
x、X 不定态(不确定或未知的逻辑状态)
z、Z 高阻态

Verilog有四种逻辑数值状态:0、1、x、z

在数值逻辑中不区分大小写。

为了提高数值可读性,有时候会在数值中添加 “ _ ”(下划线),下划线符号除了不能放在数值首位,别的地方都可以。

比如: 8'b10011100,可以写成 8'b1001_1100;

1,整及其表示

数制的基数符号与数字字符集
数制 基数符号 数字字符集
二进制 b或B 0、1、x、X、z、Z、?、_
八进制 o或O 0~7、x、X、z、Z、?、_
十进制 d或D 0~9、_
十六进制 h或H 0~9、a~f、A~F、x、X、z、Z、?、_

整数表示形式:

+/-<size>'<base_format><number>

1,“+/-”是正负数的标示;

2,size是指换算过后的二进制宽度

3,“ ' ”为基数格式固有字符,该字符不能省略

4,base_format为其基数符号

 5,number是可以使用的数字字符集,形式上是该进制下的一串数字


使用需要注意的情况:

1,下划线 “ _ ”是为了提高可读性,不能作为首字符。

2,当数字没有说明位宽时,默认为32位。

        比如:50 

3,x或z在二进制中代表1位x或者z,x或z在八进制中代3位x或者z,x或z在十六进制中代表4位x或者z。比如:

        8'b1011xxxx                等价于   8'hBx

4,若没有定义一个整数的位宽,其宽度为相应值中定义的位数

        比如: 'o642 为9位八进制数

                    'hBD  为8位十六进制数

5,若定义的宽度比实际的数大,则在左边补0;但如果最左边的一位为x或者z,那么就相应的用x或z来补齐。

        比如:10'b101 等价于 10'b0000000101;

        若定义的宽度比实际的数小,则相应地截掉左边的部分位。

        比如: 4'b10101010  等价于 4'b1010;

6,“ ? ”是高阻态z地另一种表示方式。在数字地表示中,“ ? ”和 z 是等价的,可以互相替代。

7,整数可以带正、负号,并且正负号应该写在最左边。

        同时负数也可以使用补码的方式表示。

        比如:-4 等价于 4b'1100

8,如果进制和位宽都省略,则代表十进制数。

        比如:-15代表十进制数-15.

9,数字中不能有空格,但是在基数符号两侧可以有空格。

        比如:4'b1100 等价于 4' b 1100.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值