FPGA基础知识点

一,Verilog 的数字进制格式

Verilog 数字进制格式包括二进制、八进制、十进制和十六进制,一般常用的为二进制、十进制和十六 进制。
二进制表示如下: 4'b0101 表示 4 位二进制数字 0101 ;
十进制表示如下: 4'd2 表示 4 位十进制数字 2 (二进制 0010 );
十六进制表示如下: 4'ha 表示 4 位十六进制数字 a (二进制 1010 ),十六进制的计数方式为 0 , 1, 2...9 , a , b , c , d , e , f ,最大计数为 f ( f :十进制表示为 15 )。
当代码中没有指定数字的位宽与进制时,默认为 32 位的十进制,比如 100 ,实际上表示的值为
32'd100 。
注意:十进制中的5用二进制表示4'b0101 ,高位虽然为0,但在定义时尽量保留。

二,Verilog 的 wire/reg****变量定义
三,信号命名
四,赋初始值

注意:二进制赋值位数,高位为零保留。
led <= 4'b0000 ; //二进制
led <= 4'd0 ; //十进制

五,数据类型

总结:寄存器类型可以赋值,存储,线网表示 Verilog 结构化元件间的物理连线。
在 Verilog 语法中,主要有三大类数据类型,即寄存器类型、线网类型和参数类型。从名称中,我们可 以看出,真正在数字电路中起作用的数据类型应该是寄存器类型和线网类型。
1,寄存器类型
寄存器类型表示一个抽象的数据存储单元,它只能在 always 语句和 initial 语句中被赋值,并且它的值 从一个赋值到另一个赋值过程中被保存下来。如果该过程语句描述的是时序逻辑,即 always 语句带有时钟 信号,则该寄存器变量对应为寄存器;如果该过程语句描述的是组合逻辑,即 always 语句不带有时钟信号, 则该寄存器变量对应为硬件连线;寄存器类型的缺省值是 x (未知状态)。
//reg define
reg ** 31 **:** 0 ** delay_cnt ; //延时计数器
reg key_flag ; //按键标志
2,线网类型
线网表示 Verilog 结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。 如果没有驱动元件连接到线网,线网的缺省值为 z(高阻态)。线网类型同寄存器类型一样也是有很多种, 如 tri 和 wire 等,其中最常用的就是 wire 类型,它的使用方法如下:
//wire define
wire data_en ; //数据使能信号
wire ** 7 **:** 0 ** data ; //数据
3,参数类型
我们再来看下参数类型,参数其实就是一个常量,常被用于定义状态机的状态、数据位宽和延迟大小 等,由于它可以在编译时修改参数的值,因此它又常被用于一些参数可调的模块中,使用户在实例化模块 时,可以根据需要配置参数。在定义参数时,我们可以一次定义多个参数,参数与参数之间需要用逗号隔开。这里我们需要注意的是参数的定义是局部的,只在当前模块中有效。它的使用方法如下:
//parameter define
parameter DATA_WIDTH = 8 ; //数据位宽为 8 位

六,Verilog****的标识符

不建议大小写混合使用,普通内部信号建议全部小写,参数定义建议大写,另外信号命名最好体现信 号的含义。
规范建议
以下是一些书写规范的要求:
1 、用有意义的有效的名字如 sum 、 cpu_addr 等。
2 、用下划线区分词语组合,如 cpu_addr 。
3 、采用一些前缀或后缀,比如:时钟采用 clk 前缀: clk_50m , clk_cpu ;低电平采用 _n 后缀:
enable_n ;
4 、统一缩写,如全局复位信号 rst 。
5 、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块保持一致。
6 、自定义的标识符不能与保留字(关键词)同名。
7 、参数统一采用大写,如定义参数使用 SIZE 。

七,拼接运算符
八,阻塞赋值(Blocking)

总结:一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行。

九,非阻塞赋值(Non-Blocking)

总结:是 begin---end 之间的所有语句,一起执行,且一个时钟只执行一次,属于并行执行语句。

十,assign和always****区别
十一,带时钟和不带时钟的****always
十二,组合逻辑。
十三,时序逻辑。
相关推荐
Hello-FPGA3 小时前
基于RFSOC FPGA ZCU216 的CoaXPress 采集demo
fpga开发
9527华安5 小时前
FPGA基于ADV7182解码PAL视频,Video Processing Subsystem去隔行,提供6套工程源码和技术支持
fpga开发·音视频·pal·adv7182
hahaha60165 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
GateWorld6 小时前
Xilinx 7系列FPGA时钟网络详解
fpga开发·时钟网络·xilinx 7系列
szxinmai主板定制专家18 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
szxinmai主板定制专家1 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
FPGA小迷弟2 天前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1282 天前
CPU 内部结构是什么?---deepseek
fpga开发
abc light2 天前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
156082072193 天前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理