FPGA(Field-Programmable Gate Array):现场可编辑门阵列,基于“查找表”的CLB阵列,与CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)在电路结构上有本质差异,但这个差异在编程时主要是通过使用不同的EDA工具体现,二者都可以使用verilog语言。
可编程逻辑器件(Programmable Logic Device,PLD):PLD内部的电路结构是可以通过写入编程数据来设置的;写入PLD的编程数据还可以擦除重写;
与固定的集成电路(如单片机)相比,PLD的逻辑功能是可以有使用者通过编程来设定,不是固定不变的。
程序烧录:更像是单纯地传输数据,而不能改变硬件的逻辑功能,例如一块单片机有一组专门用于LCD显示的I/O,那么这组I/O所固定的逻辑功能便是用于LCD的,而不是能够让它拥有串口的功能(我们通过编写烧录程序仅能够控制这组I/O如何工作于LCD,即工作方式(指令),而不能改变其工作对象)。同理,如果一块单片机仅有四个串口,那么便不可能将别的硬件部分扩展为串口(这与端口复用与重映射有很大的区别。一个GPIO作为内置外设的功能引脚被使用的过程叫做复用;通过重映射寄存器的发过誓,把某个外设的引脚映射到其他端口的行为叫做重映射,重映射的I/O都是厂家设置好的,不能自己更改)。
端口的重映射只能够将原本存在的逻辑功能模块通过不同的引脚对外设输出接收,而不能够增加、减少、改变逻辑功能。可以参考:
stm32端口复用和重映射_williamgavin的博客-CSDN博客
PLD内部的电路结构的设置:与固定的集成电路(如单片机)相比,它允许用户自行修改内部连接的集成电路,即可以让为LCD工作的I/O完全变成串口。
(举例可能有细节上的问题,欢迎提供更多建议)
HDL(硬件描述语言,Hardware Description Language):用于描述数字电路结构和功能的语言,
HDL所描述的电路可以通过综合工具将其转换为门级电路网表,然后将其与某种工艺的基本元件逐一对应起来,再通过布局布线工具转换为电路布线结构
Verilog和C的区别:Verilog是硬件描述语言,在编译下载到FPGA后,会生成电路,因为电路是并行的(各电路模块根据所分配的不同时钟同时开始运行),所以Verilog是并行运行的;
而C语言是软件编程语言,编译下载到单片机之后是存储器中的一组指令。而单片机处理软件指令需要取指、译码、执行,这个过程是串行执行的。
由于FPGA是全并行处理的所以处理速度非常快,但在处理一些串行逻辑时,会没有单片机好使
IC(Integrated Circuit,集成电路):理解成芯片