自学FPGA:Verilog基本语法规则(一)
目录
前言
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基本语法规则(一)相关推荐
- 一周掌握FPGA Verilog HDL语法 day 4
今天给大侠带来的是一周掌握FPGA Verilog HDL 语法,今天开启第四天. 一周掌握FPGA Verilog HDL语法 day 3 被平台综合了,如果想要看详细介绍的话,可以到公众号内部&q ...
- Verilog HDL 语法学习笔记
今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...
- Verilog语法规则
Verilog语法规则 模块声明类 参数定义 信号类型 多语句定义 比较判断和分支判断 任务定义 连续赋值 always模块 赋值符号:=和<=(小等号) 模块声明类 module at7(&l ...
- 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
- 【正点原子FPGA连载】第七章Verilog HDL语法 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- b 计数器位选信号 verilog_Verilog HDL菜鸟学习笔记———三、Verilog常用语法之一...
1.一个完整版实例 上一次Verilog学习笔记中,我通过几个小例子,较为直观的对Verilog编程有了一些了解.这次笔记,我开始着重的系统学习Verilog编程语法基础.在我系统学习语法之前,我先用 ...
- verilog always语法_Verilog 最全经验总结(建议收藏)
关注.星标公众号,直达精彩内容 公众号:ZYNQ ID :FreeZynq 1.不使用初始化语句: 2.不使用延时语句: 3.不使用循环次数不确定的语句,如:forever,while等: 4.尽量采 ...
- RTL是什么,Verilog的语法能不能看我的这一篇大致知道。
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图.逻辑表达式,还可 ...
- Flash之SM25QH128M、JFM25F32A读写操作FPGA Verilog实现
JFM25F32A Flash写操作流程如图1所示,对于Flash类型的存储器,向已经存在数据的单元写入数据时,直接写入是无法写入的,在写入之前必须先执行擦除命令,再进行写入即可:如果待写入的单元为新 ...
最新文章
- Swift中编写单例的正确方式
- asp .net mvc ajax 传值到后台,并放回JSon值解析
- Spartan-6的BRAM(Block RAM)模块和DSP 模块XtremeDSP
- BZOJ1946 : [Ceoi2006]ANTENNA
- 微服务架构可视化平台实践
- 1.12 foreach循环遍历Collection集合
- ORA-15260: permission denied on ASM disk group
- 高级软件工程第一次作业--准备
- 【Rayeager PX2】Rayeager PX2开发板上安装FreeBSD
- 【BZOJ4129】Haruna’s Breakfast,树上带修莫队+权值分块求mex
- 3项目里面全局用less变量 cli vue_vue-cli3全局载入scss变量或less变量配置
- SAP自学指南:案例公司的SAP解决方案
- 关于imcrop的一点注意事项
- Qt添加分割线(很简单的方法)
- 共享单车信息系统服务器部署,共享单车云服务器
- Ubuntu系统查询本地IP
- 项目踩坑随记 —— getTime() is not a function
- 观李永乐《皇帝的新衣》后感以及红蓝眼悖论解题思路
- excel如何快速批量翻译单词
- 微信公众号图文如何添加PDF附件
热门文章
- format转换方法
- Python中strip函数几种用法
- An adaptive seismic signal denoising method based on variational mode decomposition 阅读笔记
- HR看到个华为 21级程序员的简历,月薪27w,那是什么概念!
- c# forbidden.html,nginx静态资源文件无法访问,403 forbidden错误
- 梳理|对话系统中的DST
- 三个案例详解不同网段之间如何互通
- IT人员必须关注的五个IT新技术方向
- 几类自适应波束形成算法推导
- 求二叉树中的第一条最长路径长度,并输出最长路径上的节点