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

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

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

相关推荐
qq_2842740510 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_2842740511 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan202412 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
深圳老胡13 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
坤坤子吖14 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台14 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础12314 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell
ACP广源盛1392462567314 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
敲个大西瓜16 小时前
langchain笔记(一)
redis·笔记·langchain
带金箍的至尊宝16 小时前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构