以下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
答案 0 :(得分:0)
此代码采用int_dat_a_reg
和int_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) };