当前位置:网站首页>Vivado IP核之浮点数开方 Floating-point
Vivado IP核之浮点数开方 Floating-point
2022-07-29 05:25:00 【迎风打盹儿】
Vivado IP核之浮点数开方 Floating-point
前言
随着制造工艺的不断发展,现场可编程逻辑门阵列(FPGA)的集成度越来越高,应用也越来越广,其中在对数字信号进行处理时必然要用到一些数学处理类的IP核。最近正在研究空域自适应抗干扰技术研究的FPGA硬件实现,其中不免要用到一些IP核,今天就从浮点数开方出发简单介绍一下vivado当中的Floating-point这个IP核吧,希望对各位的学习能起到一定的帮助作用。
提示:以下是本篇文章正文内容,均为作者本人原创,写文章实属不易,希望各位在转载时附上本文链接。
一、浮点数开方示例
为了后面仿真便于分析结果,在此我们就列举浮点数开方的例子,仿真时直接用下面的例子进行仿真,来验证仿真结果是否正确。
example:设浮点数a=32'h3EB851EC,即a=0.36,则
=32'h3F19999A,即
=0.6。
二、Floating-point IP核配置步骤
1.首先配置Operation Selection界面,如图1所示。

2.其次配置Precision of Inputs界面,如图2所示。

3.然后配置Optimizations界面,如图3所示。

4.最后配置Interface Options界面,如图4所示。

以上4个界面都配置完成后即可点击右下角OK按钮生成开方IP核。
三、仿真
1.顶层代码
建立一个顶层模块,命名为float_sqrt,用来例化刚才生成的IP核。
代码如下:
`timescale 1ns / 1ps
//
// Company: cq university
// Engineer: clg
// Create Date: 2022/07/28 10:26:26
// Design Name:
// Module Name: float_sqrt
// Project Name:
// Target Devices:
// Tool Versions: 2017.4
// Description:
// Dependencies:
// Revision:1.0
// Revision 0.01 - File Created
// Additional Comments:
//
module float_sqrt(
input clk, //输入时钟信号
input a_valid, //输入数据有效信号
input [31 : 0] a_data, //输入数据
output wire re_valid, //输出结果有效信号
output wire [31 : 0] re_data //输出开方结果
);
float_sqrt_ip u1_float_sqrt_ip ( //例化IP核
.aclk(clk),
.s_axis_a_tvalid(a_valid),
.s_axis_a_tdata(a_data),
.m_axis_result_tvalid(re_valid),
.m_axis_result_tdata(re_data)
);
endmodule
2.仿真代码
建立一个仿真模块,命名为float_sqrt_tb,用来仿真刚才顶层模块例化的IP核。
代码如下:
`timescale 1ns / 1ps
//
// Company: cq university
// Engineer: clg
// Create Date: 2022/07/28 10:34:15
// Design Name:
// Module Name: float_sqrt_tb
// Project Name:
// Target Devices:
// Tool Versions: 2017.4
// Description:
// Dependencies:
// Revision:1.0
// Revision 0.01 - File Created
// Additional Comments:
//
module float_sqrt_tb();
reg clk;
reg a_valid;
reg [31:0] a_data;
wire re_valid;
wire [31:0] re_data;
float_sqrt u1_float_sqrt(
.clk(clk),
.a_valid(a_valid),
.a_data(a_data),
.re_valid(re_valid),
.re_data(re_data)
);
always #5 clk=~clk;
initial begin
clk=1'b0;
#15;a_valid=1'b1;
a_data=32'h3EB851EC; //3.6
#280;a_valid=1'b0;
end
endmodule
四、仿真结果分析
仿真结果如图5所示,对比前面所列举浮点数开方的例子,可知该模块成功实现了浮点数的开方。

总结
本次介绍了怎么使用vivado中的Floating-point IP核实现浮点数的开方。
边栏推荐
- [beauty of software engineering - column notes] 19 | as a programmer, you should have product awareness
- 计算机大厂面试题
- LeetCode #283.移动零
- UE5 纹理系统讲解及常见问题设置及解决方案
- 爬虫Requests库的一些简单用法
- Ue5 landscape conversion Nanite conversion method and it does not support the use method of starting dynamic mesh with lumen and lumen
- Official tutorial redshift 05 system parameter detailed explanation
- MySql-面试题
- 【Leetcode刷题】数组1——双指针
- [beauty of software engineering - column notes] 13 | how to break the rhythm of writing code during daytime meetings and overtime?
猜你喜欢

Eight sorts --------- quick sort

2022暑初二信息竞赛学习成果分享2

官方教程 Redshift 07 Instances and Proxy

LeetCode #19.删除链表的倒数第N个结点

Official tutorial redshift 07 instances and proxy

ML10 self study notes SVM

Unity-默认渲染管线-刻晴卡渲shader
![[beauty of software engineering - column notes] 20 | how to deal with the headache of requirement change?](/img/0c/71557fa00accb2e6d30c13dc7f8efb.png)
[beauty of software engineering - column notes] 20 | how to deal with the headache of requirement change?

UE4 高光官方参考值

Official tutorial redshift 09 camera
随机推荐
Install MySQL from scratch (MySQL installation document - unzipped version)
LeetCode #189.轮转数组
文件系统一
LeetCode #876.链表的中间结点
Official tutorial redshift 07 instances and proxy
关于时间复杂度的个人看法
crawl笔记
LeetCode #977.有序数组的平方
V-ray 5 ACEScg 工作流程设置
虹科分享 | 带你全面了解“CAN总线错误”(四)——在实践中生产和记录CAN错误
计算机网络面试题
虹科分享 | 测试与验证复杂的FPGA设计(2)——如何在IP核中执行面向全局的仿真
Eight sorts --------- quick sort
JVM内存结构
LeetCode #19.删除链表的倒数第N个结点
UE4 高光官方参考值
Encapsulation - Super keyword
leetcode---技巧
2022暑初二信息竞赛学习成果分享2
clickhouse 导入CSV失败 不报错但是无数据