hdl相关内容

verilog 模块的条件实例化

是否可以在 verliog 中有条件地实例化模块? 例子: if (en==1)然后 module1 实例化别的模块2实例化 解决方案 来自 IEEE Std 1364-2001: 12.1.3.3 generate-conditional generate-conditional 是一个 if-else-if 生成构造,它允许模块、用户定义的原语、Verilog 门原语、连续分 ..
发布时间:2022-01-20 23:45:41 其他开发

行为到结构转换问题 VHDL

我为行为类型的 Rabin Miller 算法设计了素性测试.我使用函数来创建我的模块.不幸的是,当我尝试通过 Quartus 用我的 Altera 套件合成它时,我意识到该函数没有合成.在这里,我将编写我的整个程序,我真的需要您帮助至少给我一些提示以将其更改为结构性,因为它是我的高级设计项目.这是我的程序: 库 ieee;使用 ieee.std_logic_1164.all;使用 ieee. ..
发布时间:2021-09-17 19:53:28 其他开发

AXI4 (Lite) Narrow Burst vs. Unaligned Burst 澄清/兼容性

我目前正在编写一个应该也支持 AXI4 Lite (AXI4L) 的 AXI4 主控. 我的 AXI4 主设备正在从 16 位接口接收数据.这是在 Xilinx Spartan 6 FPGA 上进行的,我计划使用 EDK AXI4 互连 IP,其 WDATA 宽度至少为 32 位. 起初我想使用窄突发,即 AWSIZE = x"01"(传输 2 个字节).但是,我发现赛灵思的AXI R ..
发布时间:2021-09-17 19:51:44 其他开发

在 Verilog 上实现互惠的方法

我想在 Verilog 上实现一个交互模块,稍后将在 FPGA 上进行综合.输入应该是带符号的 32 位字长和 16 位小数长度.输出应具有相同的格式. 示例 输入:x ---> 输出 ---> 1/x 我已经使用内置的 IP 核分频器解决了这个问题.我想知道是否有一种优雅/替代的方法来解决这个问题,例如通过位移或 2 的补码和一些异或研磨. 我已经使用 IP 核来实现手册 ..
发布时间:2021-09-17 19:29:32 其他开发

verilog 中是否有非阻塞赋值的替代方法?

我写了一个 Verilog 代码,这段代码描述了一个组合模块.我使用了阻塞赋值.在其他部分,必须使用非阻塞赋值.我可以在阻塞分配中使用延迟来替代非阻塞分配吗...我不想将这两个分配混合在一个模块中 `timescale 1ns/1ps模块缓冲区(datain1,datain2,datain3,datain4,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,src_ ..
发布时间:2021-09-17 19:28:58 其他开发

RISCV VERILOG HDL 代码

在 Xilinx ISE 上编译 RISCV VERILOG HDL 时出现以下错误: 它说模块 vscale_pipeline 中第 296 行的以下代码中的“不支持的系统函数调用" 295: ifndef 合成296:PC_WB 解决方案 一些综合工具定义了 SYNTHESIS 宏,以便使用 更容易在综合中跳过不可综合的代码 `ifdef 合成...`endif 块,就像在 ..
发布时间:2021-09-17 19:28:48 其他开发

Verilog 测试台时钟

我已经尝试了多种方法,我现在有点绝望.我试图在我的测试台中制作这个时钟,问题是在模拟中它不起作用或者我的模拟似乎冻结了.我知道它必须是时钟. 初始开始永远的开始时钟 = 0;#10 clk = ~clk;结尾结尾最初的开始重置 = 0;#15 L = 0;R = 0;H = 0;#20 L = 0;R = 0;H = 1;#25 L = 0;R = 1;H = 0;#30 L = 0;R = ..
发布时间:2021-09-17 19:28:26 其他开发

Verilog:如何取绝对值

在 verilog 中,我有一个二进制值数组.如何取减去值的绝对值? Verilog 代码: module aaa(clk);输入时钟;reg [7:0] a [1:9];reg [7:0] s [1:9];总是@(posedge clk)开始s[1] = a[1] - a[2];s[2] = a[2] - a[3];s[3] = a[1] + a[3];结尾结束模块 我希望我的 s[1 ..
发布时间:2021-09-17 19:27:37 其他开发

我怎么知道我的代码是否可合成?[Verilog]

在使用自顶向下的方法在 verilog 中设计电路时,我可以从电路的行为开始,然后定义每个模块中的细节,以构建可综合的结构电路.但是我怎么知道我的代码是否可以合成呢?是否有任何可遵循的指南来支持 verilog 中的综合? 解决方案 有一个“标准",IEEE 1364.1 但正如 Martin 指出的那样,每个工具都支持它想要的任何东西.如果您需要免费资源,我推荐 Xilinx XST 用 ..
发布时间:2021-09-17 19:27:23 其他开发

在 Mac OS X 10.6.8 上使用什么来编译和模拟 Verilog 程序?

作为教学大纲的一部分,我需要模拟 Verilog 程序.但是,我所在的大学使用的是 Xilinx ISE,它不适用于 Mac. 所以请帮助我使用最好的软件以及有关如何安装和使用它们的一些详细步骤. 解决方案 你可以试试 Icarus Verilog,它是一个免费的 Verilog 模拟器. 根据此处的说明,您可以在 Mac OS X 上安装 Icarus Verilog. ..
发布时间:2021-09-17 19:26:47 其他开发

硬件描述语言(Verilog、VHDL 等)的最佳实践是什么?

在实施 HDL 代码时应遵守哪些最佳实践? 与更常见的软件开发领域相比,有哪些共同点和不同点? 解决方案 关于这个主题的最好的书是 重用方法手册.它涵盖了 VHDL 和 Verilog. 特别是一些在软件中没有完全匹配的问题: 没有闩锁 小心重置 检查您的内部和外部时间 仅使用可合成的代码 注册所有模块的输出 注意阻塞与非阻塞赋值 小心组合逻辑的敏感列表(或在 ..
发布时间:2021-09-17 19:25:41 其他开发

行为建模不是 testbench.test 中的有效 l 值

我正在尝试使用两个二进制输入 A 和 B 来获得二进制输出,即 F 就像下面的真值表一样,但它一直说: main.v:36: 错误:F3 不是 testbench.test 中的有效左值main.v:27:: F3 在这里被声明为 wire. 这是我的模型的真值表. A1 A0 B1 B0|F3 F2 F1 F00 0 0 0 |0 0 0 00 0 0 1 |0 0 0 00 0 1 0 ..
发布时间:2021-09-17 19:25:17 其他开发

数组中的个数

我试图在 Verilog 中计算 4 位二进制数中 1 的数量,但我的输出出乎意料.我尝试了几种方法;这是我认为应该有效的方法,但它没有. module ones(one,in);输入 [3:0] 输入;输出 [1:0] 一;赋值一 = 2'b00;赋值一 = 一+输入[3]+输入[2]+输入[1]+输入[0];结束模块 解决方案 首先,不能为变量赋值两次. 第二,你的范围是关闭的,2 ..
发布时间:2021-09-17 19:25:06 其他开发

Verilog 中的 == 和 === 有什么区别?

有什么区别: if (dataoutput[7:0] == 8'bx) 开始 和 if (dataoutput[7:0] === 8'bx) 开始 执行dataoutput = 52'bx后,第二个给1,第一个给0,为什么?(0 或 1 为比较结果.) 解决方案 Verilog 中的某些数据类型,例如 reg,是 4-state.这意味着每个位可以是 4 个值之一:0,1,x,z. ..
发布时间:2021-09-17 19:24:25 其他开发

Verilog 中的参数数组

是否可以在 Verilog 中创建一个 parameter 数组?例如,以下内容: parameter[TOTAL-1 : 0] PARAM_ARRAY = {1, 0, 0, 2} 如果不可能,有什么替代解决方案? 解决方案 给定的示例是将解压缩的值分配给压缩的参数数组.这在 Verilog 中是不允许的. Verilog 仅支持基于简单向量的参数.它不支持解压缩的数组.取代 ..
发布时间:2021-09-17 19:23:45 其他开发

verilog模块中的reg和wire有什么区别

reg 和 wire 有什么区别?我们什么时候应该使用 reg,什么时候应该在 verilog 模块中使用 wire.我也注意到有时输出再次声明为 reg.例如,D 触发器中的 reg Q.我在某处读过这个 - “过程赋值语句的目标输出必须是 reg 数据类型."什么是程序赋值语句?我已经彻底搜索了这个,但无法找到明确的解释. 解决方案 Wire:- 电线用于连接不同的元素.他们可以 ..
发布时间:2021-09-17 19:23:28 其他开发

Verilog 总是阻塞,没有敏感列表

没有敏感性列表的 always 块是否会推断组合逻辑,就像 always_comb 或 always @(*) 一样?例如代码: 总是开始如果 (sig_a) 开始@(posedge sig_b);//等待 sig_b posedge 事件@(否定 sig_b);//然后等待 sig_b 否定事件event_true=1;结尾如果(event_true)开始@((sig_c==1)&&(sig_ ..
发布时间:2021-09-04 18:49:57 其他开发

Verilog for 循环 - 综合

我对 Verilog 很陌生,但想正确理解它.目前我正在 FPGA 上制作 TxRx.我注意到我的代码消耗了大量的逻辑,尽管它不应该是那样的.所以我没有正确编写我的代码.我知道哪里出错了,显然我的 for 循环正在对表达式进行并行化(特别是因为这个 for 循环嵌套在另一个 for 循环中).编写代码以避免这种情况的正确方法是什么.该代码正在运行,但效率不高.随意评论,建议.我还在学习,所以每个建 ..
发布时间:2021-09-04 18:49:42 其他开发