verilog中padding_width的目的是什么?

时间:2019-06-15 16:40:26

标签: verilog hdl

以下verilog行的用途是什么

{(PADDING_WIDTH+1){int_dat_b_reg[ADC_DATA_WIDTH-1]}}, ~int_dat_b_reg[ADC_DATA_WIDTH-2:0]

知道:

padding_width = 2, ADC_DATA_WIDTH=14

您可以在以下链接上找到完整的程序:https://github.com/pavel-demin/red-pitaya-notes/blob/master/cores/axis_red_pitaya_adc_v2_0/axis_red_pitaya_adc.v

1 个答案:

答案 0 :(得分:0)

此代码采用int_dat_a_regint_dat_b_reg的补码,它们都是14位值,并将它们扩展为16位值。然后将它们串联为32位结果。假设变量是带符号的。如果您首先将变量声明为带符号的,然后将赋给带符号的16位变量,则可以简化此代码。

在SystemVerilog中,使用强制转换甚至会更简单。

typedef bit signed [AXIS_TDATA_WIDTH/2:0] HALF_WIDTH;
assign m_axis_tdata = {
   ~ HALF_WIDTH'(int_dat_a_reg), 
   ~ HALF_WIDTH'(int_dat_b_reg) };