ic设计可可分全定制,半设计定制两种,用fpga设计属于什么一种半订制ic设计。具体来说,用fpga设计像是不需要决定门极电路以下的问题,而全定制ic设计则必须踏入到版图。
门控时钟的应用,在fpga中不使用门控时钟是太不推荐推荐的一件事情。asic中可是也很赞成可以使用,但是也好像没什么大关系
输出的buffer和门,fpga中只怕没有这些器件,对延时的估计和门的应用还得原先判断了
memory,fpga和asic中的memory的应用有着不大的不同,fpga中有的是内置的或是是用lut拼出声的。asic是用主要注意是厂商定义的,大小更随意地一些(和有些fpga两者相比)
atch的使用,fpga中基本是别用latch,asic中就看不需要和电脑设计的能力了
dsp或者其他计算模块的全局函数。很多fpga中能提供了dsp,乘法器等等,当然了有空间的话也可以不自己写。asic中基本上都要自己电脑设计的。真不知道有没有厂商提供给这些。
实现soc的设计,是对模拟部分的应用,fpga上做数模混合设计仅有最多的功能。asic上就再说了。
pll等的时钟处理,fpga上也需要提供时钟全面处理的dcm,dll,pll等,只不过远没有asic的强大,所以在写code的时候对时钟就要想好他们的多少
速度的差别,一般来说同时代码在两个地方实现方法的速度是完全不同的。在具体应用的时候要注意一点。
主流的数字乘法器是booth乘法器,网上有booth乘法器的hdl电路具体解释代码,你也可以去看下它的原理。
简单理解就是仿真的笔算中乘数和被乘数各为(0,0)、(0,1)、(1,0)、(1,1)这四种情况下运算结果不出来的中间值和规律,接着遵循乘数的位置进行一定会次数的左变形操作,之后分类汇总乘积。
现代cpu目的是系统优化,还会核心中lut直接输入表,也就是准备好把8bit以内所有乘数很有可能的情况(2^8256)计算不出来然后把存储在cpu内部的一个普通的rom里面,要算出的时候然后查找指定位置上的值是多少,那结果就是多少。
这个查看表如果不是相当大的情况下,计算8bit或是16bit以内的乘法很有可能只要一个周期,只不过本质上应该是lut查表,lut表通常非常小所以才寻址和ftp连接速度极快,才能实现单周期乘法。
也有一种思路是依据什么fpga的logicelement规格,厂商依据什么完全不同芯片器件会制定按的“成本模型”,另外根据不同的乘数,使用差别的综合考方案。
或者在数字电路中如果没有要计算出n*6,fpga综合考器会据目标器件的成本模型你选综合成n2nn这种逻辑单元或则n2n1哪怕更多方案,再说选择哪种方案,可能会依据什么成本模型来改变,也就是算出倒底是(左弯曲变形)十分节省时间logicelement还是-(减法,也就是补码加法)更加浪费logicelement来你选综合方案,而通常也是torque比adder的电路面积会更小,所以我后者方案应用一些。