预处理步骤如下:
(1)对于测量数据P,他是由CCD采集并经10位A/D转换,使测量数据转换为10位二进制整数,然后经过数据预处理模块,把数据处理转化为IEEE标准754的二进制单精度浮点数,输入到外部寄存器P等待调用。
(2)对于投影矩阵W,如果图像大小一定,则投影矩阵W也是固定的,可先由Matlab仿真生成并处理转化为IEEE标准754的二进制单精度浮点数,然后存到W寄存器,等待调用。
在此只讨论由FPGA处理的部分,即只讨论对测量数据P的预处理,而对于W矩阵的值则可由Matlab编程处理完成,在此不再赘述。
流程图如图2所示。
![]() |
对于测量值P,他是由面阵CCD采集,并经有自制的10位A/D转换得来的二进制整数,根据其数据特点,可以采用移位,然后按规律重组就能将其变为IEEE标准754的二进制单精度浮点数。
5.1预处理P的模块
测量数据P为二进制整数,将其转化为IEEE标准754形式,只需要先对数据进行检测,若数据为正则符号位S=0,否则S=1;然后找出为"1"的最高位,设为"1"的最高位为第L位,则保留P[L-1:0]作为IEEE标准754的尾数M的高位,然后在其后补"0"至23位,即得尾数M;而L的值即为指数e,则E=e+127。假设P[9:0]=0001011011,则为"1"的最高位为P[6],保留P[5:0]作为尾数M[22:0]的高位,然后在后面补"0",即得尾数M,在此M=01101100000000000000000,而指数e为6,则E[7:0]的大小为E=e+127,在此即为133,即为二进制的10000101,此处为S=0,则P转化后的值为Pout[31:0]=01000010101101100000000000000000,仿真结果如图3所示。
显然仿真结果是正确的。
按照IEEE标准754形式,把测量所得数据P和投影矩阵W的值预处理转化为IEEE标准754形式以后,即可进行运算。
![]() |
两浮点数相加,设两个IEEE标准754单精度浮点数分别为01000000011000000000000000000000和01000000010000000000000000000000,即为十进制的3.5和3,调用浮点加法IP核,仿真波形图如图4所示。
![]() |
5.3 浮点乘法器的实现
两浮点数相乘,设两数均为01000000011000000000000000000000,即为十进制的3.5,调用浮点数乘法IP核,进行仿真。仿真结果如图5所示。
由仿真波形图可见两数相乘结果为01000001010001000000000000000000,为十进制数的12.25,即结果是正确的。
责任编辑:cjb |
最新文章更多
推荐文章更多
热点文章更多 |






