FPGA-DFPGL22学习5-VERILOG

系列文章之 上章

FPGA-DFPGL22学习4-仿真平台学习

文章目录

  • 系列文章之 上章
  • 前言
  • 一、Verilog 简介
  • 二、Verilog基础
    • 1.逻辑值
    • 2.进制
    • 3.标识符
    • 4.数据类型
      • 寄存器类型
      • 线网类型
      • 参数类型
    • 5.运算符
  • 三、Verilog 程序框架
    • 1.注释
    • 2.关键字
    • 3.程序框架
  • 四、Verilog 程序语句
    • 1.结构语句
    • 2.赋值语句
    • 3.条件语句
  • 四、Verilog 状态机
    • 1.模型
    • 2.设计
  • 总结


前言

@和原子哥一起学习FPGA

开发环境:正点原子 ATK-DFPGL22G 开发板

参考书籍:
《ATK-DFPGL22G之FPGA开发指南_V1.1.pdf》

个人学习笔记,欢迎讨论

一、Verilog 简介

Verilog HDL(以下简称 Verilog),VHDL 是美国军方组织开发的,而 Verilog 是由一个公司的私有财产转化而来。

Verilog 是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻
辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

目前,Verilog-2001 是 Verilog 的最主流版本,被大多数商业电子设计自动化软件支持。

二、Verilog基础

1.逻辑值

逻辑 0:表示低电平,也就是对应我们电路的 GND;
逻辑 1:表示高电平,也就是对应我们电路的 VCC;
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;
逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态。

2.进制

二进制表示如下:4’b0101 表示 4 位二进制数字 0101;
十进制表示如下:4’d2 表示 4 位十进制数字 2(二进制 0010);
十六进制表示如下:4’ha 表示 4 位十六进制数字 a(二进制 1010)。
当代码中没有指定数字的位宽与进制时,默认为 32 位的十进制,比如 100,实际上表示的值为
32’d100。

3.标识符

标识符(identifier)用于定义模块名、端口名和信号名等。Verilog 的标识符可以是任意一组字母、数
字、$和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。

4.数据类型

寄存器类型

寄存器数据类型有很多种,如 reg、integer、real 等,其中最常用的就是 reg 类型.不能赋初值,寄存器类型的缺省值是 x(未知状态)。

如果该过程语句描述的是时序逻辑,即 always 语句带有时钟信号,则该寄存器变量对应为寄存器;

如果该过程语句描述的是组合逻辑,即 always 语句不带有时钟信号,则该寄存器变量对应为硬件连线

线网类型

线网表示 Verilog 结构化元件间的物理连线。

它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为 z(高阻态)。

线网类型同寄存器类型一样也是有很多种,如 tri 和 wire 等,其中最常用的就是 wire 类型。

默认不指定就是线网类型!

参数类型

参数其实就是一个常量,常被用于定义状态机的状态、数据位宽和延迟大小等

 parameter DATA_WIDTH = 8; //数据位宽为8位

5.运算符

Verilog 中的运算符按照功能可以分为下述类型:
1、算术运算符
Verilog 实现乘除比较浪费组合逻辑资源,尤其是除法。除法只能整除。

2、关系运算符
3、逻辑运算符
4、条件运算符
5、位运算符
6、移位运算符
FPGA-DFPGL22学习5-VERILOG_第1张图片
7、拼接运算符
{} 用这个运算符可以把两个或多
个信号的某些位拼接起来进行运算操作

三、Verilog 程序框架

1.注释

和C语言一致

正点原子建议的写法:使用//作为注释。

2.关键字

FPGA-DFPGL22学习5-VERILOG_第2张图片

3.程序框架


FPGA-DFPGL22学习5-VERILOG_第3张图片
FPGA-DFPGL22学习5-VERILOG_第4张图片

四、Verilog 程序语句

1.结构语句



2.赋值语句

FPGA-DFPGL22学习5-VERILOG_第5张图片

RHS:赋值等号右边的表达式或变量可以写作 RHS 表达式或 RHS 变量;
LHS:赋值等号左边的表达式或变量可以写作 LHS 表达式或 LHS 变量;
FPGA-DFPGL22学习5-VERILOG_第6张图片
FPGA-DFPGL22学习5-VERILOG_第7张图片
FPGA-DFPGL22学习5-VERILOG_第8张图片

3.条件语句

在这里插入图片描述
FPGA-DFPGL22学习5-VERILOG_第9张图片
FPGA-DFPGL22学习5-VERILOG_第10张图片

四、Verilog 状态机

1.模型

状态机,全称是有限状态机(Finite State Machine,缩写为 FSM),是一种在有限个状态之间按一定规律转换的时序电路,可以认为是组合逻辑和时序逻辑的一种组合。
➢ Mealy 状态机:组合逻辑的输出不仅取决于当前状态,还取决于输入状态。
➢ Moore 状态机:组合逻辑的输出只取决于当前状态。

2.设计

四段论
1、状态空间的定义

2、状态跳转

3、下一状态判断

4、各个状态下的动作
FPGA-DFPGL22学习5-VERILOG_第11张图片

总结

并行考虑,组合思维,时序思维很重要

你可能感兴趣的:(FPGA,fpga开发,学习)