ROPS让你更容易开发机器人

所有机器人都需要传感器,计算和驱动。

现成的x86 PC为您提供了一个熟悉的Linux环境来进行开发和部署。 然而,PC存在严重问题,现成的主板不能提供与外界的低延迟和噪声容忍连接。 USB似乎就是解决方法,但是一旦总线忙碌,如果你通过USB连接到电机控制器,延迟会让你感到困惑。

在机箱内隐藏着一个解决方案PCI Express。 虽然你很难找到PCI-e电机控制器或激光雷达,但速度快,延迟低。 这就是ROPS的用武之地,可以作为PCI-e与CAN和RS485等总线之间的桥梁,您可以在电机控制器和传感器上找到它们。

由于几乎所有移动机器人都需要IMU和GPS,有了ROPS这些都不是问题。

我们将在CSG325封装中使用Xilinx Artix-7 XC7A35T作为ROPS的核心。 35T是中档Artix部分,CSG325封装将所有重要的GTP收发器绑定,以便我们可以使用PCI-e连接到主机。

我们计划使用的传感器是ST LSM9DS1 IMU,ST LPS25HW气压计和uBlox NEO-M8T GPS。

将有后面板IO用于连接第三方硬件,如电机控制器和其他传感器,但我们还没有确定任何细节。 目前只有很少的FPGA用于IO,因此这里有很多灵活性。 在主机外壳内的夹层或柔性电缆连接器上也可能有额外的IO。

Verilog仿真工具

当你处理任何类型的代码时,收紧write-compile-test循环总是有帮助的,特别是当你第一次学习时。 对于SPI模块,最重要的是SPI输出的时序。 为此,我们需要模拟verilog并检查输出。 以下是我过去常用的工具。

编辑器

我使用neovim,但它并不重要。 我强烈建议使用语法高亮,强大的查找和替换以及跨平台功能,以便您可以随时随地使用它。

Bash Glue

这就是魔术发生的地方,这个脚本以您当前正在处理的文件的形式接受一个参数,并等待它被保存。 保存后,脚本会编译该文件,对其进行模拟,并更新GTKWave的输出。 我在这里使用verilog,但你可以在inotifywait之后用你正在处理的项目中有用的东西替换它们。 这可能是编译器,linter等。我将它的输出保存在我工作区的左上方窗格中,这样我就可以检查出现的任何错误。

inotifywait

这确实是脚本的关键。 当作为第一个参数提供给脚本的文件被关闭时,如果它被打开为可写,则inotifywait退出。 这样,如果你捕获文件,或差异,它将不会做任何事情。 它不会查看文件内部以查看是否已进行更改,它只知道文件已关闭。

iVerilog

Icarus Verilog是一个verilog综合和模拟工具。 iVerilog将源编译为类似中间程序集的源,然后由iVerilog工具集的另一部分vvp执行。 这样做会输出一个.lxt文件,该文件存储verilog中各种连线和寄存器的波形。

在脚本中,iverilog的-o选项命名输出文件,这里我们只使用main。 然后我们在main上调用vvp,并告诉vvp将波形输出到.lxt文件。

GTKWave

模拟verilog时,可以使用类似printf的语句,也可以转储每行的状态并注册到文件中。 查看寄存器转储。 我正在使用GTKWave。 在我看来,它是一个完美的软件。 当我想检查波形时,它会完成我需要的一切,而不是其他任何东西。

在脚本中,我们调用gconftool-2来更新波形。 我不知道他们为什么选择配置工具来做这件事,但它很有效。

(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )

赞助商
2019-03-26
ROPS让你更容易开发机器人
所有机器人都需要传感器,计算和驱动。现成的x86 PC为您提供了一个熟悉的Linux环境来进行开发和部署。 然而,PC存在严重问题,现成的主板不能提供与外界的低延迟和噪声容忍连接。

长按扫码 阅读全文