问题标签 [icarus]

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 回答
225 浏览

verilog - 为什么不遵守icarus verilog指定的时间?

我对“指定”的理解是它控制了从输入到输出的传播延迟。

所以 ..

我希望下面的代码在 118 处显示 'o' 变化 - 即当 'b' 更改时 108 之后的 10 个时间单位,但是在 115 处合并了 'b' 更改,这是更改后的 10 个单位。

我期待这个....

我是否误解了“指定”?

https://www.edaplayground.com/x/eBUY

=========

更新 ...

似乎按我预期的方式工作的两种替代方法见下文和https://www.edaplayground.com/x/P7kB

选项 1 和 2 都产生相同的输出......

有没有更好的方法让单个输入到输出传播延迟起作用?

顺便说一句,这个问题实际上是这个问题的动机更复杂的用例的一部分。我正在创建一个 74HCT151 的定时模型,并希望定时准确,因为我想生成已发布的定时暗示的稳定毛刺。

我应该为此创建一个单独的问题吗?

0 投票
1 回答
381 浏览

arrays - 无法在 Verilog 中创建“真实”类型数组

我尝试在 Icarus Verilog 中以下列方式创建一个“真实”类型的值数组:

给出以下错误:

我浏览了 icarus verilog src 代码错误消息,对此的解释是“特殊情况:l 值是整个内存或数组切片”。这实际上是 l 值的错误。通过注意索引计数是否小于数组维度(未打包)来检测情况”,我认为这意味着数组索引大小与声明的大小不同[width-1:0],如果我理解的话,这是不正确的。

我也试过:

但没有任何成功。

使用带有-g2012标志的 Icarus Verilog(用于 SV 支持)

0 投票
1 回答
99 浏览

memory - 无法从/在 SRAM 中加载/存储数据:读取数据未知

我有一个与 SRAM 存储器的 Verilog 实现相关的问题。模块sram_1port应该是具有读使能信号和写使能信号的时钟寻址可寻址SRAM存储器。模块control_sram应该在 SRAM 中读/写数据。数据以连续的内存地址连续存储。当我尝试模拟电路行为时会出现问题,因此rd_data在整个模拟过程中信号是不确定的。因此,内存内容无法输出,我什至不知道为什么。数据存储的时候有问题,或者内容应该输出的时候有问题,还是两者都有问题?

在这里你可以看到图表

0 投票
1 回答
73 浏览

memory - 在模拟中访问 RAM 内容时看不到任何内容

我在尝试设计 SRAM 内存时遇到了问题。更具体地说,内存有时钟,有一个写使能——高电平时,可以写数据,低电平时,可以读数据——地址输入,指定写入/读取数据的内存地址. 然后,我创建了一个名为 的模块user,方便写操作;因此,写入数据时无需提供内存地址。

当我尝试模拟电路时会出现我的问题,因为在访问内存内容时看不到任何东西。在测试台中,我指定了一些要存储在内存中的值,然后,我提取了数据,但没有成功。

我在这里附上了代码。

0 投票
0 回答
67 浏览

memory - 我看不到记忆的内容

当我尝试模拟一个应该处理从 SRAM 存储器获取的数据的电路时,我遇到了问题。首先,SRAM存储器中充满了数据,如果查看最后一个测试台可以看出这一点,然后存储的数据将由自动机处理。然后,在某些特定情况下,输出将存储在另一个 SRAM 存储器中。因此,在仿真时,电路会以一种奇怪的方式运行,因为表示从第一个 SRAM 存储器读取数据的 rd_data_instrucions 始终未定义。因此,取决于 rd_data_instructions 的所有其他信号也未定义。代码发布在这里。

PS:模块 sram_1port_instructions 和 sram_1port_data 应该作为时钟 SRAM,具有写使能信号,因此当 wr_en 为高电平时,内存存储接收到的数据(wr_data),当 wr_en 为低电平时,内存可以输出数据(rd_data)。模块用户代表一个“接口”,它有助于写入过程,因此写入 SRAM 指令存储器不需要存储数据的地址,因为该模块提供了一种增加存储器“写地址指针”的机制。此外,我们可以看到该模块对应的测试平台。然后,我们可以看到另一个内存的对应模块,它是为输出存储而创建的,以及一个旨在促进读取过程的模块(即类似于前面的情况,但是,它不是促进写作过程,而是简化了阅读)。最后但并非最不重要的一点是,我们可以区分一个叉骨模块,它应该互连所有先前的模块以创建一个数字系统。因此,自动机从 SRAM 指令存储器中获取数据,然后输出一些存储在另一个存储器中的数据。最后,可以从 SRAM 数据存储器中读取结果。当我尝试模拟系统时会出现问题,因为我在尝试读取某些信号时遇到困难,例如 rd_data_instructions,它应该显示以前存储的 SRAM 指令存储器中的值,隐含的“in”信号,它应该提供输入自动机等等。在叉骨模块中,我使用了一个标有“开始”的特殊信号 它将写使能设置为 0,以便 SRAM 存储器为读取过程做好准备。这个特殊的信号实际上触发了自动机,通过“输入”来自内存的输入数据。

0 投票
1 回答
69 浏览

memory - 我看到未定义的输出序列在模拟中读取内存

我有一个与时钟 SRAM 内存的实现有关的问题,该内存应该存储用户写入的数据,然后显示内存内容。此外,我创建了一个名为的模块display,它简化了读取过程,因此无需通过在每次读取后增加一个寄存器来提供应该从中提取数据的内存地址。然而,当我模拟电路时,我看不到正确的输出;因此,当我读取内存时,我注意到一些未定义的输出序列。我在下面发布了相应的代码。

0 投票
1 回答
156 浏览

testing - 如何测试 3 位总线的第一位是否设置为 1 - verilog

我试图找出如何检查 3 位总线的 msb 是否设置为 1,即 1xx。当我检查 bus==3'b1xx 时,似乎什么也没发生。

0 投票
1 回答
303 浏览

memory - 为什么不读取内存内容?- verilog 数字系统设计

我创建了一个由两个时钟控制的 SRAM 组成的微系统,一个用于存储指令代码,另一个用于存储一些输出值。指令SRAM有一个名为“user”的接口模块,它提供了一种简化写入过程的机制,因此,当在存储器中写入数据时,无需指定必须存储这些指令的相应存储器地址。同样,当从第二个 SRAM 读取数据时,无需指定从中提取数据的相应内存地址,这要归功于“显示”模块。更具体地说,当在指令存储器中写入数据时,一个计数器在每次写入后递增地址指针,而第二个存储器有另一个计数器在每次读取后递增地址指针值。当一个人试图从指令存储器中读取信息时,他们必须指定应该从中读取数据的存储器地址,并且正如预期的那样,当一个人试图在输出存储器中写入信息时,他们必须指定其中的存储器地址。应该写入数据。此外,微系统有一个自动机,它从指令存储器中获取输入数据并对其进行处理。处理完信息后,自动机将一些输出值存储在输出存储器中。我在模拟时遇到了一个问题,因为显然无法看到从 SRAM 内存中读取的值,即 rd_data_instrucions,因此,既找不到自动机的输入值“in”,也找不到输出值,只要因为它们取决于从第一个 SRAM 读取的数据。我发布了下面的代码和图表。

rd_data_instructions:在001值之后应该有一个000,但是,相反,它是未定义的值,因为rd_data_instructions应该类似于wr_data_instructions,在wr_data_instructions == 100的那一刻之后,100指令具有停止的含义,因此自动机开始读取从那时起存储在内存中的指令

0 投票
1 回答
59 浏览

verilog - 行为建模在 testbench.test 中不是有效的左值

我正在尝试使用两个二进制输入 A 和 B 来获得二进制输出,即 F 就像下面的真值表一样,但它一直在说:

这是我的模型的真值表。

我的 icarus Verilog 代码在这里:

0 投票
0 回答
29 浏览

verilog - 在 IF 语句中调用 verilog 模块

我有一个接收输入值的模块。我的输入是符号幅度形式,所以我试图检查输入是负数还是正数,然后调用cordic模块。如果它是一个负数,我需要在调用cordic模块之前交换x_i和y_i的值。

根据我对 verilog 的有限了解,我知道 IF 语句必须在 always 块内,但是当我将所有内容都放在 always @ 块内时,会出现错误。那时我做了一些研究,发现模块不能在 IF 语句中调用。在这种情况下我能做什么?

PS对不起我的错误解释我只是Verilog的初学者。