问题标签 [ghdl]

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 投票
1 回答
304 浏览

git - ghdl 安装(tgingold):gnatmake 未找到但存在:usr/local/gnat/bin/gnatmake

MacOs 用户:Sierra

Vhdl 用户也是。

  • 我安装了 ada-gpl_2017:好的(用 .bash_profile 编写的路径)

  • 我通过 tgingold 的 git 安装了 ghdl 并返回一个奇怪的错误:

我做了:

最后一步返回以下错误:

但它存在于/usr/local/gnat/bin/gnatmake. 你能帮我解决这个错误吗?

0 投票
2 回答
1649 浏览

output - (VHDL)vhdl 实体中的输出问题

我对始终发出的 vhdl 实体的输出有疑问U。我查看了各种论坛,但找不到解决方案。

该项目是一个 5 层的电梯,必须等待 5 秒才能关上门,10 秒才能到达下一个到达目标的飞机。使用 Logisim (v 2.13.22) 和 ghdl (v 0.29.1)。

有谁知道问题可能是什么?提前致谢

项目主电路

vhdl 模拟器日志

这是我制作的vhdl代码。

0 投票
1 回答
87 浏览

vhdl - 为什么内部组件没有被执行

因此,我在 VHDL 中创建了组件的分层设计。目前的顶级实体如下。

我正在使用这个测试平台对其进行测试

但就我所见,内部组件(比较器和多路复用器)没有被“执行”,结果端口永远不会改变。

所有组件都将其所有 IN 端口作为其进程的触发器。

我已经阅读了一些关于这个的内容,发现组件不能在进程内执行,所以当我这样做时:exp_1 <= exp_1_in; exp_2 <= exp_2_in; 我实际上并没有触发组件。

但是,我看到了一个与我在这里尝试的非常相似的示例。 https://www.altera.com/support/support-resources/design-examples/design-software/vhdl/v_hier.html

我不知道我的问题在哪里。我已经单独测试了每个组件,它们都可以工作。

编辑:

我正在使用ghdl -a分析每个文件然后使用ghdl -e exp_equalizer_tb 从测试台构建可执行文件 最后,我正在运行可执行文件./exp_equalizer

我制作了一个脚本,它对我项目中的每个组件都执行相同的操作,并且我为所有这些组件提供了带有断言和报告的测试台,它们都工作正常。在这个组件中我没有得到预期的结果。

0 投票
1 回答
318 浏览

vhdl - 在 vhdl 中返回不受约束的数组

在 vhdl 中返回无约束向量的最佳方法是什么?

在这种情况下,我得到的字符串文字不能是类型转换操作数,所以它不起作用。信号选择器是通用的,因此它不必是可合成的。

0 投票
1 回答
647 浏览

vhdl - std_logic_vector VHDL 的除数

我尝试std_logic_vector用语言实现一个除数VHDL。在我实现它之后,我必须使用 GHDL 但遇到了这个错误:

它对应于:

我的代码是:

测试台:

我使用的2007是 GHDL 版本,我无法更新,我的老师要我使用这个版本。

有人可以帮我处理这段代码吗?

0 投票
0 回答
390 浏览

python - cocotb 中带有 generate 语句的不可用模块名称

我使用 cocotb v1.0 和 ghdl 0.35-dev(llvm 和 gcc 后端)。

顶层包含一个简单的 for generate 语句:

我尝试使用“dut.gen_pe[1]”访问我的 cocotb 测试台中第一个生成的模块。它产生错误:

在遍历 dut 时,它会从 generate 语句中发现以下子模块:

不幸的是,无法使用“dut.(1)”访问它们,因为它不是有效的 python 语法。

接下来我尝试从 cocotb/tests/test_cases/test_array 执行测试数组测试用例:

几乎所有的测试都失败了:

test_gen_loop 的输出是:

这与我设计中的错误相似。所以我猜这是模块命名的问题。

知道如何获取有效的模块名称或完全修复错误吗?

编辑:最小的例子

文件夹:/home/Programme/cocotb/examples/generate

/home/Programme/cocotb/examples/generate/hdl/top.vhd

/home/Programme/cocotb/examples/generate/tests/top_cocotb.py

/home/Programme/cocotb/examples/generate/tests/Makefile

执行 with 后make,gpi 模块名称(1) ... (4)而不是gen_pe(1) ... gen_pe(4)打印到控制台。

更新:

gpi 模块名称在最新版本的 ghdl 中是固定的。但是 cocotb 测试数组测试用例仍然失败。

0 投票
0 回答
216 浏览

vhdl - ghdl 将 vhdl 编译成什么?

ghdl 是否将 vhdl 代码编译成逐个门实现的虚拟电路?如果那我可以看到它编译的电路吗?

0 投票
0 回答
1544 浏览

macos - Mac OS 上的 GHDL 安装

我正在尝试在 MacOS (v0.35) 上安装最新版本的 GHDL。

我之前安装了 HomeBrew 安装的 0.29,但那个版本给我带来了一些问题,所以我需要升级。

我从发布网页下载了 tar 文件,发现它包含 3 个文件夹libincludebin.

我刚刚将这些文件夹的内容复制到/usr/local/{folder}(文件夹是binincludelib),但我想我错过了一些东西,因为我收到一条错误消息,说 GHDL 找不到std库。

我猜这是一个与路径相关的问题,因为如果我从下载文件夹运行 GHDL:

有用。

我究竟做错了什么?

0 投票
2 回答
2926 浏览

types - 在VHDL中定义类型以保持两个整数之和的正确方法

我正在尝试编写一个非常简单的模块,其中包含两个整数输入和一个选择输入。When select is 0 output should be sum of inputs and when select is 1 output should be difference of them. 我将使用 GHDL 通过一个简单的测试平台来验证该模块。该模块不必是可合成的。

我的第一次尝试如下。

问题是 GHDL 给出了溢出错误,因为据我所知,两个整数的总和不能适合另一个整数。

如何定义具有足够范围以保持结果的类型?我的第一次尝试如下。但是在这种情况下,我应该为新类型定义“+”和“-”运算符。

由于所需的范围比整数更宽,我不能使用子类型定义。如果我能够定义一个子类型,我可以使用为整数定义的“+”和“-”运算符,而无需重新定义它们。

编辑1:

对于那些想知道测试台和确切错误的人,这里是使用 EMACS vhdl-mode 半自动生成的测试台。

这是GHDL的确切错误:

第 21 行对应于

在源文件中。

编辑2:

关于我的 GHDL:

0 投票
0 回答
935 浏览

vhdl - 在 VHDL 中使用来自不同包的类型

我想创建一个包含我可以在其他地方加载并在那里使用的类型的包。但我不让它工作。

就我而言,我有这样的事情:

类型.vhdl

tb_types.vhdl

我像这样分析和编译测试台ghdl

如果我将虚拟实体注释掉,一切都会按预期工作。断言没有触发,它报告“一切顺利”。

我在这里做错了什么?

我也试过没有.alland 和types.fancy_vector_arrayand types.number。然后它说:no declaration for "types"