浮点数定化--altera 乘除法ip使用

1、浮点数定点化:

--浮点数例子:2.918

3.1415926---小数点不固定。转为定点数要定义小数需求多少位?整数需求多少位?

--第1步:定义。3位整数位宽,12位小数位宽,最高位为符号位1位--16位有符号定点数。【16位有符号数能表示的数值范围:-32768(1000_0000_0000_0000)~

32767】取低15位,其中3位整数位宽[14:12]--最大表示7,小数最大12位能表示多大精度?

--第2步:精度计算。小数是小于1的,将1表示成2^12=4096份(0~4095),那么最大精度就是1/4096=8/32768=0.000244140625(8表示为32768份,1表示成4096份),最大能表示的小数为(1/4096)*(2^12-1)=0.000244140625*4095=0.999755859375(多了一个零)。所以定义的定点数可以表示的范围是-8.999755859375~

7.999755859375。

--第3步:计算。2.918进行定点化:2.918/0.000244140625=11,952.128~=11952-->定点化后的2.918(四舍五入),含有0.128的误差。

3.1415926进行定点化:3.1415926/0.000244140625=12,867.9632896~=12868-->定点化后为12868(四舍五入),含有误差。逆运算回去:12868-->0011

0010 0100 0100,[14:12]位011为整数位3,[11:0]为0010 0100

0100(580)为小数位,实际表示的小数为580/4096=0.1416015625。也就是定点化后最终实际表示的数为3.1416015625--与3.1415926的确存在误差。误差为3.1415926-3.1416015625=。。。

--定点数相乘,符号位1位,整数位扩充为6位,小数位扩充为24位。
浮点结果:3.1415926*2.918=65715.8340068=9.1671672068
定点结果:12868*11952=153798336(000_1001_0010_1010_1100_0110_1100_0000),最高位为0--结果为

,整数位为00_1001即9,小数位为0010_1010_1100_0110_1100_0000即2803392,所表示的小数2803392/2^24=0.167095184326171875。定点乘法结果为9.167095184326171875,与浮点结果存在误差。

2、altera中的LPM

MULT乘法器,如果输出不加延时,那么它使用的是组合逻辑组成的硬件乘法器单元,给数据立即出结果。乘法器ip核引入时钟,可以使乘法器时序更好,芯片能跑的速度等级更高。

3、固定值乘法:a=2,3,6,8--序列  b=5,使用移位可以实现。

a=2,

b=5-->2'd2*3'd5=2'b10*3'b101=2'b10*(2^2

2^0)=2'b10<<2 2'b10<<0=10。

2'b10<<0=4'b1000

2'b10=4'b1010=4'd10。

a=3,b=5-->3*5=3<<2

3;

a=6,b=5-->6*5=6<<2

6;

4、altera器件仿真常用的几个仿真库有:

D:\Altera\quartus\eda\sim_lib路径下的220model.v 、altera_mf.v

、cycloneiii_atoms.v等文件。其中220module.v中就包含乘法器仿真用到的lpm_mult

module.可在这几个文件内查找所需要的模块。

5、a_in <= {$random} % 2; //产生0、1伪随机数
//a_in <= $random % 10; --产生-10...9的伪随机数
//a_in <= {$random} % 10; --产生0...9的伪随机数
6、写run.do文件的时候,不要把ip核的例化文件.inst文件vlog进去,否则会提示错误。
7、altera乘除法器的ip核的使用
//---------ex_mult.v--------------------------------
module ex_mult(
input wire sclk,
input wire rst_n,
input wire [7:0] in_a,
input wire [15:0] in_b,
output wire [15:0] out_rslt
);
divide_8_16 divide_8_16_inst (
.clock ( sclk ),
.denom ( in_a ),
.numer ( in_b ),
.quotient ( out_rslt),
.remain ( remain_sig ) //余数,不关心就可
);
endmodule
//-------tb_ex_mult.v--------------------------------------
`timescale 1ns/1ns
module tb_ex_mult;
reg sclk;
reg rst_n;
reg [7:0] in_a;
reg [15:0] in_b;
wire [15:0] out_rslt;
initial begin
rst_n = 0;
sclk = 0;
end 
initial begin
#40;
gen_data();
end 
always #10 sclk <= ~sclk;
ex_mult ex_mult_inst(
.sclk (sclk ),
.rst_n (rst_n ),
.in_a (in_a ),
.in_b (in_b ),
.out_rslt   (out_rslt

)

);
task gen_data();
integer i;
begin
for(i=0;i<255;i=i 1)
begin
@(posedge sclk);
in_a = {{$random} % 100};
in_b = {{$random} % 100};
end 
end 
endtask 
endmodule
//---------------------------run.do----------------------------------------
quit -sim
.main clear
vlib work 
vlog ./tb_ex_mult.v
vlog ./../design/*.v
vlog ./../quartus_prj/ipcore_dir/*.v
vlog ./altera_lib/*.v
vsim -voptargs= acc work.tb_ex_mult
add wave tb_ex_mult/ex_mult_inst/*
add wave tb_ex_mult/*
run 10us

浮点数定化--altera 乘除法ip使用FPGA学习笔记相关推荐

  1. 模块例化是怎么进行的?——FPGA学习笔记(四)

    最近在学FPGA的时候,总搞不清楚例化两个字是什么意思?什么是模块例化?各个模块例化之后怎么连接的弄得我晕头转向,今天用一个流水灯的程序探究了一下. 首先我们看最底层的三个模块程序: module s ...

  2. TCP/IP详解学习笔记-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  3. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

    TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...

  4. FPGA学习笔记(十二)IP核之FIFO的学习总结

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

  5. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  6. TCP/IP详解学习笔记

    [TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...

  7. TCP/IP详解学习笔记 这位仁兄写得太好了.

    http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样 ...

  8. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

    FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程 很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序 ...

  9. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

最新文章

  1. 使用 Matplotlib 这么久,竟不知道数据可以动起来
  2. 利用gulp对项目html,js,css,图片进行压缩
  3. linux java 获取路径怎么写_linux中java获取路径的实例代码
  4. python——类和对象之__dict__属性的使用
  5. 全球农业发展中国方案-国际农民丰收节贸易会:榜样力量
  6. 批处理文件将多台连接的手机安装同一个APP
  7. 交换两个局部变量Integer的值
  8. Linux后台进程(和jobs、bg、fg)
  9. Laravel入门:MVC框架
  10. cvs数据导入工具 oracle_oracle数据库的导入导出
  11. 为什么AI需要的是角色扮演,而不是象棋和围棋?
  12. 计算机组成和计算机体系结构
  13. Synonyms——中文近义词工具【含源码解析与改进】
  14. MindSpore: CV.Rescale(rescale,shift)中参数rescale和shift的含义?
  15. 初创企业适用的邮件群发软件
  16. 计算机基础使用操作培训ppt,计算机基础操作培训课件ppt课件.ppt
  17. 解决sql update 1292 - Truncated incorrect DOUBLE value:
  18. 翻译1The high-volume return premium(后附读后感)(图表上传不了)
  19. 花生壳,内网穿透下的速度测试,花生壳配置和 机制理解
  20. 计算机专业春考难不难,春考很难录取吗

热门文章

  1. Apache Tomcat安全漏洞列表及整改建议合集
  2. 从PHP 5到PHP 7性能全评测(含未发布的JIT版PHP 8对比)
  3. SourceTree使用方法总结
  4. 虾皮如何注册店铺_Shopee(虾皮购物)入驻申请流程?
  5. 22.【终结篇】poco/airtest+pytest+allure+jenkins框架篇
  6. 这是一个浮躁的时代(程序员)
  7. HBUilder X 使用方法
  8. 华硕计算机硬件信息,华硕EeePC T101MT配置信息及散热
  9. CentOS7 忘记登陆密码 修改root密码
  10. 手机备忘录怎么设置提醒 备忘录提醒设置方法