返回信息流本人fpga新手一枚,刚刚接触VerilogHDL语言,在写一些简单程序经常会遇到数值运算的问题,问题如下:
1.fpga中是如何处理除法的结果的?是直接取整还是会精确到小数位?如果是精确到小数位是如何计算的?
2.fpga中对小数是如何处理的?百度上说是先将小数乘以2的N次方换算成整数,然后计算后再除以2的N次方,是不是除了这种方法没有其他的方法?(总感觉这种方法麻烦而且误差较大)
3.VerilogHDL中使用除法运算符/时是不是除数必须是常数?
4.VerilogHDL中如何实现初始化操作?(刚开始接触以为是initial,结果后来才发现这是电路仿真用的,实际的程序不一定支持,所以求问在实际电路中初始化操作是怎么实现的?)
求各位路过的大神不吝赐教!!!万分感谢!
这是一条镜像帖。来源:北邮人论坛 / circuit / #25817同步于 2015/6/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
[新手求助][VerilogHDL]fpga中数值运算问题
happy3014
2015/6/29镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
楼主理解Verilog的方式有问题 verilog与C语言等程序语言不通,他描述的不是一个过程而是描述的一个电路,一般用来写RTL电路的只是Verilog的一个可综合子集。比如initial就不属于这个子集,因为不存在一个电路能够完成“初始化”这个功能(类似功能应该使用寄存器的复位功能实现)。另外,可综合的Verilog里,一般不会使用乘法、除法、取余等运算,一般只使用加法和减法,因为对于其他运算来说,需要使用很大的电路来完成,难以在设计初期估算时钟频率。如果要使用乘除法,对于乘以固定系数的功能,可以优先使用移位加和的方式实现,如果是两个非固定的数据相乘,应该使用FPGA中的专用DSP块来完成,以节省LE和提高性能。
另外Verilog不存在小数的概念,请整型化之后再做运算,或者自行实现小数乘除法单元。
哦。我说查资料时这些方面的我很难看懂,原来是这样。万分感谢!
【 在 cordialz 的大作中提到: 】
: 楼主理解Verilog的方式有问题 verilog与C语言等程序语言不通,他描述的不是一个过程而是描述的一个电路,一般用来写RTL电路的只是Verilog的一个可综合子集。比如initial就不属于这个子集,因为不存在一个电路能够完成“初始化”这个功能(类似功能应该使用寄存器的复位功能实现)。另外,可综合的Verilog里,一般不会使用乘法、除法、取余等运算,一般只使用加法和减法,因为对于其他运算来说,需要使用很大的电路来完成,难以在设计初期估算时钟频率。如果要使用乘除法,对于乘以固定系数的功能,可以优先使用移位加和的方式实现,如果是两个非固定的数据相乘,应该使用FPGA中的专用DSP块来完成,以节省LE和提高性能。
: 另外Verilog不存在小数的概念,请整型化之后再做运算,或者自行实现小数乘除法单元。