如何在Simulink中停止持续输出,实现单次消息发送?
实现USRP N210单条消息发射的解决方案
完全可以实现单条消息的单次发射,以下是几种适配Matlab & Simulink的具体实现方法:
方法1:通过触发信号控制发射模块
- 打开USRP Transmitter模块的配置面板,启用Enable端口(部分版本可通过右键模块→「Mask」→「Edit Mask」添加,或直接在模块参数中找到Enable选项勾选)。
- 添加一个Pulse Generator模块,设置脉冲类型为「Single」,脉宽设置为能覆盖单条消息的完整时长(比如单条消息占1000个采样点,采样率1e6,则脉宽设为0.001秒)。
- 将脉冲信号接入USRP Transmitter的Enable端口,消息源使用Constant或From Workspace模块加载单条消息数据。只有当触发脉冲为高电平时,发射模块才会输出数据,实现单次发射。
方法2:限制数据源的输出时长
- 若使用Signal From Workspace模块作为消息源,在工作区定义单条消息数组(例如
tx_data = pskmod([1 0 1 0 1], 2);),将模块的「Samples per frame」设为数组的总长度。 - 在Simulink模型的「Model Configuration Parameters」中,设置Stop Time为
length(tx_data)/Fs(Fs为你的采样率),模型运行时会仅发射这一帧数据,运行结束后自动停止。
方法3:用Matlab脚本控制模型单次运行
- 预先在Simulink中搭建好发射机模型,确保消息源指向工作区变量。
- 编写Matlab脚本定义单条消息并触发模型单次运行:
% 生成单条消息的基带信号(根据你的调制方式调整) tx_msg = [0 1 1 0 1 0 0 1]; % 示例二进制消息 tx_data = qammod(tx_msg, 4); % 4QAM调制 assignin('baseworkspace', 'tx_data', tx_data); % 设置采样率与停止时间,触发模型运行 Fs = 1e6; % 你的USRP采样率 stop_time = num2str(length(tx_data)/Fs); sim('your_tx_model.slx', 'StopTime', stop_time); - 脚本执行后,模型仅发射一次预先定义的单条消息,完成后自动停止。
注意事项
- 为保证接收机能正确捕获单条消息,建议在消息前添加同步头(如PN序列),配合接收机的帧同步模块使用。
- 确保收发两端USRP的中心频率、采样率、增益等参数完全匹配,避免因参数偏差导致接收失败。
内容的提问来源于stack exchange,提问作者Emily
相关产品推荐
相关产品推荐

