在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5729|回复: 13

[原创] 求在FPGA中运用浮点核的成功范例

[复制链接]
发表于 2011-3-4 15:22:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在FPGA中用浮点运算,这事很少人这么干,但我还真就这么干了,但没人指点真是件不给力的事。看了各种资料和帮助文档之后,我在FPGA中嵌入的IP浮点核在Modelsim中仿真通过了,为此,偷着乐了一下。但没想到,当把程序烧到板子上的时候却出不来结果。这是怎么回事呢?
求大虾们指教啊!
发表于 2011-3-4 16:35:02 | 显示全部楼层
在FPGA中还是用定点算法吧,浮点算法是劳民伤财啊。
发表于 2011-3-4 16:40:55 | 显示全部楼层
浮点也不是很难,和32位定点也差不多,绝对可以使用。
 楼主| 发表于 2011-3-4 17:45:09 | 显示全部楼层
回复 2# hllyh


    嗯,浮点是挺费资源的。不过,只要能实现功能,用什么倒是无所谓了。
 楼主| 发表于 2011-3-4 17:47:48 | 显示全部楼层
回复 3# jackertja


    component float_divide
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    b: IN std_logic_VECTOR(31 downto 0);
    operation_nd: IN std_logic;
    operation_rfd: OUT std_logic;
    clk: IN std_logic;
    sclr: IN std_logic;
    ce: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0);
    rdy: OUT std_logic);
end component;


tofudian1 : float_divide
        port map (
            a => shuju1_d,
            b => shuju2_d,
            operation_nd => op_nd_d,
            operation_rfd => op_rfd_d,
            clk => clk,
            sclr => sclr_d,
      ce => ce_d,
            result => feng_fudian_60,
            rdy => ready_d);


process(ok_fd)
begin
if ok_fd='1' then
  ce_d<='1';
else
  ce_d<='0';
end if;
end process;
process(clk,ce_d)
begin
if ce_d='1' then
if clk'event and clk='1' then
  if count_d="10" then
   count_d<="10";
  else
   count_d<=count_d+'1';
  end if;
end if;
end if;
end process;
process(count_d)
begin
if count_d="01" then
sclr_d<='1';
else
sclr_d<='0';
end if;
end process;
process(op_rfd_d)
begin
if op_rfd_d'event and op_rfd_d='1' then
shuju1_d<=xiaoshu_fudian;
shuju2_d<=liushi;
op_nd_d<='1';
end if;
end process;
process(ready_d)
begin
if ready_d='1' then
ce_a<='1';
else
ce_a<='0';
end if;
end process;
process(ce_a,clk)
begin
if ce_a='1' then
if clk'event and clk='1' then
  if count_a="10" then
   count_a<="10";
  else
   count_a<=count_a+'1';
  end if;
end if;
end if;
end process;
process(count_a)
begin
if count_a="01" then
sclr_a<='1';
else
sclr_a<='0';
end if;
end process;
process(op_rfd_a)
begin
if op_rfd_a'event and op_rfd_a='1' then
shuju1_a<=feng_fudian_60;
shuju2_a<=du_fudian;
op_nd_a<='1';
end if;
end process;

这是用浮点核做除法中的几段代码,还请指点一二。
发表于 2011-3-4 17:55:22 | 显示全部楼层
bang ding
 楼主| 发表于 2011-3-5 08:48:23 | 显示全部楼层
回复 6# 晒太阳


    ?绑定?
 楼主| 发表于 2011-3-5 11:39:19 | 显示全部楼层
对浮点核的运用已经试验成功了,下一步准备对浮点核的重复利用,以节省有限的资源。谢谢大家的关注!
发表于 2011-3-5 12:00:16 | 显示全部楼层
回复 1# zhangtaozt


    我用过,我是把小数移位做整数处理,然后再移回来
发表于 2011-3-5 12:43:52 | 显示全部楼层
这种代码实在是无法接受o(╯□╰)o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-7-1 05:30 , Processed in 0.022172 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表