Интегратор – это электронный узел, выполняющий математическую операцию интегрирования. В цифровой технике интегратор реализуется с помощью специальных цифровых элементов, обладающих способностью накапливать сумму поданных на вход значений сигнала за определенный промежуток времени.
Виды интеграторов:
- Интегратор на операционном усилителе: чаще всего применяется в аналоговых схемах для выполнения операции интегрирования непрерывного сигнала.
- Цифровой интегратор: используется в цифровых устройствах для интегрирования ряда дискретных значений сигнала.
Особенности построения
Основой интегратора является элемент, способный складывать значения сигнала и выдавать их с учетом временных параметров. Для цифрового интегратора характерны использование цифровых элементов типа регистров, счетчиков, а также алгоритмов обработки данных.
Важным элементом в построении аналогового интегратора является операционный усилитель. На рисунке 1 показан сумматор-интегратор, также представлена формула расчета выходного напряжения. Если поменять местами резистор и конденсатор, получим дифференциатор.

В цифровом интеграторе важным элементом является запаздывающий регистр z^(-1), который накапливает значение. Данный тип интегратора представляет собой рекурсивный фильтр первого порядка с коэффициентом 1(b) и коэф a.

Различие аналогового от цифрового
Основное различие между аналоговым и цифровым интегратором заключается в способе обработки сигнала. Аналоговый интегратор работает с непрерывными значениями входного сигнала, в то время как цифровой интегратор оперирует дискретными значениями, представленными в цифровой форме. Цифровой интегратор обладает более высокой точностью благодаря использованию цифровых методов обработки данных.
Применение интегратора
Интеграторы широко применяются в различных областях, включая системы управления, цифровую обработку сигналов, измерительные устройства, электронику медицинских приборов и многое другое. Они позволяют проводить анализ сигналов, вычислять интегралы сигналов и выполнять другие полезные функции.
Реализация Цифрового Интегратора на языке Verilog
В интегратор реализованы следующие параметры:
- KOEF_ENA — Учитывает коэффициент перед фильтром. Данный коэффициент представляет 1/период дискретизации.
- PERIOD — Период дискретизации. Схема расчета описана ниже и в комментариях кода.
- DATA_WIDTH — Битовая длина информационной линии.
module integr(data, clk, reset, out, cn);
// 1 - включение коэф дискретизации, 0 - отключение
parameter KOEF_ENA = 1;
// мой пример... Частота дискретизации 500 КГц. 1/500 = 0.002
// В данном случае точечная нотация с фиксированой точкой 1.15
// следовательно. 0.002*(2**16) = 65.536 => PERIOD = 65
parameter [15: 0] PERIOD = 82;
parameter DATA_WIDTH = 16;
input [(DATA_WIDTH - 1): 0] data;
input reset, clk;
output [(DATA_WIDTH - 1): 0] out;
output [(DATA_WIDTH - 1): 0] cn; // переполнение
wire [(DATA_WIDTH*2 - 1): 0] koef_after;
wire [(DATA_WIDTH - 1): 0] add1;
reg [(DATA_WIDTH - 1): 0] z1 = 0;
generate
if (KOEF_ENA) begin
unsigned_multiply #(DATA_WIDTH - 1) mult1(PERIOD, data, koef_after);
end else begin
assign koef_after = {data, 15'h00};
end
endgenerate
assign {cn, add1} = (koef_after >> 15) + z1;
assign out = add1;
always @(posedge clk, posedge reset) begin
if (reset) begin
z1 <= 0;
end else begin
z1 <= add1;
end
end
endmodule
module unsigned_multiply
#(parameter WIDTH=8)
(
input [WIDTH-1:0] dataa,
input [WIDTH-1:0] datab,
output [2*WIDTH-1:0] dataout
);
assign dataout = dataa * datab;
endmodule
Пример реализации интегратора на STM32
#include "stm32f4xx_hal.h"
SPI_HandleTypeDef hspi;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
uint8_t receivedData;
uint32_t sum = 0;
while (1)
{
HAL_SPI_Receive(&hspi, &receivedData, 1, HAL_MAX_DELAY);
sum += receivedData; // Простой интегратор, складываем принятые данные
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 16;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
RCC_OscInitStruct.PLL.PLLQ = 7;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}
}
static void MX_SPI1_Init(void)
{
hspi.Instance = SPI1;
hspi.Init.Mode = SPI_MODE_SLAVE;
hspi.Init.Direction = SPI_DIRECTION_2LINES;
hspi.Init.DataSize = SPI_DATASIZE_8BIT;
hspi.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi.Init.TIMode = SPI_TIMODE_DISABLE;
hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi.Init.CRCPolynomial = 10;
hspi.Init.NSS = SPI_NSS_SOFT;
hspi.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; // Настройка скорости передачи
hspi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
if (HAL_SPI_Init(&hspi) != HAL_OK)
{
Error_Handler();
}
}
Данный код настраивает SPI1 в режиме SLAVE, принимает данные и суммирует их в переменной ‘sum’. Не забудьте дополнить код обработчиками прерываний, если они необходимы в вашем приложении.
Заключение
Интегратор цифровой элемент – важный компонент современной электроники, находящий применение в различных областях науки и техники. Понимание его принципов работы и особенностей построения позволяет создавать более эффективные устройства и системы. Данная статья поможет широкому аудиторию получить информацию о данном уникальном узле электроники.