初识 Verilog

Verilog 综述:

类C,并行,自顶向下,硬件描述语言,VHDL,Verilog HDL。

VHDL,Verilog HDL,两种不同描述语言。

Verilog语言(并行,硬件)类似C语言(串行,软件)。

基础知识:

1.Verilog的四值逻辑系统

0低电平

1高电平

X不确定

Z高阻态

2.Verilog的数据类型

寄存器数据类型

表示一个抽象的数据存储单元,只能在always语句和initial语句等过程语句中被赋值。

在实际的数字电路中,

描述的是时序逻辑,变量对应为寄存器;

描述的是组合逻辑,变量对应为硬件连线;

描述的是不完全组合逻辑,变量也可以对应为锁存器。

寄存器变量不一定综合为寄存器。缺省值为x。

类型有reg(最常用),integer,real等。

线网数据类型

表示物理连线,值有驱动元件的值决定,例如连续赋值与门的输出。

如果没有驱动元件连接到线网那个,线网的缺省值为z。

类型有tri,wand和wire(最常用)。

参数数据类型

一个常量,通常出现在module内部,常被用于定义状态机的状态,数据位宽和延迟大小等,由于它可以再编译时修改参数的值,因此它又常被用于一些参数可调的模块中,实例化模块时,可以根据需要配参数。定义参数时,可以一次定义多个,之间用逗号隔开。

3.Verilog的基本运算符

算术运算符

    • * / %

关系运算符

> < >= <=

逻辑运算符

! && ||

相等运算符

== !=

条件运算符

?:

位运算符

~ & | ^ ~^ ^~

移位运算符

<< >>

拼接运算符

{}

{{}} //{a{b}} 把b重复a次

Verilog的基础语法

可综合语句

能被转换成实实在在的电路,描述硬件电路。

不可综合语句

不能被转换成实实在在的电路,描述仿真功能。

Verilog关键字

太多......

module(开头)和endmodule(结尾)成对使用,模块是设计最基本单元,module紧跟着模块名。

input(入),output(出),inout(入同时出) 用于端口定义。

wire,reg 声明数据类型(线网和寄存器)。

parameter声明参数类型。

always过程赋值语句,一般描述时序逻辑。

assigh连续赋值语句,一般描述对线网赋值。

if和else成对。

begin和end相当于C的{}。

case和endcase成对使用,类C的switch。

posedge(上升沿触发),negedge(下降沿触发),posedge or negedge(都有)和always联合使用。

Verilog的基本程序框架

程序由模块组成。

每个模块要进行端口定义,说明输入输出端口,对模块功能进行逻辑描述。

书写格式自由。

语句末尾加分号(除endmodule)。

Verilog关键问题解惑

Verilog HDL的抽象级别

系统级,算法级,RTL级,门级,开关级。(级别由高到低)

结构化描述方式:级别最低,最接近实际硬件描述。

数据流描述方式:抽象级别高一点。

行为化描述方式:抽象级别最高。

Verilog HDL的模块化设计

自顶向下。

模块分成若干子模块。

如何给端口选择正确的数据类型

输入端口只能是net,但输入端口可以由net/register驱动。

输出端口可以时net/register类型,但输出端口只能驱动net。

Verilog语言中latch的产生

锁存器。

原因:组合逻辑电路中条件不完整。

解决:把所有情况尽可能考虑完整。

组合逻辑反馈环

电路存在不确定性。

变成时序解决问题。

阻塞赋值与非阻塞赋值的不同

阻塞赋值block(=)执行有先后

非阻塞赋值no_block(<=)并行执行

FPGA的灵魂,状态机

通俗的讲是时序逻辑电路里的状态转换图,分为米里型(取决于当前状态和输入)和摩尔型(仅取决于当前状态)。

一个有序状态机通常包括组合逻辑(分为次态逻辑【确定有限状态机的下一个状态】和输出逻辑【确定有限状态机的输出】和时序逻辑(由一组触发器组成,用来记忆当前状态)。

状态机的设计:

1.根据需要确定用摩尔型还是米里型状态机。

2.根据实际分析并列出状态机所有状态,每个状态进行编码。

3.根据状态转移关系和输出函数画出状态图。

4.根据状态图,描述状态机。

状态机的状态编码

通常用参数定义语句parameter指定状态编码。

通过不同编码值区别不同状态。三种状态编码:递增二进制编码,格雷编码,one-hot编码。

状态机的描述方法:

一段式状态机:所有逻辑都写在一个always模块,可读性差。

二段式状态机:组合逻辑和时序逻辑分开,组合逻辑容易出现毛刺等问题。

三段式状态机:具有两段式的优点,还对状态输出进行了寄存,有效滤除毛刺。

相关推荐
咔叽布吉1 小时前
【论文阅读笔记】CamoFormer: Masked Separable Attention for Camouflaged Object Detection
论文阅读·笔记·目标检测
johnny2331 小时前
《大模型应用开发极简入门》笔记
笔记·chatgpt
亦枫Leonlew1 小时前
微积分复习笔记 Calculus Volume 1 - 4.7 Applied Optimization Problems
笔记·数学·微积分·1024程序员节
小肥象不是小飞象1 小时前
(六千字心得笔记)零基础C语言入门第八课——函数(上)
c语言·开发语言·笔记·1024程序员节
星LZX1 小时前
WireShark入门学习笔记
笔记·学习·wireshark
努力变厉害的小超超3 小时前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
aloha_7898 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws9 小时前
Linux学习笔记之vim入门
linux·笔记·学习
A-超11 小时前
vue3展示pag格式动态图
笔记
u01015265811 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习