西西河

主题:【原创】新时代新潮流WebOS 【1】 -- 邓侃

共:💬594 🌺1902 新:
全看分页树展 · 主题 跟帖
家园 CPLD

一般用于编写简单的逻辑,比如,译码电路。cpld的逻辑功能是用户自行设定的。这个编程过程一般是用户首先用vhdl/verilog语言或原理图编写“源代码”,然后用厂商提供的工具把代码编译成二进制image,然后烧写进cpld。

cpld也可以在运行的时候动态修改,但一般不会这么用,因为cpld里面一般用flash存储image,flash的写入次数是有限的。

如果需要运行时刻动态加载,可以使用fpga,二者内部结构不同,但功能基本相同。主要的不同点是,cpld一般密度较小,用来实现不同芯片之间的"粘合",而fpga可以用来实现复杂的功能,如usb, uart,codec等等。

手机CPU因为体积的原因,很多把cpu、flash、ram封装在一起,形成一个多功能芯片,也有把flash和ram单独封装在一起的。

能做软件"加速"功能的一般是FPGA,fpga内部有很多乘法器,ram,很容易实现并行运算,比如fft这类需要数组乘法的东西,用fgpa可以在几个时钟周期内完成一个大的数组运算。

软件访问fpga的加速功能,通常要把fpga挂在cpu的总线上,模拟成一片ram,这样软件就可以把数据写到fpga里面,完成运算后再读出来。

codec不知道你说的是哪种东西,软件的codec通常说的是音频编码格式的转换,硬件的codec一般是adc/dac,嵌入式cpu通常都内置音频的codec。也可以在fpga里面实现,但是量产产品基于成本考虑一般不用fpga做复杂的逻辑。

成本上来说,定制芯片(如S3C2440)通常叫做ASIC,制造成本低,设计成本高,适合大量生产的产品,而cpld/fpga设计成本低,制造成本高,适合量比较小的东西。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河