3种方法:
1.JPL近似的实现方法
`timescale 1ns / 1ps module complex_abs#(parameter N=32)( clk, syn_rst, dataa, datab, ampout); input clk; input [N-1:0] dataa; input [N-1:0] datab; input syn_rst; output reg [N-1:0]ampout; reg [N-1:0]dataa_reg ; reg [N-1:0]datab_reg ; wire [N-2:0]dataa_abs ; wire [N-2:0]datab_abs ; reg [N-2:0]dataabs_max,dataabs_min ; reg [N-1:0]absmin_3 ; always @(posedge clk) begin if(syn_rst == 1'b1) begin dataa_reg <= 'd0 ; datab_reg <= 'd0 ; end else begin dataa_reg <= dataa ; datab_reg <= datab ; end end assign dataa_abs = (dataa_reg[31] == 1'b1) ? (31'd0-dataa_reg[N-2:0]) : dataa_reg[N-2:0] ; assign datab_abs = (datab_reg[31] == 1'b1) ? (31'd0-datab_reg[N-2:0]) : datab_reg[N-2:0] ; always @(posedge clk) begin if(dataa_abs > datab_abs) begin dataabs_max <= dataa_abs ; dataabs_min <= datab_abs ; absmin_3 <= { 1'b0,datab_abs}+{datab_abs,1'b0} ; end else