传输信号,然后立即切换到RX模式并记录反射的最有效方法是什么?
发布于 2018-12-24 14:45:44
您可以使用TxBasebandSignalReq消息传输信号,等待TxFrameNtf指示信号已成功传输,然后使用RecordBasebandSignalReq请求录制。为了避免传输和录制之间的间隙,可以使用TxFrameNtf的txTime属性(recTime属性)来触发录制。大多数使用UnetStack的调制解调器将允许在过去开始录制,只要数据在缓冲区中(通常是几秒钟)。
上面的想法在下面的Groovy代码片段中表达(没有任何错误检查):
import org.arl.unet.*
import org.arl.unet.phy.*
def bb = agentForService(Services.BASEBAND)
bb << new TxBasebandSignalReq(signal: mySignal)
def ntf = receive(TxFrameNtf)
bb << new RecordBasebandSignalReq(recTime: ntf.txTime, recLen: nSamples)这里,mySignal是您想要发送的信号(复数基带表示),nSamples是您想要记录的基带样本数。
(您可以使用Python以几乎相同的方式做同样的事情)
记录将在传输开始时开始,并且将包含所传输的信号(最有可能被削波),随后是任何回声/返回。如果您想在传输结束时开始录制,可以通过将recTime设置为ntf.txTime + mySignalDuration来实现,其中mySignalDuration是以微秒为单位的信号长度。
一定要记住,传输和记录的信号是载波频率为bb.carrierFrequency、采样率为bb.basebandRate的信号的复数基带表示。这种表示法比通带表示法更紧凑。但是,如果要在传输中使用通带表示,可以在TxBasebandSignalReq中设置fc: 0,并传入在4*bb.basebandRate处采样的通带信号,但必须将接收的信号转换为通带(上采样,乘以复指数并取实数部分)。如果你正在使用Python,这很容易使用像arlpy.signal.bb2pb()这样的东西来完成。
https://stackoverflow.com/questions/53909642
复制相似问题