FPGA被称为现场可编程逻辑门阵列,在芯片设计和通信应用方向应用广泛。由于FPGA的设计是用硬件语言编程,将其映成数字
逻辑电路,实现开发者需要的功能。正是由于这一特性,FPGA的处理速度快、并行设计,可以节约运算时间。FPGA除了在通信、接
口方向的应用,还可以做算法、做控制。
提到可编程逻辑器件,我们绕不开CPLD(复杂可编程逻辑器件),CPLD与FPGA的区别主要有:
1、CPLD:(1)触发器较少、乘积项丰富;
(2)适用于组合逻辑;
(3)延时固定;
(4)编程信息掉电后不丢失。
2、FPGA:(1)触发器资源丰富,适用于时序逻辑;
(2)延时时间不可预测(时序设计不严谨时,容易产生竞争和冒险或者误码);
(3)编程信息掉电后消失,需要使用配置芯片。
在FPGA设计中,搞懂组合逻辑和时序逻辑,并将两者配合使用则非常重要。那么两者的定义是什么?组合逻辑和时序逻辑怎样被
描述呢?
(1)组合逻辑:在组合逻辑中,任意时刻的输出取决于该时刻的输入,而且和原来的电路状态无关,逻辑中不牵涉跳变沿的处理。
组合逻辑的主要描述方式有两种:1、always@(电平敏感信号列表)-> always模块中的信号必须定义为reg类型 2、assign描述的
赋值语句 -> 信号只能被定义为wire类型。
(2)时序逻辑:在时序逻辑中,任意时刻的输出不仅仅取决于该时刻的输入,而且和电路的原来状态有关。时序逻辑的主要描述
方式:always@(时钟信跳变沿或者复位信号跳变沿)-> 描述时序电路的always模块中的reg类型的信号会被综合成寄存器,时序逻
辑推荐使用非阻塞赋值。