如果我有一个向量并且我想从某个地方开始读取它的一部分,我可以使用语法“vector[staring_point +: output_length]”,starting_point 是 integer 吗? 可以合成吗? 如果我写这样的代码: 设计就是这样,输入和 output 绑定到 GPIO。 ...
如果我有一个向量并且我想从某个地方开始读取它的一部分,我可以使用语法“vector[staring_point +: output_length]”,starting_point 是 integer 吗? 可以合成吗? 如果我写这样的代码: 设计就是这样,输入和 output 绑定到 GPIO。 ...
我想在 VHDL 中对 std_logic_vector 进行切片,以获得固定尺寸的部分。 一般的问题是:din N*M bits dout M bits sel clog2(N) bits 示例中的预期行为(伪代码):输入 16 位,希望将其分成 4 个子向量,每个子向量为 4 位。s ...
我无法理解 disable 语句在上述代码中的实际行为。 我原以为statement 1只会执行一次,然后永远禁用 always 块 (b1)。 但实际上statement 1正在无限执行(直到进程被终止)而statement 2被跳过。 我已经尝试了 EDA Playground 的所有模拟器。 ...
假设我有以下内容: VHDL-2008 中是否有一种通用方法来指定任何这些类型之间的转换,而无需为每种可能的排列定义转换函数? ...
我正在使用外部命名来实例化以下代码: 如您所见,我的引用中有很多重复。 有没有办法做类似的事情: 这样我就可以缩短我所有的外部命名参考? ...
我正在尝试显示coverpoint中特定 bin 的覆盖率(以百分比表示)。 我能够显示coverpoint coverpoint各个 bin 的覆盖百分比。 我想做以下 //$display("c1 coverpoint 中 bin a 的覆盖率:%d", $coverage(cov_a_ins ...
很容易想象计算机如何设法在 memory 中存储 reg 和 int 变量。只需在 memory 中分别分配 1/32 位并以二进制形式存储初始化值。 当需要打印这些变量时,它们会根据格式说明符(%d、%b 等)转换回人类可读的形式。 **但是计算机如何设法在 memory 中存储有线数据类型? ...
我一直以传统方式使用 Verilog 参数,即将它们传递给模块实例化以允许使用不同的规范。 换句话说,用于用给定的参数值替换 HDL 代码中的文本。 我也可以用它来进行逻辑计算吗? 如果我声明以下参数:parameter CONST = 100; 据我了解,CONST 将是 32 位(整数)。 例如 ...
我对 SystemVerilog 很陌生,我试图从另一个二维数组为二维数组赋值,但每次编译时都会出现此错误: 错误:(vlog-13069)../src/dadda tree/daddaTree.sv(75):靠近“[”:语法错误,意外的“[”。 这里的代码: 我可以将整个原始位分配为assign ...
我这样声明了一个计数器: 我使用BigInt是因为我想计算宽度超过 32 位的值。 但是 Chisel3 告诉我只有 Int 被接受为计数器值。 那就不能数大于2**32了? ...
我正在实现一个四位纹波进位加法器,但在以下测试中出现错误: 这是我的代码: 四位加法器.v 一位加法器.v 四位加法器测试.v 我仔细检查了我所有的电路,它们看起来很好。 ...
假设我们有两个if条件将值赋给同一个变量,并且两个if语句可以同时为真。 x 的值是多少? 假设 z 和 y 等于 0。 从我在模拟器中的测试来看,代码中写得较低的if语句具有优先权。 当我用 z 和 y 的值等于 0 模拟下面的代码时,x 的值为 1。当我交换if条件时(带有“,z”的if条件 ...
我正在尝试制作一个 4 位加法器并对其进行测试。 我决定使用wait来确定加法器电路何时完成,方法是检查我的sum和carry_out >= 0。电路的输入作为命令行 arguments 给出。我正在使用我的全加器构建我的 4 位加法器,它我能够使用这种方法成功测试。 全加器.v 4_bit ...
我有以下信号: 我想将整个twoDim分配给oneDim即如果我写这样的东西: 和parameter X = 5那么我希望行为与以下相同: 这将如何在 Synthesizable SystemVerilog 中针对 X、Y 的所有可能值(它们是int unsigned )简洁地完成? ...
我正在尝试为具有参数化输入数量的多路复用器模块编写 Verilog 代码。 我知道您可以将输入打包在一起并使用 select 输入来分割打包的变量,但我想为我的多路复用器使用二叉树结构。 问题在于使用辅助变量正确索引内部连线 (interm_w),这意味着我需要能够在内部 for 循环的每次迭代后修 ...
我是 Verilog 编程的新手,想知道 Verilog 程序是如何执行的。 是所有初始和始终块执行都在时间 t = 0 开始,还是初始块执行开始于时间 t = 0 并且所有始终块在初始块执行之后开始? 我检查了 Verilog 程序的抽象语法树,所有初始块和始终块都从同一层次结构开始。 非常感谢。 ...
我想要一个 SystemVerilog class,其中包含另一个 class 的数组,如下所示: 如何在 SystemVerilog 中定义一个类数组? 如何让构造函数设置所述 class 数组中的 class 对象的数量? ...
我正在尝试将 edge_triggered reset 添加到我的module中,这意味着只有在reset中检测到从 0 到 1 的瞬态时,才应该执行重置操作。 此外,我不想在我的模块中使用任何initial块(因为我认为初始块在 FPGA 中存在问题)。 最后,我决定遵循以下内容: 但我遇到的问题 ...
不应该是 1 ( 1or1 = 1; 1or0 = 1) ...
我正在尝试编写一个 Verilog 模块,其中一段代码是这样的: 但问题是 always 块的第一行被忽略(在每个 clk posedge 之后),换句话说, data_in没有放在buffer[119:112]中并且 buffer 始终保持200'b0 ! 第一个问题是什么原因? 第二个问题是我怎 ...