当前位置:   article > 正文

FPGA学习入门:(二)Verilog基础语法_fpga实例化和调用

fpga实例化和调用

FPGA学习入门:(二)Verilog基础语法

Verilog的逻辑值

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

数据类型

1.寄存器类型:最常用的就是 reg 类型,默认初始值为不定值x,它只能在 always 语句和 initial 语句中被赋值。

//reg define
reg [31:0] delay_cnt; //延时计数器
reg key_flag ; //按键标志
  • 1
  • 2
  • 3

2.线网类型:表示 Verilog 结构化元件(例如门)之间的物理连线。线网类型的变量不能储存值,它的值是由驱动它的元件所决定的。常使用 tri 和 wire类型。

//wire define
wire data_en; //数据使能信号
wire [7:0] data ; //数据
  • 1
  • 2
  • 3

3.参数类型:参数类型是一个常量,用parameter定义

//parameter define
parameter DATA_WIDTH = 8; //数据位宽为 8 位
  • 1
  • 2

运算符

1.算术运算符
在这里插入图片描述
2.关系运算符
在这里插入图片描述
3.逻辑运算符
在这里插入图片描述
4.条件运算符
在这里插入图片描述
5.位运算符
在这里插入图片描述
6.移位运算符
在这里插入图片描述
7.拼接运算符
在这里插入图片描述
8.运算符的优先级
在这里插入图片描述

常用语法

程序框架

Verilog的基础单元是模块(block),
在这里插入图片描述
功能定义部分有三种方法:
1.assign语句:描述组合逻辑
2.always语句:描述组合/时序逻辑
3.例化实例元件
上述三种逻辑功能是并行

模块调用:
写一个模块
在这里插入图片描述
将模块实例化,将输入输出引脚连接到对应位置
在这里插入图片描述

赋值语句

在描述组合逻辑的always块中用阻塞赋值=,综合成组合逻辑的电路结构;
在描述时序逻辑的always块中用非阻塞赋值<=,综合成时序逻辑的电路结构;

条件语句

if_else语句
在这里插入图片描述
if和else后面的操作语句可以用begin和end包含多个语句。
在这里插入图片描述
注意:
1、允许一定形式的简写,如:
if(a)等同于if(a==1):
if(!a)等同于if(a!=1);
2、if语句对表达式的值进行判断,若为0,x,z,则按处理,若为1,按处理。

case语句(多分支选择语句)
在这里插入图片描述

状态机

状态机(State Machine)指在有限个状态之间按一定规律转换的时序电路。
状态机设置的四段论:

1. 状态空间定义

在这里插入图片描述
独热码:每个状态只有一个寄存器置位,译码逻辑简单
在这里插入图片描述

2. 状态跳转

在这里插入图片描述

3. 下个状态判断

在这里插入图片描述

4. 各个状态下的动作

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号