目录

前言

1.词法规定

1.1间隔符

1.2标识符和关键词

2.四种逻辑值

3.八种强度值

4.常量及其表示

4.1整数型表示

4.2实数型常量

4.3字符串常量

4.4参数语句

5.数据类型

5.1线网类型

5.2寄存器类型

参考文献


前言

笔者写这篇文章的目的主要是为了和大家分享一下学习心得,因为作为一名学生党,没有接受专门的培训,也没有老师给我讲解(课程安排在大四,笔者这时才大二),所以在参考了很多书籍和网上的视频教程后写出一些心得,希望能够对入门的同学或者相关人员有一点帮助吧。篇幅可能不多,大部分都是从不同的书籍里面整理的,偏向于概括性的文章。可能内容也有许多漏洞或错误,欢迎大家指出。

在学Verilog之前建议最好有数电基础,不然很多东西从头学可能会有点费力。文中会有一些C语言的类比,可能有些不妥,但是我个人按照这个比较好理解,希望大家参考一下就行。在大概的把语法了解后,个人建议可以直接编程验证,在这里我推荐小梅哥、黑金和特权的视频教程(并无广告的意思),他们讲的比较细,涵盖面也比较广泛。Verilog还算是比较好学,但是FPGA设计还是不容易,加油吧。


1.词法规定

1.1间隔符

(类似于C语言)

1.2标识符和关键词

标识符:英文字母、数字、$符和下划线组成(首字符必须为英文字母或下划线)。

转义标识符:如:\***。


2.四种逻辑值

0 逻辑0、逻辑假
1 逻辑1、逻辑真
x或X 不确定值(未知逻辑状态)
z或Z 高阻态

3.八种强度值

                                                                        最强————>最弱
强度等级名称 supply strong

pull

large weak medium small highz
类型 驱动 驱动 驱动 存储 驱动 存储 存储 高阻抗

4.常量及其表示

4.1整数型表示

格式:

<+/- size>'<signed><base format><number>

例如:

3'b101          //3位二进制数101
5'o37           //5位八进制数37
8'b1001_1100    //八位二进制数,等同于8'b10011100

注意:在这里的‘_’无实际意义,可以随便在整数或实数中使用,方便读数。

4.2实数型常量

(实数通过四舍五入转换为整数)

例如:

42.45转换为整数42; 92.5,92.699转化为93;-15.62转换为-16.

4.3字符串常量

(每个字符串包括空格都被看做8位的ACSII值序列)

例如:

存储字符串"FPGA"就需要定义一个8*4位的变量。

reg [8*4:1] messsage;
initial beginmessage = "FPGA";
end

对于初学者来说,reg、initial这些请无视掉,只用了解这个格式就行。

4.4参数语句

格式:

parameter<signed><msb:lsb>param1 = xxxx,param2 = xxxx,......;

parameter声明的符号常量常量通常出现在module(模块)内部,参数常用于指令yan'延迟、变量的wei'位宽和状态值de等(类似于C语言的局部参数)

补:define是宏定义,通常放在module外部,改常量是一个全局变量。

localparam(局部参数)是模块内部参数(无传递,类似于C语言的函数内部参数)。


5.数据类型

5.1线网类型

wire、tri(wire为一般连线;tri为驱动的线网);

wor、trior(一个线网被多个信号驱动qing情况);

wand、triand(一个线网被多个信号驱动qing情况);

trireg(电荷保持特性);

tri1(上拉电阻);

tri0(下拉电阻);

supply1(电源建模、高点平);

supply0(对地建模、低电平)。

  线网变量声明:

<signed><[msb:lsb]>变量1,2,3,...,n;

例如:

wire A,B;                //两个1位wire类型的变量
wire [7:0] Databus;      //Databus位8位向量的wire变量
supply0 logic_0,vss;     //‘地’
supply1 logic_1,vdd;     //‘电源线’

建议别对同一变量多次赋值。

5.2寄存器类型

(只能在initial或always块内部被赋值)

reg、integer、time未赋值前为x;

real、realtime默认值是0.

reg:寄存器变量,默认值是x

  格式

reg <signed><[msb:lsb]> 变量1,2,3,...,n;

例如:

reg clock,a;      //1位的reg型变量clock,a;
reg [3:0] cnt;    //4位的reg型变量cnt,等效于:cnt[3],cnt[2],cnt[1],cnt[0];

integer:整数型寄存器变量

(变量保持的是整数值)

格式:

integer 1,2,3,...,n<[msb:lsb]>;

例如:

integer A,B,C;         //3个整数型变量;
integer HINT[3:0];     //一个由四个整数变量组成的数组;

  tiem型变量主要用于存储和处理仿真时间

time 1,2,3,...,n [msb:lsb]

reale和realtime变量通产用于对实数型产量常量进行存储和运算,实数不能定义范围,默认值是0

real 1,2,3,...,n;          //实型变量声明
realtime 1,2,3,...,n;      //实型时间变量声明

参考文献

1.《FPGA自学笔记——设计与验证》

2.《可编程逻辑电路设计基础教程》

3.《Verilog HDL与FPGA数字系统设计》

4.《Verilog HDL入门》

自学FPGA:Verilog基本语法规则(一)相关推荐

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

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

  2. Verilog HDL 语法学习笔记

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

  3. Verilog语法规则

    Verilog语法规则 模块声明类 参数定义 信号类型 多语句定义 比较判断和分支判断 任务定义 连续赋值 always模块 赋值符号:=和<=(小等号) 模块声明类 module at7(&l ...

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

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

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

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

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

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

  7. verilog always语法_Verilog 最全经验总结(建议收藏)

    关注.星标公众号,直达精彩内容 公众号:ZYNQ ID :FreeZynq 1.不使用初始化语句: 2.不使用延时语句: 3.不使用循环次数不确定的语句,如:forever,while等: 4.尽量采 ...

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

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

  9. Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现

    JFM25F32A Flash写操作流程如图1所示,对于Flash类型的存储器,向已经存在数据的单元写入数据时,直接写入是无法写入的,在写入之前必须先执行擦除命令,再进行写入即可:如果待写入的单元为新 ...

最新文章

  1. Swift中编写单例的正确方式
  2. asp .net mvc ajax 传值到后台,并放回JSon值解析
  3. Spartan-6的BRAM(Block RAM)模块和DSP 模块XtremeDSP
  4. BZOJ1946 : [Ceoi2006]ANTENNA
  5. 微服务架构可视化平台实践
  6. 1.12 foreach循环遍历Collection集合
  7. ORA-15260: permission denied on ASM disk group
  8. 高级软件工程第一次作业--准备
  9. 【Rayeager PX2】Rayeager PX2开发板上安装FreeBSD
  10. 【BZOJ4129】Haruna’s Breakfast,树上带修莫队+权值分块求mex
  11. 3项目里面全局用less变量 cli vue_vue-cli3全局载入scss变量或less变量配置
  12. SAP自学指南:案例公司的SAP解决方案
  13. 关于imcrop的一点注意事项
  14. Qt添加分割线(很简单的方法)
  15. 共享单车信息系统服务器部署,共享单车云服务器
  16. Ubuntu系统查询本地IP
  17. 项目踩坑随记 —— getTime() is not a function
  18. 观李永乐《皇帝的新衣》后感以及红蓝眼悖论解题思路
  19. excel如何快速批量翻译单词
  20. 微信公众号图文如何添加PDF附件

热门文章

  1. format转换方法
  2. Python中strip函数几种用法
  3. An adaptive seismic signal denoising method based on variational mode decomposition 阅读笔记
  4. HR看到个华为 21级程序员的简历,月薪27w,那是什么概念!
  5. c# forbidden.html,nginx静态资源文件无法访问,403 forbidden错误
  6. 梳理|对话系统中的DST
  7. 三个案例详解不同网段之间如何互通
  8. IT人员必须关注的五个IT新技术方向
  9. 几类自适应波束形成算法推导
  10. 求二叉树中的第一条最长路径长度,并输出最长路径上的节点