FPGA和单片机什么区别?
写给初学者的小blog(描述不对的,请评论区指出谢谢):
单片机应该是大家最开始接触的小soc,通过编写c/汇编,可以实现简单的逻辑控制功能;
fpga,通过编写verilog 描述相关的逻辑,或者利用软件中自带的库,搭建简单的逻辑电路,实现简单的控制;
Verilog 简单介绍
在这里简单介绍下verilog,硬件描述语言,其实就是写 数字电路,通过综合工具映射成网表,之后经过工具软件转化,烧录到fpga单板上;fpga是硬件电路,有并行,速度快等特点,是可配置,可编程的可重构的硬件
首先一个简单的verilog语句块:
wire a, b, c;
reg d;
always@(posedge clk)
if(a==1'b1)
d<= b+c;
else
d<= c;
定义了3个1bit的线,1bit的register,在上升沿触发,其实综合后是一个触发器,在a是高电平1时候,把加法器(b+c)的结果,延时1个clk ,给d;其他情况,即a 不是高电平时候,把c信号线,延时一拍给d;简单的架构图如下;
在数字芯片领域,如果这么写,最后在实现时候,就是加法器,触发器,寄存器等结构,其他语句就是分支选择器,选通器,锁存器等;
fpga:
fpga呢?由 可编程逻辑单元(PLU)、可编程互连资源(PIR)、(存储器、时钟管理单元、高速收发器)等外围电路组成;
主要是 查找表结构+可编程的互连单元;
两个具体例子:
查找表是类似 ram 结构可读 写 内容的存储单元,
比如 verilog描述 c = a&b ;asic电路上是一个与门;
fpga查找表中,不同地址4个条目依次存储 0,0,0,1;如果a和b 有一个是0 则查找出0,两个都为1,则查找出1;fpga中不一定是一个与门
即查找表存储结果ab对应地址,00,01,01对应数据0存储条目,11对应1数据存储条目;
可配置的LUT如下:
ab输入作为查找表的地址 | c作为查询结果 可以任意配置 |
---|---|
00 | 0 |
01 | 0 |
10 | 0 |
11 | 1 |
又如:c= a^b ,电路上一个异或门;
地址依次升高,查找表可以配置(0,1,1,0);
对应 a b查找地址依次为(00,01,10,11);
此时,可以看出,通过一个深度4,宽度1的查找表,即可实现 2输入的,与,异或,同或,或等任意逻辑。此表可以配置,通过配置查找表的不同条目存储的数据内容,对外呈现出不同的数字逻辑基本单元;
这便是fpga可编程的原因;fpga工具软件会对verilog描述的电路完成复杂的映射,时序优化,布局布线。
也可以看出,fpga可编程性是牺牲了基本的逻辑单元的面积的,本来一个与门实现的功能,要用一个查找表;所以一个专用数字芯片的功能,映射到fpga上需要的资源会变大很多;文章来源:https://www.toymoban.com/news/detail-793127.html
单片机:
单片机就比较简单了,在固定的电路上,通过c/Assembly 语言,映射成二进制文件,配置到写好的电路的寄存器,ram中;cpu自动取指令,解码,译码,执行指令,结合外围电路等,实现对外器件的控制;
当然,如果了解cpu结构,接口技术,常用的协议等,用一个复杂点的fpga单板,配合良好的编码风格,可以给fpga编码,让fpga像单片机那样工作,
也就是说fpga通过使用硬件描述语言设计可以作为单片机使用文章来源地址https://www.toymoban.com/news/detail-793127.html
到了这里,关于FPGA和单片机什么区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!