Квадратный корень с плавающей запятой ядра Vivado IP
Оглавление
1. Пример квадратного корня из числа с плавающей запятой
2. Этапы настройки ядра IP с плавающей запятой
предисловие
С непрерывным развитием производственного процесса массив программируемых логических вентилей (FPGA) становится все более и более интегрированным, и его применение становится все более и более обширным.Среди них, при обработке цифровых сигналов необходимо использовать некоторую математическую обработку IP. ядерный. Недавно я изучаю аппаратную реализацию FPGA для исследования технологии адаптивной защиты от помех в воздушном пространстве, которая неизбежно использует некоторые IP-ядра.Сегодня я кратко представлю IP-ядро с плавающей запятой in vivado, начиная с числа с плавающей запятой.Обучение
Совет:Далее текст этой статьи,все оригиналы самого автора.Написать статью не просто.Надеюсь вы прикрепите ссылку на эту статью при репосте.
1. Пример квадратного корня из числа с плавающей запятой
Чтобы облегчить анализ результатов последующего моделирования, здесь мы перечисляем пример квадратного корня из числа с плавающей запятой, Во время моделирования следующий пример непосредственно используется для моделирования, чтобы проверить правильность результата моделирования .
Пример : Если число с плавающей запятой a=32'h3EB851EC, то есть a=0,36, то =32'h3F19999A, то есть
=0,6。
2. Этапы настройки ядра IP с плавающей запятой
1. Сначала настройте интерфейс выбора операции , как показано на рисунке 1.
2. Затем настройте интерфейс Precision of Inputs , как показано на рис. 2.
3. Затем настройте интерфейс Оптимизации , как показано на рисунке 3.
4. Наконец, настройте интерфейс параметров интерфейса , как показано на рисунке 4.
После того, как вышеуказанные 4 интерфейса настроены, вы можете нажать кнопку ОК в правом нижнем углу, чтобы сгенерировать прописывающее IP-ядро .
3. Моделирование
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
4. Анализ результатов моделирования
Результаты моделирования показаны на рисунке 5. Сравнивая приведенные выше примеры квадратного корня из числа с плавающей запятой, мы видим, что модуль успешно реализовал квадратный корень из числа с плавающей запятой.
Подведем итог
На этот раз я представил, как использовать ядро IP с плавающей запятой в vivado для реализации квадратного корня из чисел с плавающей запятой.