FPGA和MCU到底是干啥用的

FPGA和MCU到底是干啥用的,第1张

dsp主要用做运算,如语音,图像等信号的运算处理,但基本不用做控制。

mcu,fpga,arm主要用做控制,mcu低价低功耗,但门限很少,结构简单,不能实现复杂控制。

arm控制能力较强,但运算能力相对较弱。因此现在很多手持设备是用arm+dsp来实现的,就是所谓的“双核心”。

fpga可做复杂的逻辑控制,功能很强大。

C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对 *** 作系统和系统使用程序以及需要对硬件进行 *** 作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行 *** 作, 而这三者是计算机最基本的工作单元。

运算符丰富

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成电路)的速度要慢,实现同样的功能比ASIC电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。

你可以试着用FPGA里面的软核去实现MCU的功能(比如Nois软核),像你如果要测量距离,一般是需要A/D转换功能的,一般FPGA不带这个功能的,所以你要外加A/D芯片,转成数字量以后交给FPGA处理。

如果用纯硬件电路做,则需要一系列的组合电路和时序电路知识,比如你可以配置成编码器,解码器,触发器。就当成是数字电路设计用FPGA去实现而已。具体设计要看具体东西的。

目前FPGA的生产厂家主要有ALTERA,Xilinx,Actel,Lattice。

FPGA开发板在基于MCU、定制ASIC和体积庞大的电线束来实现引擎及控制电子的系统方案已发展至接近其技术和应用极限,汽车工业正面临新的设计挑战。汽车电子设计人员通过使用具有扩展温度范围的FPGA技术,能够显著提高应对多种故障的能力。

虽然许多元件供应商采用预防性的设计技术及限定方法来模拟和仿真环境影响,但是某些FPGA构架在承受扩展温度范围方面仍然具有先天优势。

Actel以反熔丝为基础的汽车器件能承受业界最高的结点温度。为设计人员的高可靠性系统带来更大的性能冗余。

1 FPGA与MCU,DSP,ARM等区别

MCU等是属于软件编程,程序是顺序执行,即使像DSP有多级流水线,但是程序总体还是顺序的。

FPGA是属于硬件编程,程序是并行执行的,可以有多个进程,同时执行不同的功能。

2 FPGA实现UART,IIC,SPI。

如果是简单的应用(比如说不用校验等等),完全可以自己写,例如下面的程序,VHDL写的,既可以作为UART发送程序(改改就是接收),也可以做SPI发送或者接收(加一个时钟)。

如果需要较完善的功能的话,建议使用IP核,往上有很多免费的UART,IIC,SPI等接口的IP核,功能及代码都给你写好了的,提供输入输出接口,方便应用。

process(Clk)

variable temp : integer range 0 to 7;

begin

if Clk'event and Clk='1' then

if Reset = '0' then

TxD <= '1';

BitCnt <= "00000";

SL<='1';

TReg<=(others=>'0');

temp:=0;

elsif Load = '0' and temp=0 then

TxD <= '1';

SL<='1';

BitCnt <= "00000";

temp:=0;

elsif Load='1' and temp=0 then

temp:=1;

elsif temp=1 then

case BitCnt is

when "00000" =>

TReg <= Addr_Data;

SL<='0';

TxD <= '0';

BitCnt <= BitCnt + 1;

temp:=1;

when "00001" | "00010" | "00011" |

"00100" | "00101" | "00110" |

"00111" | "01000" | "01001" |

"01010" | "01011" | "01100" |

"01101" | "01110" | "01111" =>

TxD <= TReg(0);

TReg <= '1' & TReg(14 downto 1);

BitCnt <= BitCnt + 1;

temp:=1;

when "10000" =>

SL<='1';

TxD <= '1';

TReg <= '1' & TReg(14 downto 1);

BitCnt <= "00000";

temp:=0;

when others => NULL;

end case;

ELSE

TXD<='1';

SL<='1';

end if;

end if;

end process;

图像,声音和视频是三个不同的嵌入式需求,其中从产品上来说,图像/视频应用以arm平台居多(视频处理的华为的海思,TI的DMx系列,大部分都是arm的内核芯片),声音处理上则dsp占主流,cuda和FPGA很少用于实际的嵌入式产品中,不过在开发设计的过程中可能是必须的平台。

cuda主要在基于深度学习的图像识别中用于训练模型,FPGA则主要用于相关IC芯片设计时的算法引擎验证平台,很少直接用于最后的嵌入式产品,因为FPGA同等性能资源相对于arm和dsp来说太贵,显卡同理。

一句话:不管什么mcu都是:通过对内部或外部某些逻辑单元,进行控制,而实现预期的某种需求的东西。

太抽象了。

换个说法: 不管ARM 还是什么mcu都是需要编程来实现动作或逻辑处理。而大部分都是对某些寄存器写1写0。 就是这么简单。

其他的我不敢说了。上面是我自己的心得。 具体的,你可以上网看看。很多论坛讲的很好。我不耽误你时间

其实对于单片机这种MCU,FPGA完全可以实现,在xilinx的ISE里面,就有microblaze一个软核的cpu,如果有钱买vertix,里面有powerPC,应该能满足你的要求。

至于像除法的这种运算,可以用查表和减法自己实现,其实现在那些开发套件上面的ip核很多,乘法器,除法器,还有小的dsp核等,免费的哦,只是是加密的,你看你到RTL代码~~

谢谢~~~~

以上就是关于FPGA和MCU到底是干啥用的全部的内容,包括:FPGA和MCU到底是干啥用的、C程序和FPGA程序、fpga如何实现单片机控制功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10112577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存