AnyMath 文档

用于管理RITM SDR USRP硬件平台的支持包

这篇文章包含了在 AnyMath 图书馆 目标。RITM_SDR_API 专为节奏SDRfootnote硬件平台的远程控制:[SDR(软件定义的无线电)*是一个软件定义的无线电。]USRPfootnote:[*USRP(通用软件无线电外设)-通用SDR平台。]并通过以太网网络进行数据交换。 给出了对运行时环境的要求、连接过程、应用程序编程接口(API)的描述和主要IP核的寄存器映射。 注:[*IP核*是FPGA/SNC内的硬件功能模块,可通过地址空间访问。].

使用目的及条件

图书馆 目标。RITM_SDR_API 它旨在控制基于Xilinx Zynq UltraScale+片上系统和ADRV9009RF收发器的RITM SDR USRP硬件平台。 通过与RITM SDR USRP控制模块的网络交互进行管理。 SDR USRP RITM在75MHz–6GHz范围内提供操作,瞬时频段高达450MHz。 图书馆 目标。RITM_SDR_API 它用于无线通信和雷达系统的开发,调试和测试。

一般资料

图书馆 目标。RITM_SDR_API 实现一组强类型Julia语言方法和宏,用于执行以下操作:

建立和终止与RITM SDR USRP控制模块的TCP连接; *设置射频和路径参数(频率,衰减,TX/Rxfoot)模式:[*TX/RX-传输/接收通道。]); *执行IP核心重置和管理程序; *I/Q样本和服务数据的发送和接收。

与节奏SDR USRP的相互作用是通过 Engee设备管理器。 组件交互的示意图如图所示。

ritm sdr usrp

执行条件

图书馆工作 目标。RITM_SDR_API 需要: *SDR USRP接入以太网; *可用性 Engee设备管理器在控制计算机侧(当根据接受的体系结构使用时)。

默认网络设置: *IP地址:SDR USRP — 192.168.2.70; *TCP端口 — 12345.

快速启动

  1. 安装或连接Engee子系统。集成如图所示 文章.

    engee.package.install("Engee-Device-Manager")
    连结至连接:engee.com/prod/user/demo1234-user
    安装客户端程序:
    https://dl.kpm-ritm.ru/repo/Host-Device-Manager-v1.57-Windows.zip -适用于窗户
    https://dl.kpm-ritm.ru/repo/Host-Device-Manager-v1.57-Linux.zip -适用于Linux
    例如,运行: engee.package.getdemos("Engee-Device-Manager")
    要运行服务器程序,请运行: engee.package.start("Engee-Device-Manager")
    支持包 'Engee-Device-Manager 版本“v1.57”已成功更新.
    engee.package.start("Engee-Device-Manager")
    "engee.com/prod/user/demo1234-user"
  2. 使用命令:

    using Main.EngeeDeviceManager.Targets.RITM_SDR_API
    import Main.EngeeDeviceManager.Targets.RITM_SDR_API
    
    client = RITM_SDR_API.RITMClient("192.168.2.70")
    if !RITM_SDR_API.connect(client)
        println("连接错误")
        return
    end
    println("服务器版本:$(RITM_SDR_API.get_version(客户端))")
    RITM_SDR_API.disconnect(client)

    预期输出到控制台的示例:

    连接到192.168.2.70:12345
    服务器版本:v5.1.5
    连接已关闭

有关详细信息,请参阅文章 节奏SDR USRP入门

应用程序编程接口(API)

本节介绍库的宏和函数。 对于每个项目,都会指出名称,原型(如果在源文本中可用)和用途。

日志记录组

姓名 原型 委任事宜

@日志

宏日志(expr)

一个宏 «安静» 日志记录而不输出到控制台。 仅在以下情况下记录数据 LOG_ENABLED[]=true.

@log_on

宏log_on()

测井系统的主开关。 设置全局变量 LOG_ENABLED[]=true. 第一次调用函数时 @logmsg@日志 它会自动启动 _ensure_log_file(),它创建一个文件夹 日志 (如果没有),并在名称中使用时间戳初始化文件。 控制台中会显示确认信息。

@logmsg

宏logmsg(expr)

组合输出的主宏。 将表达式转换为字符串,将其清除,将其打印到控制台,如果日志记录处于活动状态,则将其写入带有时间戳的日志文件。

例子: @logmsg"温度:≦(temp)°C"

@logprint

宏logprint(expr)

在没有换行符的情况下向控制台打印消息。 它用于交互式进度条或在一行中显示部分结果。

关闭日志()

函数close_log()

日志会话正确结束。 添加最终条目,创建日志文件的清理版本,并重置全局变量。

服务功能

姓名 原型 委任事宜

RITMClient()

RITMClient(server_ip::String="192.168.2.70")

主库对象的构造函数。 创建具有以下字段的结构:控制模块的IP地址、TCP连接描述符和采样率(默认情况下)。

_clean_string()

_clean_string(s::字符串)::字符串

清除来自控制模块的控制和不可打印字符的字符串响应。

_clear_socket_buffer()

_clear_socket_buffer(socket::SOCKET.插座)

清除网络套接字的输入缓冲区。

_get_数据()

_get_data(client::RITMClient)::Union\{Vector{UInt8},Nothing\}

根据建立的协议从控制模块接收二进制数据。

_put_data()

_put_data(客户端::RITMClient,数据::向量{UInt8})::Bool

使用已建立的协议向控制模块发送二进制数据。

_send_command()

_send_command(client::RITMClient,command::String)::Tuple\{Bool,Union\{String,Nothing\}\}

用于向控制模块发送命令的关键低级功能。 发送命令,等待处理,读取和分析响应。

断开()

断开(客户端::RITMClient)

安全断开。

连接()

连接(客户端::RITMClient)::Bool

与控制模块建立TCP连接。 端口是固定的 — SDR_PORT=12345.

管理基本参数

姓名 原型 委任事宜

get_calibrate_status()

get_calibrate_status(客户端::RITMClient)::字符串

请求系统的校准状态。

get_frequency()

get_frequency(客户端::RITMClient)::Float64

当前频率的请求。

get_rx_attenuation()

get_rx_attenuation(client::RITMClient,rx::String)::Union\{Int,Nothing\}

接收机衰减的表格值的请求。

get_rx_power()

get_rx_power(client::RITMClient,rx::String)::Union\{Float64,Nothing\}

测量接收器输入端的功率。

get_transceiver_state()

get_transceiver_state(客户端::RITMClient)::元组\{Int,Int\}

收发器的当前状态的请求。

get_tx_attenuation()

get_tx_attenuation(客户端::RITMClient,tx::String)::Union\{Float64,Nothing\}

发射机衰减的请求。

set_frequency()

set_frequency(客户端::RITMClient,freq_mhz::Float64)::Bool

设置发射机和接收机的载波频率。 检查范围,发送命令 命令:SET_TX_CARR_FREQ_HZ.

set_param()

set_param(client::RITMClient,param::String)::Bool

通用参数设置。

set_rx_attenuation()

set_rx_attenuation(client::RITMClient,rx::String,value::Int)::Bool

设置接收器衰减的表格值。

set_transceiver()

set_transceiver(client::RITMClient,tx_cmd::Int,rx_cmd::Int)::Bool

使用位掩码配置发射器和接收器通道。

set_tx_attenuation()

set_tx_attenuation(客户端::RITMClient,tx::String,atten_db::Float64)::Bool

设置发射机的衰减。

set_tx_carrier_freq_hz()

set_tx_carrier_freq_hz(client::RITMClient,freq_hz::Int)::Bool

以Hz为单位的替代频率设置。

停止传送()

stop_transmission(客户端::RITMClient)::Bool

停止传输。

高级控制和复位功能

姓名 委任事宜

get_ip_core()

读取功能模块(IP核)的寄存器。

reset_DFE_system_FIFO_TX491()

FIFOfootnote Target reset:[*FIFO*是先入先出队列。]在DFE系统中。

重置_kg()

复位辅助噪声发生器单元。

reset_RX_DMA()

重置DMA控制器注意:[DMA(直接内存访问)-直接内存访问控制器。]接收和发送。

reset_TX_DMA()

重置接收和发送DMA控制器。

reset_buffers()

全面的FIFO缓冲器复位。

set_ip_core()

写入功能模块(IP核)的寄存器。

射频开关

姓名 原型 委任事宜

manual_calibrate_orx()

manual_calibrate_orx(client::RITMClient,orx::String)::Bool

反馈通道的手动校准。

rf_switch_set_trx_sw1()

rf_switch_set_trx_sw1(客户端::RITMClient,值::Bool)::Bool

硬件平台上的射频切换控制。

rf_switch_set_trx_sw2()

rf_switch_set_trx_sw2(客户端::RITMClient,值::Bool)::Bool

硬件平台上的射频切换控制。

rf_switch_set_tx_bandsel_a()

rf_switch_set_tx_bandsel_a(客户端::RITMClient,值::Bool)::Bool

硬件平台上进行射频切换控制。

rf_switch_set_tx_bandsel_b()

rf_switch_set_tx_bandsel_b(客户端::RITMClient,值::Bool)::Bool

硬件平台上进行射频切换控制。

rf_switch_set_tx_fddtdd_sw1()

rf_switch_set_tx_fddtdd_sw1(客户端::RITMClient,值::Bool)::Bool

硬件平台上进行射频切换控制。

rf_switch_set_tx_fddtdd_sw2()

rf_switch_set_tx_fddtdd_sw2(客户端::RITMClient,值::Bool)::Bool

硬件平台上进行射频切换控制。

set_tx_data_duplicate()

set_tx_data_duplicate(client::RITMClient,enable::Bool)::Bool

启用/禁用MIMO模式的发射机数据的重复。

数据接收和传输管理

姓名 委任事宜

get_orx_attenuation()

通道衰减管理ORXfootnote:[ORX(观测接收器)-反馈通道。].

is_ORX_DMA_transfer_end()

检查主接收(RX)和反馈信道(ORX)的DMA传输的完成。

is_dma_transfer_end()

检查主接收(RX)和反馈信道(ORX)的DMA传输的完成。

parse_rx_data()

格式化接收到的数据 uint32 成复数数组。

准备_tx_data()

准备用于传输的复杂数据:组件的缩放和交织。

receive_file_ORX_to_RAM()

从反馈通道(ORX)接收数据到RAM中.

receive_to_ram()

启动从接收器接收数据到RAM。

receiver_RX_ORX_ONOFF()

接收通道的直接开关。

send_to_ram()

将数据从RAM传输到发送器的命令。

set_orx_attenuation()

ORX信道衰减管理。

附加服务功能

姓名 委任事宜

get_temperatures()

硬件平台各部件的温度监测。

get_version()

请求控制模块的软件版本。

自动增益控制功能

姓名 原型 委任事宜

agc_set_mode()

agc_set_mode(客户端,模式)

自动增益控制的配置(0 -关闭, 1 -慢, 2 -快速, 3 -混合)。

agc_parse_config()

agc_parse_config(客户端)

强制自动增益控制设置在更改后应用。

agc_reset()

agc_reset(客户端)

将自动增益控制设置重置为默认值。

set_tx_data_duplicate()

set_tx_data_duplicate(客户端,启用)

启用/禁用MIMO模式的发射机数据的重复。

网络和数据交换

与产品的控制模块的连接是通过TCP协议建立的。 端口号是固定的(12345). 功能 连接() 必须在执行任何控制和数据交换命令之前调用它。 断开连接由函数执行 断开() (或 关闭(),如果使用同义词)。 发送控制命令是通过低级函数实现的 _send_command(),其传送字符串命令并分析响应。 二进制数据阵列的发送和接收由函数执行 _put_data()_get_数据() 据建立的交换协议。

SDR寄存器

该表显示了通过该机制可用的IP核的寄存器映射。 set_ip_core()/get_ip_core(). 地址以十六进制格式给出。 数据类型是根据FPGA项目中使用的名称给出的.

IP核/地址(十六进制)/寄存器名称/数据类型/描述 DUCexfootnote:[*DUC/DDC(数字上/下转换器)*是一个上/下数字转换器。] 0x30108 IPCore_Reset 布尔值

核心复位:写 0x1 重置IP核。

杜克斯

0x30008

IPCore_Timestamp

uint32

核心的唯一时间戳(格式 yymmddHHMM).

杜克斯

0x30100

比率_axi_数据

ufix12

用于设置插值系数的数据寄存器。

杜克斯

0x30104

rate_enb_axi_数据

布尔值

打开/关闭内插器。

杜克斯

0x30108

rst_axi_数据

布尔值

通过AXI异步内核复位。

杜克斯

0x3010C

enb_axi_数据

布尔值

全局核心激活。

杜克斯

0x30110

gain_0_correct_axi_数据

ufix12_En10

信道增益因子0(校正)。

杜克斯

0x30114

gain_0_enb_axi_数据

布尔值

启用通道0增益。

杜克斯

0x30118

gain_1_correct_axi_数据

ufix12_En10

通道1增益(校正)。

杜克斯

0x3011C

gain_1_enb_axi_数据

布尔值

启用通道1增益。

杜克斯

0x30120

nco_0_enb_axi_数据

布尔值

启用NCOfootnote:[*NCO(数控振荡器)*是一个数控发生器。]频道0。

杜克斯

0x30124

nco_0_phase_inc_数据

DUC_phase_inc

NCO通道相位增量0(int32).

杜克斯

0x30128

nco_0_phase_offset_Data

DUC_phase_offset

NCO通道的相位偏移为0(int32).

杜克斯

0x3012C

nco_0_reset_accum_数据

布尔值

复位通道0的NCO相位驱动。

杜克斯

0x30130

nco_1_phase_inc_数据

DUC_phase_inc

通道1的NCO相位增量(int32).

杜克斯

0x30134

nco_1_phase_offset_Data

DUC_phase_offset

通道1的nco相位偏移(int32).

杜克斯

0x30138

nco_1_reset_accum_数据

布尔值

复位通道1的NCO相位驱动。

杜克斯

0x3013C

nco_1_enb_axi_数据

布尔值

启用NCO通道1。

杜克斯

0x30140

Dds_0_on_数据

布尔值

启用DDSfootnote:[*DDS(直接数字合成)*是一个数字合成器。]频道0。

杜克斯

0x30144

Dds_1_on_数据

布尔值

启用DDS通道1。

DDCex

0x50108

IPCore_Reset

布尔值

核心复位:写 0x1 重置IP核。

DDCex

0x50008

IPCore_Timestamp

uint32

核心的唯一时间戳(格式 yymmddHHMM).

DDCex

0x50100

比率_axi_数据

ufix12

用于设置抽取系数的数据寄存器。

DDCex

0x50104

rate_enb_axi_数据

布尔值

开/关抽取器。

DDCex

0x50108

rst_axi_数据

布尔值

通过AXIfootnote异步核心复位:[AXI-AMBA AXI总线接口。].

DDCex

0x50110

gain_0_correct_axi_数据

ufix12_En10

信道增益因子0(校正)。

DDCex

0x5010C

gain_1_correct_axi_数据

ufix12_En10

通道1增益(校正)。

DDCex

0x50114

gain_0_enb_axi_数据

布尔值

启用通道0增益。

DDCex

0x50118

gain_1_enb_axi_数据

布尔值

启用通道1增益。

DDCex

0x50124

nco_0_phase_inc_数据

DDC_phase_inc

道的NCO相位的增量为0。

DDCex

0x50128

nco_0_phase_offset_Data

DDC_phase_offset

NCO通道的相位偏移为0。

DDCex

0x5012C

nco_0_reset_accum_数据

布尔值

复位通道0的NCO相位驱动。

DDCex

0x50130

nco_1_phase_inc_数据

DDC_phase_inc

道1的NCO相位的增量。

DDCex

0x50134

nco_1_phase_offset_Data

DDC_phase_offset

道1的NCO相位偏移。

DDCex

0x50138

nco_1_reset_accum_数据

布尔值

复位通道1的NCO相位驱动。

DDCex

0x50120

nco_0_enb_axi_数据

布尔值

使能公共输出的NCO。

DDCex

0x5013C

nco_1_enb_axi_数据

布尔值

启用NCO通道1。

DDCex

0x50154

Dds_0_on_数据

布尔值

启用DDS通道0。

DDCex

0x50158

Dds_1_on_数据

布尔值

启用DDS通道1。

DDCex

0x5011C

高水平_0_数据

int16

DDCex

0x50140

inc_val_0_数据

sfix16_En15

DDCex

0x50144

dec_val_0_数据

sfix16_En15

DDCex

0x50148

low_level_0_数据

int16

DDCex

0x5014C

enb_dc_correct_0_Data

布尔值

DDCex

0x50150

高水平_1_数据

int16

DDCex

0x5015C

inc_val_1_数据

sfix16_En15

DDCex

0x50160

dec_val_1_数据

sfix16_En15

DDCex

0x50164

低水平_1_数据

int16

DDCex

0x50168

enb_dc_correct_1_数据

布尔值

DDCex

0x5016C

积分_0_out_data

int32

DDCex

0x50170

积分_1_out_data

int32

AGCexfootnote:[AGC(自动增益控制)-自动增益控制。]

0x80120000

IPCore_Reset

布尔值

核心复位:写 0x1 重置IP核。

AGCex

0x80120004

IPCore_Enable

布尔值

启用内核(当位0相等时默认启用 0x1).

AGCex

0x80120008

IPCore_Timestamp

uint32

核心的唯一时间戳(格式 yymmddHHMM): 2509100147.

AGCex

0x80120100

time_out_Data

ufix25

输入端口的数据寄存器 时间_out.

AGCex

0x80120104

thrshld_数据

sfix18_En17

输入端口的数据寄存器 thrshld.

AGCex

0x80120108

target_avg_delta_high_Data

ufix18_En17

输入端口的数据寄存器 目标_avg_delta_high.

AGCex

0x8012010C

目标_avg_data

ufix18_En17

输入端口的数据寄存器 目标_avg.

AGCex

0x80120110

prg_rst_数据

布尔值

输入端口的数据寄存器 prg_rst.

AGCex

0x80120114

avg_timer_pow2_数据

uint8

输入端口的数据寄存器 avg_timer_pow2.

AGCex

0x80120118

over_hi_dec_step_Data

sfix18_En17

输入端口的数据寄存器 over_hi_dec_step.

AGCex

0x8012011C

normal_dec_step_Data

sfix18_En17

输入端口的数据寄存器 正常_dec_步.

AGCex

0x80120120

normal_inc_step_数据

sfix18_En17

输入端口的数据寄存器 正常的,正常的.

AGCex

0x80120124

normal_gain_数据

ufix18_En12

输入端口的数据寄存器 正常,正常.

AGCex

0x80120128

hi_criteria_数据

ufix17_En17

输入端口的数据寄存器 [医]红血球.

AGCex

0x8012012C

hi_criteria_timer_Data

uint8

输入端口的数据寄存器 hi_criteria_timer.

AGCex

0x80120130

agc_enb_数据

布尔值

输入端口的数据寄存器 agc_enb.

AGCex

0x80120134

b_in_数据

ufix18_En18

输入端口的数据寄存器 b_in.

AGCex

0x80120138

max_detected_Data

sfix16_En15

输出端口的数据寄存器 最大值/最大值.

AGCex

0x8012013C

avg_data_clear_数据

ufix12_En7

输出端口的数据寄存器 avg_data_清除.

AGCex

0x80120140

avg_data_iir_数据

ufix18_En17

输出端口的数据寄存器 avg_data_iir.

AGCex

0x80120144

当前_ku_数据

ufix18_En12

输出端口的数据寄存器 当前库.

AGCex

0x80120148

overhi_enb_valid_out_Data

布尔值