初识 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模块,可读性差。

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

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

你可能感兴趣的:(笔记)