Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
杨家三木
qtcpp_demo
提交
e9c28c6d
qtcpp_demo
项目概览
杨家三木
/
qtcpp_demo
与 Fork 源项目一致
Fork自
colorEagleStdio / qtcpp_demo
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
qtcpp_demo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e9c28c6d
编写于
4月 05, 2021
作者:
M
manjaro
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
realtime testing
上级
373e4dc1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
15 deletion
+17
-15
uhd_cpp/uhd_the_ark.cpp
uhd_cpp/uhd_the_ark.cpp
+17
-15
未找到文件。
uhd_cpp/uhd_the_ark.cpp
浏览文件 @
e9c28c6d
...
...
@@ -47,7 +47,7 @@ struct tag_channelOptions{
string
wirefmt
;
//内部类型 (sc8 or sc16),是片上处理的类型
vector
<
size_t
>
channels
{
0
};
//通道号,可以设置0,1之类的。默认subdev时,0=A:A,1=A:B,subdev被修改,则采取修改后的编号
size_t
spb
=
10000
;
//缓冲大小,太小会丢包,太大会超时
double
rate
=
2
.5e6
;
//采样率,单位Hz
double
rate
=
2
00e3
;
//采样率,单位Hz
double
freq
=
1.0e9
;
//射频频率,单位Hz
double
gain
=
20
;
//射频增益,单位dB
double
bw
=
rate
;
//滤波带宽,默认为采样窗口
...
...
@@ -79,7 +79,7 @@ int UHD_SAFE_MAIN(int /*argc*/, char* /*argv*/[])
//3.配置发射
tag_channelOptions
tx_op
;
tx_op
.
freq
=
200e6
;
tx_op
.
bw
=
tx_op
.
rate
/
modraten
/
2
;
tx_op
.
bw
=
tx_op
.
rate
;
tx_op
.
gain
=
70
;
tx_op
.
channels
[
0
]
=
0
;
//3.1子设备配置(默认),一般不动它。
...
...
@@ -112,7 +112,7 @@ int UHD_SAFE_MAIN(int /*argc*/, char* /*argv*/[])
//4.配置接收
tag_channelOptions
rx_op
;
rx_op
.
bw
=
rx_op
.
rate
/
modraten
/
2
;
rx_op
.
bw
=
rx_op
.
rate
;
rx_op
.
freq
=
200e6
;
rx_op
.
gain
=
50
;
rx_op
.
channels
[
0
]
=
0
;
...
...
@@ -265,8 +265,10 @@ void do_io(
//主线程不断打印状态
while
(
!
stop_signal_called
)
{
//cerr<<"P " << gene_count<<" TX "<< tx_count<< " RX "<< rx_count << "D "<< deal_count<< " \r";
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
100
));
cerr
<<
"
\n
Produce "
<<
gene_count
<<
" TX "
<<
tx_count
<<
" RX "
<<
rx_count
<<
" Deal "
<<
deal_count
<<
" Delay = "
<<
rx_count
-
deal_count
<<
"
\n
"
;
std
::
this_thread
::
sleep_for
(
std
::
chrono
::
milliseconds
(
1000
));
if
(
rx_count
>=
4
*
1024
*
1024
)
stop_signal_called
=
true
;
...
...
@@ -280,7 +282,7 @@ void do_io(
static
const
int
amp
=
1024
;
static
const
int
spread_ratio
=
128
;
static
const
int
spread_ratio
=
200
;
static
const
size_t
wav_size
=
spread_ratio
*
modraten
;
static
short
wav_spread
[
2
][
wav_size
][
2
];
static
float
wav_xorr
[
2
][
wav_size
][
2
];
...
...
@@ -382,7 +384,7 @@ void dealer()
unsigned
long
long
next_test
=
wav_size
;
const
unsigned
int
half_sz
=
wav_size
/
2
;
short
(
*
pBufRx
)[
2
]
=
rx_buf_ptr
.
get
();
float
(
*
ampwin
)[
2
]
=
new
float
[
wav_size
][
2
];
double
(
*
ampwin
)[
2
]
=
new
double
[
wav_size
][
2
];
while
(
!
stop_signal_called
)
{
if
(
deal_count
+
wav_size
>=
rx_count
||
rx_count
<
wav_size
)
...
...
@@ -396,20 +398,20 @@ void dealer()
++
deal_count
;
continue
;
}
float
cross
[
2
][
2
]
=
{{
0
,
0
},{
0
,
0
}};
double
cross
[
2
][
2
]
=
{{
0
,
0
},{
0
,
0
}};
unsigned
long
long
start_x
=
deal_count
-
wav_size
;
//xorr
#pragma omp simd
for
(
size_t
i
=
0
;
i
<
wav_size
;
++
i
)
{
int
xb
=
(
start_x
+
i
)
%
rxbuf_points
;
cross
[
0
][
0
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
0
][
i
][
0
]
-
pBufRx
[
xb
][
1
]
*
wav_xorr
[
0
][
i
][
1
])
/
32768.0
;
cross
[
0
][
1
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
0
][
i
][
1
]
+
pBufRx
[
xb
][
1
]
*
wav_xorr
[
0
][
i
][
0
])
/
32768.0
;
cross
[
1
][
0
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
1
][
i
][
0
]
-
pBufRx
[
xb
][
1
]
*
wav_xorr
[
1
][
i
][
1
])
/
32768.0
;
cross
[
1
][
1
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
1
][
i
][
1
]
+
pBufRx
[
xb
][
1
]
*
wav_xorr
[
1
][
i
][
0
])
/
32768.0
;
const
int
xb
=
(
start_x
+
i
)
%
rxbuf_points
;
cross
[
0
][
0
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
0
][
i
][
0
]
-
pBufRx
[
xb
][
1
]
*
wav_xorr
[
0
][
i
][
1
]);
cross
[
0
][
1
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
0
][
i
][
1
]
+
pBufRx
[
xb
][
1
]
*
wav_xorr
[
0
][
i
][
0
]);
cross
[
1
][
0
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
1
][
i
][
0
]
-
pBufRx
[
xb
][
1
]
*
wav_xorr
[
1
][
i
][
1
]);
cross
[
1
][
1
]
+=
(
pBufRx
[
xb
][
0
]
*
wav_xorr
[
1
][
i
][
1
]
+
pBufRx
[
xb
][
1
]
*
wav_xorr
[
1
][
i
][
0
]);
}
ampwin
[
deal_count
%
wav_size
][
0
]
=
cross
[
0
][
0
]
*
cross
[
0
][
0
]
+
cross
[
0
][
1
]
*
cross
[
0
][
1
]
;
ampwin
[
deal_count
%
wav_size
][
1
]
=
cross
[
1
][
0
]
*
cross
[
1
][
0
]
+
cross
[
1
][
1
]
*
cross
[
1
][
1
]
;
ampwin
[
deal_count
%
wav_size
][
0
]
=
cross
[
0
][
0
]
/
32768.0
*
cross
[
0
][
0
]
/
32768.0
+
cross
[
0
][
1
]
/
32768.0
*
cross
[
0
][
1
]
/
32768.0
;
ampwin
[
deal_count
%
wav_size
][
1
]
=
cross
[
1
][
0
]
/
32768.0
*
cross
[
1
][
0
]
/
32768.0
+
cross
[
1
][
1
]
/
32768.0
*
cross
[
1
][
1
]
/
32768.0
;
bool
best0
=
true
,
best1
=
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录