问题标签 [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.
python - 多滴答操作的推荐 MyHDL 设计模式是什么?
我试图通过编写一个非常简单的机器来学习 MyHDL,只需要一些指令和操作。我正在苦苦挣扎的是设计我的机器以处理需要多个时钟周期才能解决的操作的最佳方法。目前,我编写的所有硬件组件只需要一个滴答声就可以解决,所以我遇到问题的是控制单元。
例如,假设我的机器的所有操作都需要 1 到 3 个时钟周期才能完成,这意味着每条指令需要 3 个周期(因为我现在没有做任何并行处理)。
这意味着我的机器需要三个阶段,或者用 HDL 术语来说,需要三个时钟敏感逻辑块。机器的一个完整迭代如下所示:
- 对照A
- 勾选 :: 组件
- 控制 B
- 勾选 :: 组件
- 控制 C
- 勾选 :: 组件
- 回到A
由于没有并行性并且每个阶段都使用共享硬件,我希望控制块按顺序触发。为此,我需要多个时钟吗?一个时钟用于组件,一个用于控制,其中组件时钟的滴答是在每个控制阶段结束时完成的?但随后控制 A、B 和 C 将在每个时钟滴答时一起执行。那么我是否需要四个时钟,一个用于组件,一个用于每个控制阶段,其中组件时钟和下一阶段的时钟在每个控制阶段结束时提前?还是我只想要一个时钟和一些布尔信号来告诉每个阶段它们应该何时进行(每个控制阶段都会检查一个标志,如果它被设置,它们将执行并为下一阶段设置标志)?
python - 如何为 myHDL 安装协同仿真支持
我正在尝试在 Windows 10 上使用 Python2 设置 myHDL,以便使用 Python 作为源代码的 VHDL/Verilog 测试平台。相应的说明可以在这里找到。
我已经在我的系统上成功安装了 python、pip 和 myHDL。现在要设置联合仿真,我无法理解给出的说明:
协同仿真需要额外的安装步骤。
要安装协同仿真支持:
转到目标平台的 co-simulation/ 目录并按照 README.txt 文件中的说明进行操作。
这里指的是哪个目录?C:/Python27
在我的目录/子目录中安装 myHDL 后,我找不到协同仿真目录。
FAQ部分通过建议使用 Cygwin 来解决这个问题。有人可以建议如何实现这一点,或者是否有我可以使用的替代方法?
myhdl - MyHDL:无法将 Signal.intbv.max 转换为 VHDL
我是 python 和 MyHDL 的新手,所以我首先将旧的 VHDL 项目转换为 MyHDL。这个项目是一个 vga 计时器,可以接受任何宽度、高度和频率(假设它们实际上与监视器一起使用)。由于以下语句,它没有成功转换为 VHDL 或 Verilog:
我可以很好地打印它们的值,因此它们肯定会评估为整数,但是如果我用它们的文字值替换它们,那么它会正确转换。我在 myhdl 问题跟踪器中找不到任何关于此的内容,但我不想因为新手的错误而添加错误的问题。有没有使用 Signal.val.max 的正确方法,还是我只是避免它?这是完整的代码:
也欢迎对我的代码提出任何其他建议。
python - python myhdl包如何生成verilog初始块
从主要来自 myhdl 示例的代码中:
我希望它生成一个包含initial
块的verilog程序,例如:
如何获得initial
生成的块?
请注意,在 old.myhdl.org/doku.php/dev:initial_values 的谷歌缓存中,它链接到示例https://bitbucket.org/cfelton/examples/src/tip/ramrom/。所以看起来应该支持该功能。但是,rom 示例会生成静态 case 语句。这不是我要找的。
python - MyHDL 自由变量
每当我尝试在我一直在研究的 MD5 的 MyHDL 实现中调用此函数时,都会收到此错误:
这是整个脚本。如果有人对此或其他任何非常有帮助的事情有任何启示。
非常感谢。
python - 如何为切片的输出信号赋值?
我是 myhdl 的初学者。我尝试将以下 Verilog 代码转换为 MyHDL:
目前,我有这个代码:
但它不起作用,因为信号切片会产生只读影子信号(参见MEP-105)。那么,MyHDL 中有一个可写的信号片的好方法是什么?
编辑:这是我得到的错误
python - 如何在 MyHDL 中接收输入总线?
我正在尝试学习 MyHDL,为此我试图创建一个非常简单的人工神经元,以后可以在简单的人工神经网络中使用它。首先,我设计了一个只能处理单个输入和权重信号并返回输出信号的人工神经元。
要将其转换为 Verilog,我使用了另一个函数:
到目前为止一切都很顺利。模拟不仅向我展示了我的预期,而且转换后的代码也是正确的,我能够在 Vivado 中对其进行综合。然而,在神经网络中,隐藏层和输出层神经元必须能够处理来自多个来源的信息,也就是信号列表或总线,这就是我遇到问题的地方。
通过使用 MyHDL 和 Python 的惊人功能来运行模拟,我能够使用以下代码正确模拟一个简单的感知器,方法是使用输入和权重的信号列表:
在浏览了文档(docs)之后,我了解到在 MyHDL 中,一个块不能使用信号列表作为端口,并且根据本章,我应该将信号列表转换为 ConcatSignal,我确实喜欢这样:
当我尝试模拟设计时,一切都按预期工作,但是在转换时出现一个小错误:感知器的in_bus
和w_bus
输入在 Verilog 中定义为output
端口而不是input
端口。由于wires
这些端口的 2 也被生成,并且它们被分配了一个值None
。
有趣的是,其余的 Verilog 代码是正确的,如果我只是删除生成的wires
和None
赋值,如果我在 Verilog 文件中手动更改为output
and ,那么代码是可合成的。如果我在这些更改之后查看 Vivado 的精心设计,那么该模块似乎正是我想要的。input
in_bus
w_bus
虽然我可以在 Verilog 文件中手动解决这个问题,但我觉得这个问题来自我对 MyHDL 的错误使用/缺乏理解。我不明白为什么使用 aConcatSignal
突然将input
端口变成output
端口。
知道我在这里缺少什么吗?
verilog - MyHDL:一元异或
如何编写myhdl代码在verilog中实现一元异或
对我不起作用。
chisel - 为什么要使用多种 HCL 语言
我知道 Chisel 是一种 HDL/HCL 语言,通过使用更高的抽象级别来克服一些 Verilog/SystemVerilog 限制。它也是开源的。
这可能有点天真和冒昧,但我还是想问一下。
我的问题是,为什么这么多类似的工作同时进行,例如 Blusspec、spinHDL、Pyha 等?
我的意思是,开发社区是否有任何理由不选择其中之一并集中精力稳定或增强其中之一。
iverilog - myhdl 协同仿真测试失败
我正在尝试在 ubuntu 上下载 myhld 并安装 cosimulation。myhdl 安装得很好,但是在进行 cosimulation 安装时,我无法正确运行下载包中提供的测试用例。运行 make 测试时出现错误。
我已经使用 pip3 install myhdl 安装了 myhld 以进行协同仿真 我已经进入我的协同仿真目录
~/.local/share/myhdl/cosimulation/icarus/
就像makefile告诉我的那样点击make。创建了一个 myhdl.vpi。我将该 myhdl.vpi 文件复制到测试目录中
~/.local/share/myhdl/cosimulation/icarus/test
在这里,我使用 cmd python3 test_all.py 运行了 test_all.py
http://www.myhdl.org/start/installation.html
pip3 安装 myhdl
安装后移动到 cosimulator 输出目录 cd ~/.local/share/myhdl/cosimulation/icarus
制作 cp myhdl.vpi 测试/
python3 test_all.py
我希望测试通过,但未能产生错误
回溯(最近一次调用最后一次):文件“test_gray.py”,第 27 行,导入 test_gray_properties,test_gray_original ModuleNotFoundError:没有名为“test_gray_properties”的模块