- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于 GNU Radio block 之间缓冲的问题。我知道 GNU 中的每个 block (包括自定义 block )都有缓冲区来存储将要发送或接收的项目。在我的项目中,我必须保持一定的顺序来同步块(synchronized block)之间的事件。我在带有 FMCOMMS5 的 Xilinx ZC706 FPGA 平台上使用 GNU radio。
在 GNU radio companion 中,我创建了一个自定义 block 来控制电路板上的 GPIO 输出端口。此外,我有一个独立的源 block ,它正在将信息馈送到 FMCOMMS GNU block 中。我试图保持的顺序是,在 GNU radio 中,我首先将数据发送到 FMCOMMS block ,其次我想确保数据被 FMCOMMS block 消耗(主要是通过检查缓冲区),最后我想控制GPIO输出。
根据我的观察,源 block 缓冲区似乎直到它已满才发送项目。这将导致我的项目出现重大问题,因为这意味着 GPIO 数据将在将项目发送到其他 GNU block 之前或同时发送。那是因为我通过在自定义 block 的“工作”功能中直接访问其地址来设置 GPIO 值。
我尝试在自定义源的“工作”函数中使用 pc_output_buffers_full() 来监视缓冲区,但我总是得到 0.00。我不确定它是否应该在自定义 block 中使用,或者这种情况下的“缓冲区”是否与存储输出项的位置不同。这是一个显示问题的小代码片段:
char level_count = 0, level_val = 1;
vector<float> buff (1, 0.0000);
for(int i=0; i< noutput_items; i++)
{
if(level_count < 20 && i< noutput_items)
{
out[i] = gr_complex((float)level_val,0);
level_count++;
}
else if(i<noutput_items)
{
level_count = 0;
level_val ^=1;
out[i] = gr_complex((float)level_val,0);
}
buff = pc_output_buffers_full();
for (int n = 0; n < buff.size(); n++)
cout << fixed << setw(5) << setprecision(2) << setfill('0') << buff[n] << " ";
cout << "\n";
}
有没有办法监控缓冲区,以便我可以确定我的第一部分数据位何时发送?或者有没有办法确保每个输出项都像连续流一样发送到下一个 block ?
GNU Radio Companion 版本:3.7.8
操作系统:在 FPGA 上运行的 Linaro 14.04 图像
最佳答案
Or is there a way to make sure that the each single output item is being sent like a continuous stream to the next block(s)?
不,这不是 GNU Radio 的工作方式(根本不是!):
不久前我写了一个article这解释了 GNU Radio 如何处理缓冲区,以及缓冲区实际上是什么。虽然您可能对 GNU Radio 缓冲区的内存架构不太感兴趣,但让我快速总结一下它的动态:
general_
)work
函数的缓冲区的行为类似于可线性寻址的环形缓冲区。您一次获得随机数量的样本(限制为最小数量、数量的倍数),所有您未消耗的样本都将在下次调用 work
时交给您。work
方法将立即在无限循环中调用,因为:
work
调用,就会通知上游 block 有新的空闲输出空间,因此通常会导致它运行我什至不相信根据这个完全不确定的时序数据流图模型中的速度计算有时切换 GPIO 是一个好主意。也许您更愿意计算应该切换 GPIO 的“时间戳”,并将(时间戳、gpio 状态)命令元组发送到 FPGA 中保持绝对时间的某个实体?在 radio 传播和高速信号处理的规模上,CPU 时序确实不准确,您应该利用拥有 FPGA 的事实来实际实现确定性时序,并使用运行在CPU(即 GNU Radio)确定何时应该发生。
Is there a way to monitor the buffer so that I can determine when my first part of data bits have been sent?
除此之外,异步地告诉另一个 block ,是的,你已经处理了 N 个样本的方法是让一个 block 只观察你想要同步的两个 block 的输出并消耗一个来自两个输入的相同数量的样本,或者使用消息传递来实现某些东西。同样,我怀疑这不是您实际问题的解决方案。
关于c++ - 在 GNU Radio 中监控缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51301070/
我有数百个文件,命名如下: RG1-t.txt RG1-n.txt RG2-t.txt RG2-n.txt 等等... 我想使用GNU并行在它们上运行脚本,但是我很难获得文件的基本名称,因此RG1,R
从例子 seq 1 100 | parallel -I @@ \ > 'mkdir top-@@;seq 1 100 | parallel -X mkdir top-@@/sub-{} 怎么办-X ,
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有一个简单的 Makefile: VAR := aaa include a.inc VAR += bbb 和a.inc some_target: $(VAR) @echo "refe
按照指南制作新类(class)。我可以使用 gst 命令制作新的或加载图像文件 (.im)。我输入代码来创建一个 Account 类,然后可以创建一个新类。 问题如何在关闭 gst 窗口之前将类保存到
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 10年前关闭。 Improve this
我想使用 GNU screen 来监视这样的串行 USB 端口: $ screen /dev/ttyUSB0 115200 但我需要调整一些终端线路设置。我已经进行了几次尝试,但似乎都没有奏效。例如,
我已阅读全文 documentation对于 gnu 排序和在线搜索,但我找不到 --buffer-size 选项的默认值是什么(它决定了程序在运行时使用多少系统内存)。我猜它是根据系统总内存以某种方
我正在使用 parallel --keep-order --line-buffer --halt 2 在一堆命令上并行调用 GNU .每隔一段时间,其中一个命令就会失败,并且 GNU 并行打印: p
这个问题与问题 2543127 的精神相似。 . 我有一个带有头文件列表的 gnu makefile。每个头文件可能位于不同的目录中,例如, HEADERS = $(wildcard *.h) $(w
假设我有以下 GNU make 目标: create_dir: @mkdir objects build_asm: $(ASM_FILES) @echo
默认情况下,当您在 GNU Screen 中创建新窗口时,它将在调用 Screen 的目录中启动。我想在当前所在窗口的当前工作目录的 GNU Screen 中启动一个新窗口。我该怎么做? 最佳答案 查
我想在几个输入上运行几个长时间运行的进程。例如。: solver_a problem_1 solver_b problem_1 ... solver_b problem_18 solver_c pro
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 8年前关闭
我可以看到在多个输入上运行并行作业是多么容易,但是有没有其他方法可以通过将命令放入文件并重复多次来并行运行同一作业多次? parallel -j+0 ::: './dosomejob.sh' 但是告诉
所以我一直在尝试寻找一些关于 GNU screen 实际上如何在 high 下工作的信息,而不必真正阅读源代码,但我一直无法这样做。 screen 做了什么,即使在终端 session 关闭时它也能保
在调查崩溃时,我遇到了以下代码片段并立即意识到 mov 指令实际上应该是 movq 以获得正确的 64 位寄存器操作。 #elif defined(__x86_64__) unsigned l
我安装了 indent使用 brew感谢命令 brew install gnu-indent所以现在我有 gnu-indent-2.2.10到目前为止安装在我的 MacOS X 上,非常好。我的问题是
考虑这个Makefile: .PHONY: all all: main.txt main.txt: build/main.txt cp build/main.txt . %/main.txt:
假设目录输入中有 1000 个扩展名为 .xhtml 的文件,并且这些文件的某个子集(输出路径在 $(FILES) 中)需要通过 xslt 转换为目录输出中具有相同名称的文件.一个简单的 make 规
我是一名优秀的程序员,十分优秀!