Квадратный корень с плавающей запятой ядра Vivado IP

Квадратный корень с плавающей запятой ядра Vivado IP


предисловие

        С непрерывным развитием производственного процесса массив программируемых логических вентилей (FPGA) становится все более и более интегрированным, и его применение становится все более и более обширным.Среди них, при обработке цифровых сигналов необходимо использовать некоторую математическую обработку IP. ядерный. Недавно я изучаю аппаратную реализацию FPGA для исследования технологии адаптивной защиты от помех в воздушном пространстве, которая неизбежно использует некоторые IP-ядра.Сегодня я кратко представлю IP-ядро с плавающей запятой in vivado, начиная с числа с плавающей запятой.Обучение


Совет:Далее текст этой статьи,все оригиналы самого автора.Написать статью не просто.Надеюсь вы прикрепите ссылку на эту статью при репосте.

1. Пример квадратного корня из числа с плавающей запятой

        Чтобы облегчить анализ результатов последующего моделирования, здесь мы перечисляем пример квадратного корня из числа с плавающей запятой, Во время моделирования следующий пример непосредственно используется для моделирования, чтобы проверить правильность результата моделирования .

        Пример : Если число с плавающей запятой a=32'h3EB851EC, то есть a=0,36, то \sqrt{а}=32'h3F19999A, то есть\sqrt{а}

=0,6。 

2. Этапы настройки ядра IP с плавающей запятой

        1. Сначала настройте интерфейс выбора операции , как показано на рисунке 1.

Рис. 1 Конфигурация интерфейса выбора операции

        2. Затем настройте интерфейс Precision of Inputs , как показано на рис. 2.

Рис. 2 Конфигурация интерфейса Precision of Inputs

        3. Затем настройте интерфейс Оптимизации , как показано на рисунке 3.

Рис. 3  Настройка интерфейса Оптимизации  

         4. Наконец, настройте интерфейс параметров интерфейса , как показано на рисунке 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. Сравнивая приведенные выше примеры квадратного корня из числа с плавающей запятой, мы видим, что модуль успешно реализовал квадратный корень из числа с плавающей запятой.

Рисунок 5 Результаты моделирования

 

Подведем итог

На этот раз я представил, как использовать ядро ​​IP с плавающей запятой в vivado для реализации квадратного корня из чисел с плавающей запятой.

Supongo que te gusta

Origin blog.csdn.net/m0_66360845/article/details/126031633
Recomendado
Clasificación