网站重新上线,多谢朋友们的关心
Feb
10
背景:在Xilinx EDK系统上如果要使用FPU,现在的选择是MicroBlaze自带的单精度FPU,给PPC405用的单精度FPU和给PPC440用的双精度FPU。也就是说,在PPC405和MicroBlaze上暂时还没有双精度FPU。
于是最近做了一个基于MicroBlaze FSL总线的“伪”双精度FPU。
FAQ:
Q1: 为什么这是一个“伪”FPU?
A1: 因为这不是一个集成的FPU,不能直接使用C语言的加减乘除直接来运算,编译器不直接支持,而是使用自带的driver来传递信息。
Q2: 它能跑多快的速度?
A2: 这不是一个最优化的FPU(速度、资源),而仅仅达到“可用”的程度。在Spartan3E上的测试结果是45MHz左右, 在Virtex4上测试结果是90MHz左右。它调用了CoreGen IP - Floating Point。IP Core已经配置为节省面积且重复使用资源。用户可以使用CoreGen自己设定Floating Point IPCore 的参数并将生成的网表替换netlists目录中的相应文件。
Q3: 我该怎样使用它?
于是最近做了一个基于MicroBlaze FSL总线的“伪”双精度FPU。
FAQ:
Q1: 为什么这是一个“伪”FPU?
A1: 因为这不是一个集成的FPU,不能直接使用C语言的加减乘除直接来运算,编译器不直接支持,而是使用自带的driver来传递信息。
Q2: 它能跑多快的速度?
A2: 这不是一个最优化的FPU(速度、资源),而仅仅达到“可用”的程度。在Spartan3E上的测试结果是45MHz左右, 在Virtex4上测试结果是90MHz左右。它调用了CoreGen IP - Floating Point。IP Core已经配置为节省面积且重复使用资源。用户可以使用CoreGen自己设定Floating Point IPCore 的参数并将生成的网表替换netlists目录中的相应文件。
Q3: 我该怎样使用它?
Nov
24
[FPU种类]
MicroBlaze FPU - MB内置,单精度,加减乘除开方比较转换
V4 PPC APU_FPU - PPC APU接口,单精度,加减乘除开方比较转换
V5 PPC APU_FPU_VIRTEX5 - PPC APU接口,单/双精度,加减乘除开方移位绝对值比较转换
[问题]
1. 怎样使用FPU
2. C语言的标准函数库都是为双精度小数写的,用了sqrt()函数还是没有用到FPU
3. 怎么检查编译出来的结果有没有使用FPU?
4. 为什么我看到dump中使用了fsqrt但是也包含了的软件函数,整个函数大概有7K长?
5. 如果是加减乘除,需要用特别的函数吗?
MicroBlaze FPU - MB内置,单精度,加减乘除开方比较转换
V4 PPC APU_FPU - PPC APU接口,单精度,加减乘除开方比较转换
V5 PPC APU_FPU_VIRTEX5 - PPC APU接口,单/双精度,加减乘除开方移位绝对值比较转换
[问题]
1. 怎样使用FPU
2. C语言的标准函数库都是为双精度小数写的,用了sqrt()函数还是没有用到FPU
3. 怎么检查编译出来的结果有没有使用FPU?
4. 为什么我看到dump中使用了fsqrt但是也包含了
5. 如果是加减乘除,需要用特别的函数吗?







