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 之间的所有语句,一起执行,且一个时钟只执行一次,属于并行执行语句。

十,assignalways****区别
十一,带时钟和不带时钟的****always
十二,组合逻辑。
十三,时序逻辑。
相关推荐
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20202 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议