一、语言要素

(一)概述

1、空白符(White Space)
空格、换行、换页、Tab等;
是代码错落有致,提高可读性。
2、注释(Comment)
单行注释:“ // ”;
多行注释:“ /* ”~“ */ ”。
3、标识符(Identifier)
字母、数字、_、$,最长1023个字符。
4、关键字(Key Word)
所有的关键字都是小写的。
5、运算符(Operator)

(二)常量

1、整数(Integer)
+/-<位宽>’<进制><数字>
(1)较长的数之间可用下划线分开;
(2)未定义整数位宽,则默认32位;
(3)定义位宽比数值位数长,通常在左边填0补位,如果数最左边一位为x或z,就相应地用x或z在左边补位;
(4)“?”是高阻态z的另一种表示符号,数字表示中与“z”等价可互相替代;
(5)x(或z)在二进制中代表1位x(或z),在八进制中代表3位x(或z),在十六进制中代表4位x(或z),其代表的宽度取决于所用的进制。;
(6)整数可以带符号,且正负号应写在最左边,负数通常表示为二进制补码形式;
(7)位宽与进制默认时默认是十进制数;
(8)位宽和’之间、进制与数值之间允许出现空格,‘和进制之间、数值之间不允许出现空格;
(9)带符号整数定义;例:8’sh5a。
2、实数(Real)
十进制表示法 小数点两侧都必须有数字;
科学计数法
实数转整数 四舍五入
3、字符串(String)
reg型变量
若声明的reg型变量位数大于字符串实际长度,则赋值操作后字符串变量的左端(即高位)补0;若小于,则字符串左端被截去。

(三)数据类型

1、四值逻辑
0:低电平、逻辑0或逻辑非;
1:高电平、逻辑1或“真”;
z或Z:高阻态;
x或X:不确定或未知的逻辑状态。
2、数据类型:
net型
相当于硬件电路各物理连接,特点是输出的值紧跟输入值的变化而变化。
(1)wire型
默认为wire型。位连接到驱动,值为高阻态。
(2)tri型
增加程序可读性,可以更清除地表示该信号综合后的电路连线具有三态的功能。
variable型(register型)。
(1)reg型
综合时综合器根据具体情况映射成寄存器或连线。
(2)integer型
多用于表示循环的变量。不能做为位向量访问。
综合时初始值为x。
(3)real型
表示实数寄存器,主要用于仿真,不可综合。
(4)time型
用于对模拟时间的存储与处理,不可综合。

(四)参数

1、参数parameter

2、参数声明

3、参数传递
(1)“#”符号隐式重载
(2)在线显式重载
(3)defparam语句显示重载
4、localparam
定义局部参数。

(五)向量

1、标量与向量
2、位选择和域选择
3、存储器

(六)运算符

1、算数运算符
+
-
*
/
%
2、逻辑运算符
&&
||
!
3、位运算符
~
&
|
^
^~ ,~^
4、关系运算符
<
<=
>
>=
5、等式运算符
== 相等运算符
!=
=== 全等运算符
!==
6、缩减运算符(是单目运算符)
&
~&
|
~|
^ 异或
^~ , ~^ 同或
7、移位运算符
>>
<<
>>>
<<<
算数移位操作符"<<<"">>>"
8、指数运算符
**
9、条件运算符
?:
10、位拼接运算符
{ }
将两个或多个信号某些位拼接起来;符号位扩展;嵌套使用;移位操作。
11、运算符的优先级

二、语句语法

(一)过程语句

initial:用于初始化,只执行一次;
always:重复执行,可综合。

always过程语句
带触发条件
1、敏感信号列表“sensitivity list”
边沿敏感型、电平敏感型
2、posedge与negedge关键字
posedge clk:时钟信号clk的上升沿作为触发条件;
negedge clk:时钟信号clk的下降沿作为触发条件。
3、Verilog-2001标准对敏感信号列表
(1)敏感信号列表中可用逗号分隔敏感信号
(2)敏感信号列表中使用通配符“**”
4、用always过程块实现较复杂的组合点亮

initial过程语句
initial语句不带触发条件,其块语句沿时间轴只执行一次。

(二)块语句

串行块begin-end
并行块fork-join

(三)赋值语句

1、持续赋值与过程赋值
assign 为持续赋值语句,主要用于对wire型变量的赋值;
过程赋值语句主要用于对reg型变量进行赋值。
2、阻塞赋值与非阻塞赋值

(四)条件语句

if-else语句
case语句
1、case语句
2、casez与casex语句

(五)循环语句

for语句
repeat语句:连续执行一条语句n次
while语句
forever语句:连续执行语句;多用在initial块中,以生成时钟等周期性波形。

(六)编译指示语句

1、宏替换define
2、文件包含include
3、条件编译ifdef、else、endif
if 宏名
endif
当宏名在程序中被定义过的话,则下面的语句块参与源文件的编译,否则,该语句块将不参与源文件的编译。

(七)任务与函数

1、任务
2、函数

(八)顺序执行与并发执行

(九)Verilog—2001语言标准

1、改进和增强的语法结构
提高Verilog行为级和RTL级建模的能力;
改进Verilog在深亚微米设计和IP建模的能力;
纠正和改进了Verilog-1995标准中的错误和易产生歧义之处。
(1)ANSI C风格的模块声明
(2)逗号分隔的敏感信号表
(3)在组合逻辑敏感信号列表中使用通配符“ * ”
(4)generate语句
(5)带符号的算数扩展
(6)指数运算符 * *
(7)变量声明时进行赋值
(8)常数函数
(9)向量的位选和域选
(10)多维矩阵
(11)矩阵的位选则和部分选择
(12)模块的实例化时的参数重载
(13)register改为variable
(14)新增条件编译语句
(15)超过32位的自动宽度扩展
(16)可重入任务(Re-entrant Task)和递归函数(Recursive Function)
(17)文件和行编译指示
2、属性及PLI接口
(1)设计管理
(2)属性
(3)增强的文件输入、输出操作
(4)VCD文件的扩展
(5)提高了对SDF(标准延时文件)的支持
(6)编程语言接口(PLI)的改进

三、Verilog设计的层次与风格

(一)Verilog设计的层次

抽象级别5级:
系统级(System Level)
算法级(Algorithm Level)
寄存器传输级(Register Transfer Level,RTL)
门级(Gate Level)
开关级(Switch Level)
描述方式:
结构(Structural)描述
行为(Behavioural)描述
数据流(Data Flow)描述

(二)门级结构描述

1、门元件
2、门级结构描述
3、行为描述
4、数据流描述
5、不同描述风格设计
6、多层次结构电路设计
7、基本组合电路设计
8、基本时序电路设计
9、三态逻辑设计

Verilog基本语法初学相关推荐

  1. b 计数器位选信号 verilog_Verilog HDL菜鸟学习笔记———三、Verilog常用语法之一...

    1.一个完整版实例 上一次Verilog学习笔记中,我通过几个小例子,较为直观的对Verilog编程有了一些了解.这次笔记,我开始着重的系统学习Verilog编程语法基础.在我系统学习语法之前,我先用 ...

  2. 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  3. 【正点原子FPGA连载】第七章Verilog HDL语法 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  4. Verilog HDL 语法整理 (一)

    目录 导读 一.模块结构 1.模块的端口定义 2.模块内容 二.数据类型 1.常量 2.参量 3.变量 1.寄存器数据类型 2.线网型数据类型 参考声明 导读 本篇博文主要介绍Verilog HDL ...

  5. Verilog HDL 语法学习笔记

    今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...

  6. RTL是什么,Verilog的语法能不能看我的这一篇大致知道。

    Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图.逻辑表达式,还可 ...

  7. 一周掌握FPGA Verilog HDL语法 day 4

    今天给大侠带来的是一周掌握FPGA Verilog HDL 语法,今天开启第四天. 一周掌握FPGA Verilog HDL语法 day 3 被平台综合了,如果想要看详细介绍的话,可以到公众号内部&q ...

  8. Verilog全新语法认识--Xilinx language template

    文章目录 0.背景 1.verilog语法篇 1.1.common constructs 1.2 .compiler directives(编译指令) define include timescale ...

  9. verilog always语法_Verilog初级教程(20)Verilog中的`ifdef 条件编译语句

    前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使用呢? 例如:一部分代码可能有时候用,有时候不用,为了避免全部编译占用资源,可以使用条件 ...

最新文章

  1. Compressor detection can only be called on some ……
  2. CListCtrl使用条款
  3. TCP的三次握手与四次挥手图文
  4. 深度学习的实用层面 —— 1.14 关于梯度检验实现的标记
  5. 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用
  6. 全面总结Java泛型
  7. 分享400多道算法题,来挑战吧
  8. NOSQL数据库习题
  9. glide 4.0 之后 和圆角裁剪CenterCrop冲突
  10. 如何下载并安装 LaTex
  11. SVG格式文件可以用什么软件打开?
  12. CAJ转PDF,仅需5秒还免费,PDF文字还能复制
  13. P2P流媒体技术原理及应用
  14. 程序员的2023发展方向
  15. 原生小程序实现折线图wx-charts(比echars体积小很多)
  16. ios 保存html,iOS 9“保存PDF到iBooks”与HTML
  17. 什么是业务,什么是业务架构?
  18. 理解Java并发编程
  19. Centos 误删rpm命令拯救
  20. 两家新三板CRM公司公布业绩 中国SaaS市场能否出个Salesforce?

热门文章

  1. JPA 2 | 获取联接以及我们是否应该使用它们
  2. 像Java这样的C ++具有低延迟
  3. Hibernate继承:每个类层次结构的表
  4. image 闪烁 c# ajax updatepanel,Why doesn't asp:UpdatePanel refresh an Image?
  5. java方法2数据求和_Leet Code 2 Add Two Numbers - 链表表示的两个数求和 - Java
  6. javascript等待异步线程完成_前端:什么是单线程,同步,异步?彻底弄懂 JavaScript 执行机制...
  7. MySQL联合索引原理_复合索引_组合索引_多列索引
  8. Java变量(静态变量/成员变量/局部变量)初始化的问题
  9. 数学建模python教材推荐_数模竞赛专攻python应该准备什么?
  10. order by 影响效率么_提升开发效率N倍的20+命令行神器