问题标签 [myhdl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
912 浏览

python - python和MyHDL中的yield语句之间的区别

我目前正在为我的暑期项目学习 MyHDL。我在掌握其中的 yield 语句的功能时遇到了问题。虽然 MyHDL 确实基于 python,但它以一种专门的方式使用它的 yield 语句。相同的链接是: http ://www.myhdl.org/doc/current/manual/reference.html#myhdl.always

它指出: MyHDL 生成器是标准的 Python 生成器,带有专门的 yield 语句。在硬件描述语言中,等效的语句称为敏感度列表。MyHDL 生成器中yield 语句的一般格式是:yield 子句[, 子句...] 当生成器执行yield 语句时,它的执行会在此时暂停。同时,每个子句都是一个触发对象,它定义了应该恢复生成器的条件。但是,每次调用 yield 语句,生成器只恢复一次,而不管子句的数量。这发生在发生的第一个触发器上。

我无法理解。有人可以用简单的话解释一下吗?或者也许将我重定向到另一个来源?

如果您能提供帮助,我将不胜感激。谢谢!

问候

0 投票
1 回答
3076 浏览

python - Python ast 包:遍历对象层次结构

以下是使用astsymtable 包的 Python 代码片段。我正在尝试解析代码并检查类型。但我不明白如何遍历对象以获取被引用的实际变量。

下面的代码实现了一个NodeVisitor,一个函数被呈现给编译器,由编译器解析,然后遍历。正在分析的函数 (eval_types) 传递了几个对象。

下面是构成示例的代码块。我为每个块添加了一些评论。要运行代码,需要重新组装“块”。

导入和取消缩进代码块以进行解析的函数。

以下是节点访问者,它具有通用的未处理和名称访问者重载。

以下是一些将在函数中使用的简单类,这些类将使用 AST 进行解析和分析。

下面是测试函数,eval_types函数就是要用AST分析的函数。

执行示例、编译函数和分析的代码。

以下是直到第一次访问的示例输出。

创建节点访问者似乎并不坏,但我不知道如何遍历对象层次结构。在一般情况下,被访问的变量可能深埋在对象中。如何获取从 ast 访问者访问的实际变量?我只看到一个对象在节点上,但没有额外的信息结果变量访问是什么。

0 投票
5 回答
4514 浏览

python - 更好的平台将软件转换为 FPGA 的 VHDL/Verilog

我正在考虑在 FPGA 上进行开发,但用 Python 或 Scala 编写代码并将其转换为 VHDL 或 Verilog 会更容易。

我想让许多传感器连接到一个设备上,当数据进来时,计算会很快完成,所以它可以显示在视频墙上,所以 FPGA 将有几十个传感器和几个视频控制器作为输入墙。

这是一个用 Scala 编写的代码库。对于这个,我很好奇代码是否是用 Java 和 Scala 编写的,这会影响它生成的内容。

http://simplifide.com/drupal6/

这是一个 python 到 VHDL 的转换器。

http://www.myhdl.org/doku.php

有了这两个,我对这些限制感到好奇。

我更喜欢简化,因为我在 Scala 方面比 Python 更强大,但似乎 myhdl 可能是一个更强大的平台,只是从一些基本的环顾来看。

更新:

FPGA的原因是它可以很好的一次完成多个任务,所以当数据进来的时候,根据用户的需要,根据实验,很容易把FPGA上的代码改成能够适应需求。

所以举个例子,如果你在一栋写字楼的每一层有8 x 3个不同的天气传感器,那么就有温度、风速、气压传感器(每个传感器8个,每层一个),并添加传感器来测试变形墙壁,然后一个实时界面同时读取这些内容并不断更新视觉显示可能会有所帮助。

这是一个虚构的例子,但它可以解释为什么 FPGA 会有用,否则我需要许多不同的 DSP,然后将它们输入计算机来进行视觉显示,而 FPGA 可以做的更快,因为它是硬件,具有较低的电力需求。

有两个开源库可以帮助简化开发,但我不确定哪个是用于将程序转换为 VHDL/Verilog 的更好平台。

这只是一个例子。如果我想在 FPGA 上进行量子电路仿真,正如本文所建议的那样(http://www.cc.gatech.edu/computing/nano/documents/Radecka%20-%20FPGA%20Emulation%20of%20Quantum%20Circuits .pdf),那么将其作为程序执行会比手动构建大型电路更容易。

0 投票
1 回答
491 浏览

vhdl - HDL 合成抱怨灵敏度列表中缺少信号

您好我有这个简单的 VHDL 过程(从 MyHDL 代码生成):

原始 MyHDL 代码:

在模拟中它工作得很好(ISIM 和 MyHDL 模拟器),但是当我尝试将它合成到 Spartan 6 中时,它会给出以下警告: clken 应该在进程的敏感列表中 sclidlevalue 应该在进程的敏感列表中

据我了解,它以某种方式推断出这个过程应该对 clkEn 和 sclIdleValue 信号敏感。但这当然不是我的本意。我希望它仅在延迟时钟更改其状态时更改输出,而不是在 clkEn 或 sclIdleValue 更改其各自状态时更改输出。

这是在 Spartan 6 架构中无法完成的事情吗?或者我应该以其他方式描述流程以实现我的预期行为?

0 投票
1 回答
556 浏览

python - iPython notebook 中 myHDL 手册中基本示例的 AST 编译错误

编辑:这只发生在我从iPython notebook内部运行代码时。它可以从常规 .py 文件正常工作

我刚刚开始学习 myHDL,并且使用 @instance 或 @always_comb 生成器出现编译错误,如下所示:

TypeError: compile() 预期字符串没有空字节

例如: 3.2 信号、端口和并发:

给出堆栈跟踪:

关于我做错了什么的任何线索?

0 投票
1 回答
185 浏览

python - 为什么 myHDL 手册中的这个例子给了我不同的结果?

这是我从myHDL 手册中复制的示例。在我的代码中,生成器 FSM() 永远不会被调用,因此状态始终是“搜索”。

我无法弄清楚为什么没有调用生成器。

编辑:

将此行更改为:

至:

我认为这是示例中的错误 - 如果重置为 ACTIVE_LOW 它应该初始化为 1,而不是 0?

从我的代码中追踪

跟踪工作版本

0 投票
1 回答
609 浏览

myhdl - 如何在 MyHDL 中实现接口

在 VHDL 中,我经常使用记录将相关信号分组为可以作为单个对象传递的东西,例如在端口映射中。这样做的 MyHDL 方式是什么?

0 投票
1 回答
456 浏览

myhdl - 将内部信号连接到 MyHDL 模块中的输出端口

考虑以下示例(一个简单的 8 位计数器),是否有更简单的方法将内部s_count信号连接到o_count端口?

当然,我可以直接o_countcount函数中递增,但这会转换为inout生成的 VHDL 模块中的一个端口,这是我不想要的。

0 投票
0 回答
93 浏览

python - siir.py 无法运行

我尝试了 Chris Felton 的 myHDL示例代码

我无法让 Simulation 模块导入的函数进行编译,出现以下错误:

有人可以告诉我我做错了什么吗?Python 2.7 应该没问题吧?将其作为文件和 python 交互式命令行进行了尝试。

0 投票
1 回答
237 浏览

myhdl - MyHDL:用户定义代码中的库使用子句

使用 MyHDL 用户定义代码时,有没有办法指定库使用子句?

考虑以下示例,该示例对赛灵思 unisim 库中提供的差分缓冲器进行建模:

将此模块转换为 VHDL 代码可以正常工作,但缺少的是 VHDL 文件头中的以下 use 子句:

我该如何解决?