查看: 2830|回复: 1

A Pseudo Double Precision FPU based on FSL

[复制链接]
  • TA的每日心情
    开心
    2014-5-14 13:12
  • 签到天数: 180 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-1-25 10:52:42 | 显示全部楼层 |阅读模式
    分享到:

    背景:在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: 我该怎样使用它?
    A3: Pesudo_FPU_DP_v1_00 有两种工作模式,分别是FSL的同步时钟模式和异步时钟模式。
    使用时,首先需要将pcores和drivers目录中的文件copy到工程文件夹的相应目录。
    - 在同步时钟模式时,只需要使用Hardware –> Configure Co-processor,在弹出菜单将IP添加到左边空格即可。此时,pesudo_fpu_dp core 工作在sys_clk_s的时钟频率下。
    - 在异步时钟模式时,用户需要

    • 手动创建一个合适的时钟(通过Clock Generator或从外部引入)
    • 将它连接到 pesudo_fpu_dp 的 async_clk 端口和 microblaze_0_to_pesudo_fpu_dp_0 的 FSL_S_CLK  和 pesudo_fpu_dp_0_to_microblaze_0 的FSL_S_CLK 端口
    • 连接 microblaze_0_to_pesudo_fpu_dp_0 的 FSL_S_CLK  和 pesudo_fpu_dp_0_to_microblaze_0 的 FSL_S_CLK 端口到系统时钟 sys_clk_s
    • 设置 pesudo_fpu_dp_0 、 microblaze_0_to_pesudo_fpu_dp_0  和 pesudo_fpu_dp_0_to_microblaze_0 的属性 C_ASYNC_CLKS = 1
    • 设置 microblaze_0_to_pesudo_fpu_dp_0 的属性 C_READ_CLOCK_PERIOD 为 ASYNC_CLK 的周期(单位:ps) 和 pesudo_fpu_dp_0_to_microblaze_0 的属性 C_READ_CLOCK_PERIOD 为 sys_clk_s 的周期(单位:ps)

    Q4: 软件中该怎样使用它?
    A4: pesudo_fpu_dp是一个“伪”FPU,它不提供编译器的支持。因此使用这个IP时,需要使用它自定的driver函数。他们是:

    void pesudo_fpu_sqrt(double* source, double* result);
    • void pesudo_fpu_add(double* source1, double* source2, double* result)
    • void pesudo_fpu_sub(double* source1, double* source2, double* result);
    • void pesudo_fpu_mult(double* source1, double* source2, double* result);
    • void pesudo_fpu_div(double* source1, double* source2, double* result);


    所有操作数均使用指针传递数据。
    软件例程可以参考 drivers\pesudo_fpu_dp_v1_00_a\examples\pesudo_fpu_dp_v2_1_0_app.c

    Q5: 我可以免费使用它吗?
    是的。这个IP可以免费使用、修改和分发。但是请保留原文件中所有的版权声明。本人将不提供后续技术支持。本人对使用本IP所产生的影响不负任何责任。

    Q6: 哪里可以下载?
    pseudo_fpu_dp_v1_00_a

    Q7: 如果我不想要双精度FPU,它可以用来做啥?
    A7: 这个IP还可以用来作为学习写FSL IP的起点和模板,也可以用来学习怎样使用bbd文件。


    pesudo_fpu_dp_v1_00_a.zip

    1.84 MB, 下载次数: 1

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-1-25 18:30:17 | 显示全部楼层
    沙发,好多英文,好晕啊   
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 09:16 , Processed in 0.125015 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.