原创 矩阵系列之开篇《浮点转定点》

2016-4-15 09:01 2941 26 28 分类: FPGA/CPLD

        由于笔者马上就要毕业了,想到公司里面锻炼一下,最近的一个多月都在公司实习。而公司也没有跟我客气,上来就叫我做算法,当然是一些已经成熟的技术,可查找的资料比较多。比如:矩阵求逆。由于公司的保密性质,我以下写的内容都是可以公开,可以查到的,而我的工作是将这些资料做一些整合,加上我的理解,让大家更容易读懂。

        刚接到老大说要做矩阵求逆,内心是没什么波澜的,因为没接触过,不懂而无畏(O(∩_∩)O哈哈~) 。接下来上网查一些资料,弄清楚矩阵求逆的整体架构,包括哪些部分(包括矩阵分解、三角矩阵求逆、矩阵乘法三个部分),心中有个整体的把握之后,开始着手矩阵乘法(选它是因为矩阵乘法的资料最多,觉得是个比较好的突破口)。看了一天资料,第二天开始设计结构(结构设计是最难的,这个是论文里面设计好的,好在矩阵运算的大部分的结构设计都可以找的到),编程加仿真,ok。元旦三天假期回来开始矩阵分解,并不像矩阵乘法那样顺利,两三天过去了,仍然没有进展,内心是有点着急,开始求助于各个FPGA群,希望能从经验丰富的大牛们那里得到些灵感,而只得到了“你还太年轻了”的回答(原因是对方觉得一个月的时间绝对做不出,想当年他工作的时候还做了一个多月,而基于保密性,不能提供给我帮助)。不知道大家是不是这种,你越是说不可能,我就越要证明给你看。周末跑去学校借了几本书,从头开始研究脉动阵列(脉动阵列是矩阵运算的关键,以后会讲到),论文看了十几篇,终于把矩阵分解做了出来。由于这段时间的研究打下的基础,没多久,整个矩阵求逆也顺利的得到了。。内心还是有些小兴奋的。
 总结一下,我想说的是1.“基础一个要打牢,做事要踏踏实实的准没错”2.“不逼自己一把,你不会知道你有多大的潜力”。上面那些讲的是我的学习经历,大家可以看看,也可以当废话略过。
         接下来进入正题,浮点转定点是个比较基础的知识点吧,所以作为开篇,简单的举几个小例子,通过例子,相信大家都能掌握它。
简单说明一下,浮点包括 符号位|指数位|小数位。浮点的类型包括 单精度浮点数|双精度浮点数。这里用到的是单精度浮点数。单精度浮点数:1位符号位,8位指数位,23位尾数位。也有说是24位尾数位,这里笔者认为这样划分,更便于说明(我的地盘听我的,嘿嘿)。
 浮点转定点的步骤如下:a)将浮点数划分 符号位|指数位|小数位;
     b)计算指数位与偏差位的值;单精度浮点数的偏差值固定为127.
                        c)计算并得到定点数。
 
   看例子
       例1:

A = 01000000.010000000000000000000000

划分如下:0 10000000 10000000000000000000000

 

符号位=0,即为正

指数位=128,偏差值=127,指数位-偏差位=1

尾数位为意味着实际尾数为1.1,包括小数点前面隐藏的1

 

所以实际的实数为 +1.1*2^1=(2^1 + 2^-1*2^1) = 3

 

再举个例子,例子2

B = 01000000.101000000000000000000000

划分如下:0 10000001 01000000000000000000000

 

符号位=0,即为正

指数位=129,偏差值=127,指数位-偏差位=2

尾数位为01 意味着实际尾数为1.01,包括小数点前面隐藏的1

 

所以实际的实数为 +1.01*2^2=(2^2 + 2^-2*2^2) = 5

 

到了这里,相信大家基本掌握了单精度浮点转定点的方法,接下来的两篇计划介绍矩阵乘法以及LU矩阵分解。由于保密性,里面的内容都是可以公开的。

连接到下一篇《矩阵系列之矩阵乘法

 

 

 

 

 

 

 

 

作者: 洋仔, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1854387.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论2条评论)

登录后参与讨论

83642879_827020636 2016-4-17 20:24

谢谢你,为了你这句话我也会努力的

用户1831675 2016-4-16 22:34

因为关注了你的博客,每次邮件提醒你有了更新,都会来看看你又写的新内容,感觉你真的是一个踏实勤奋,积极向上的人。加油。
相关推荐阅读
洋仔 2023-03-07 19:51
时钟约束小练习
400m时钟使用sigma_delta算法产生(a)m的时钟使能clk_en,用来平滑156m时钟带来的vld(vld是有缺口的),然后使用400m时钟与clk_en进行时钟的2分频,产生clk_b,...
洋仔 2022-07-05 16:23
PRBS码型生成器&验证器结构
1.生成器结构2.验证器结构        PRBS Error :高电平有效,代表出错...
洋仔 2022-01-12 11:15
基于vcs+uvm+xilinx ip的仿真平台的半自动化搭建
1. 总体概述1.1软件环境   系         统:ubuntu 18.04&nbs...
洋仔 2021-12-24 09:35
Vivado仿真UVM
1.修改仿真配置在Settings->Simulation->1.1Target simulator为默认配置Vivado Simulator1.2在以下位置修改配置Compliation->xsim...
洋仔 2021-12-23 17:30
Vivado调用VCS仿真
1.编译仿真库Tools->Compile Simulation Libraries在Simulator executable path中添加vcs 仿真器可执行文件的位置2.修改仿真配置在Setti...
洋仔 2021-07-06 15:40
Vivado的一些tcl命令记录(待补充)
1.Report Clock Networks  report_clock_networks -name {network_1}2.分析设计中逻辑级数的分布  report_des...
我要评论
2
26
关闭 站长推荐上一条 /2 下一条