Verilog学习笔记(一)基础知识,运算符
最近为了准备面试所以单独来学一下Verilog,教材是王贞炎编著的FPGA应用开发和仿真,基于这本书做一点笔记和总结。
设计方法与流程
- 规格制定:定义整个系统的功能、性能指标和重要参数(文档编撰)
- 上层设计:功能拆分、主要模块定义和模块间交互设计(文档编撰)
- 细节设计:模块内功能实现,包括小型算法、状态机与编解码(文档编撰和初步编码)
- 编码:使用可综合的HDL编写代码
- 功能验证:使用仿真攻击验证模块与系统功能,编写测试代码
- 综合:使用编译器将代码转换成门级网络表
- 实现(布局布线):适配到特定的器件工艺中
- 时序验证:也叫门级仿真
标识符和关键字
标识符(对象的唯一名字):区分大小写,只能以字母或下划线开头,可以由
值与字面量
Verilog中变量可取的基本值有四种,数据类型有四值与二值之分。
- 0,逻辑0,低电平,条件假
- 1,逻辑1,高电平,条件真
- x或X或 ? ,未知逻辑值
- z或Z,高阻态
常数:整型与浮点
字面量:时间、字符串、结构与数组字面量
线网
对应连线,不具备存储能力。使用一个或多个持续赋值或端口来驱动,多个驱动时值取决于多个驱动的强度。
线网的种类有以下
- wire:被门或持续赋值驱动,可以有多个驱动源
- tri:被多个驱动源驱动
- uwire:被单个驱动源驱动
- wand, wor, triand, trior:实现线与和线或
- tri0, tri1:有电阻下拉或上拉的线网
- trireg:容性储值的线网(?)
- supply0, supply1:电源
变量
抽象值存储单元,赋值之后保持该值到下一次赋值。有以下几种常用的数据类型:
- 整型
- bit,二值,默认无符号
- logic,四值,默认无符号
- reg,四值,默认无符号
- 定长整型
- byte, shortint, int, longint,二值,8位,16位,32位和64位,默认有符号
- integer,四值,32位,默认有符号
- time,四值,64位,默认无符号
- 浮点型
- shortreal, real,遵循IEEE754表达的浮点小数,分别为32与64位
- realtime,同real