一、前言
在FPGA上进行开方运算,除了可以自己写开方算法,如上一篇文章:verilog 整数开方算法实现(逐次逼近法)。还有一种更加简单的方式就是直接调用IP核,下面就使用Xilinx官方提供的cordic IP核来实现开方运算。
二、IP核配置
module square(
input clk,
input rst_n,
input data_in_valid,
input [15:0] data_in,
output data_out_valid,
output [15:0] data_out
);
root2 u_root (
.aclk(clk),
.aresetn(rst_n),
.s_axis_cartesian_tvalid(data_in_valid),
.s_axis_cartesian_tdata(data_in),
.m_axis_dout_tvalid(data_out_valid),
.m_axis_dout_tdata(data_out)
);
endmodule
四、设计仿真
`timescale 1ns / 1ps
module tb_square;
// square Parameters
parameter PERIOD = 10;
// square Inputs
reg clk = 0 ;
reg rst_n = 0 ;
reg data_in_valid = 0 ;
reg [15:0] data_in = 0 ;
// square Outputs
wire data_out_valid ;
wire [15:0] data_out ;
initial
begin
forever #(PERIOD/2) clk=~clk;
end
initial
begin
#12 rst_n = 1;
end
square u_square (
.clk ( clk ),
.rst_n ( rst_n ),
.data_in_valid ( data_in_valid ),
.data_in ( data_in [15:0] ),
.data_out_valid ( data_out_valid ),
.data_out ( data_out [15:0] )
);
reg [4:0] cnt ;
//----------------------------------------------------------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
data_in_valid
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?