vhdl - 其他 => Verilog 中的 '1' 语句

标签 vhdl verilog

我一生都在使用 VHDL,并且只使用 Verilog 很短的时间,我必须在 Verilog 中为一个非常大的数组创建一个逻辑,并根据输入的条件将其分配为 1 或 0。

这是我的 VHDL 代码

 if (data_track == '1' ) then
            my_array(MAX-1:MIN) <= (others=> '1');
 else
            my_array(MAX-1:MIN) <= (others=> '0');
 end if;

MAX 和 MIN 是模块的参数,在综合过程中根据我们访问的系统类型进行设置。

有没有办法在 Verilog 中轻松做到这一点?

最佳答案

参数与花括号的混合将有助于解决(内部花括号将充当复制运算符)

代码例如:

    parameter MAX = 16;

    assign high_val = 1'b1;
    assign low_val = 1'b0;

    if ( data_track ==1'b1) 
    my_array[MAX-1:MIN] <= {MAX{high_val}};
    else
    my_array[MAX-1:MIN] <= {MAX{low_val}};

在上面的代码中,带有花括号的 if 语句将使用 1 个值将 MSB 传播到 LSB,导致在我们的案例 16 中全为 1,然后结果将是 16'b1111111111111111,反之亦然

关于vhdl - 其他 => Verilog 中的 '1' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727784/

相关文章:

testing - 如何管理大型 VHDL 测试平台

vhdl - 有 VHDL-2008 标准类型保护类型实现吗?

hardware - 将两个一维数组相乘的快速方法

触发器的 verilog 表示

c - 如何用C发送差分UART信号

verilog - $display 每次 $monitor 在 Verilog 中工作时

verilog - 分配具有初始值的reg

vhdl - 为什么不是 VHDL 中的两进程状态机?

VHDL - 为什么直接在函数上使用长度属性会产生警告?

floating-point - 使用 Altera Quartus II 将 *.vhdl 编译成库