1.算法仿真效果
本文是之前写的文章
《基于
FPGA的
2FSK+
帧同步系统verilog开发,包含testbench,
高斯信道,
的硬件测试版本。
在系统在仿真版本基础上增加了
vio在线SNR设置模块,数据源模块。
硬件ila测试结果如下:(完整代码运行后无水印):
vio设置SNR=15db
vio设置SNR=10db
局部放大看FSK调制解调过程
硬件测试操作步骤可参考程序配套的操作视频。
2.算法涉及理论知识概要
频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了较为广泛的应用。
2.1 FSK调制解调
在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1 和0)。产生FSK 信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK 信号称为不连续FSK 信号。
由于相位的不连续会造频谱扩展,这种FSK 的调制方式在传统的通信设备中采用较多。随着数字处理技术的不断发展,越来越多地采用连继相位FSK调制技术。目前较常用产生FSK 信号的方法是,首先产生FSK 基带信号,利用基带信号对单一载波振荡器进行频率调制。相位连续的FSK信号的功率谱密度函数最终按照频率偏移的负四次幂衰落。如果相位不连续,功率谱密度函数按照频率偏移的负二次幂衰落。
2-FSK功率谱密度的特点如下:
(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;
(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。
PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。在二进制频移键控(2FSK)中,当传送“1”码时对应于载波频率,传送“0”码时对应于载波频率。2FSK信号波形可看作两个2ASK信号波形的合成,下图是相位连续的2FSK信号波形。
FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。
FSK:频移键控是利用两个不同频率f1和f2的振荡源来代表信号1和0,用数字信号的1和0去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽B较大,频带利用率小。
FSK功率谱密度的特点如下:
(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;
(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。
2.2 帧同步
在数字通信中,信息通常是以帧为单位进行组织和传输的。帧同步的目的是确定每一帧的起始位置,以便接收端能够正确地解调出每帧中的数据。
设发送的帧结构为:帧同步码 + 信息码元序列 。帧同步码是具有特定规律的码序列,用于接收端识别帧的起始。
帧同步的过程就是在接收序列中寻找与帧同步码匹配的位置,一旦找到匹配位置,就确定了帧的起始位置,后续的码元就可以按照帧结构进行正确的划分和处理。
3.Verilog核心程序
wire [1:0]o_msg;
//产生模拟测试数据
signal signal_u(
.i_clk (i_clk),
.i_rst (~i_rst),
.o_bits(o_msg)
);
//设置SNR
wire signed[7:0]o_SNR;
vio_0 your_instance_name (
.clk(i_clk), // input wire clk
.probe_out0(o_SNR) // output wire [7 : 0] probe_out0
);
wire signed[15:0]o_carrier1;
wire signed[15:0]o_carrier2;
wire signed[15:0]o_fsk;
wire signed[15:0]o_fskn;
wire signed[31:0]o_de_ffsk1;
wire signed o_bits;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num;
wire [1:0]o_rec2;
wire [1:0]o_bits_data;
wire [1:0]o_bits_head;
wire [7:0]o_peak;
wire o_en_data;
wire o_en_pn;
wire o_frame_start;
//FSK调制解调系统
FSK uut(
.i_clk(i_clk),
.i_rst(~i_rst),
.i_bits(o_msg),
.i_SNR(o_SNR),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_fsk(o_fsk),
.o_fskn(o_fskn),
.o_de_ffsk1(o_de_ffsk1),
.o_bits(o_bits),
.o_bits_data (o_bits_data),
.o_bits_head (o_bits_head),
.o_peak (o_peak),
.o_en_data (o_en_data),
.o_en_pn (o_en_pn),
.o_frame_start (o_frame_start),
.o_error_num (o_error_num),
.o_total_num (o_total_num),
.o_rec2 (o_rec2)
);
wire signed[15:0]w_de_ffsk1=o_de_ffsk1[25:10];
wire errflag = o_bits^{~o_rec2[1]};
//ila篇内测试分析模块
ila_0 ila_u (
.clk(i_clk), // input wire clk
.probe0({
o_msg,o_SNR,//9
o_bits_data,o_bits_head,o_peak,o_en_data,o_en_pn,//6
o_fsk, o_fskn,w_de_ffsk1,//48
o_error_num[19:0],o_total_num[23:0]//44
})
);
endmodule
0sj_048m
通信工程专业毕业,7年开发经验
精通c/c++
精通golang
熟悉常见的脚本,js,lua,python,php
熟悉电路基础,嵌入式,单片机
服务端开发
嵌入式开发
>gin接口代码CURD生成工具
sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。
qt .ui文件转css文件
duilib xml 自动生成绑定控件代码
协议调试器
基于lua虚拟机的的协议调试器软件 支持的协议有:
串口
tcp客户端/服务端
udp 组播/udp节点
tcp websocket 客户端/服务端
软件界面
使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上
下载地址和源码
webrtc easy demo
webrtc c++ native 库 demo 实现功能:
基于QT
webrtc摄像头/桌面捕获功能
opengl渲染/多播放窗格管理
janus meeting room
下载地址和源码
wifi,蓝牙 - 无线开关
实现功能:
通过wifi/蓝牙实现远程开关电器或者其他电子设备
电路原理图:
实物图:
深度学习验证工具
虚拟示波器
硬件实物图:
实现原理
基本性能
采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS
上位机实现功能: 采集,显示波形,存储wave文件。
参数可运行时配置
上位机:
显示缓冲区大小可调
刷新率可调节
触发显示刷新可调节
又一个modbus调试工具
最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:
1. 基于QT5
2. 基于libmodbus
3. 三方库完全跨平台,linux/windows。
开源plutosdr 板卡
1. 完全开源
2. 提高固件定制服务
3. 硬件售价450 手焊产量有线
测试数据
内部DDS回环测试
接收测试
外部发送500MHZ FM波形
matlab测试
2TRX版本
大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。
对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。
二次开发例子
```
all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream
版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型