io_outR=√ ̄(io_inX*io_inX)+(io_inY*io_inY)
io_outTheta=arctan(io_inY/io_inX) // |io_inX|<=2^14 和|io_inY|<=2^14
- module PqxCordicVm(
- input clock,
- input reset,
- input [31:0] io_inX,
- input [31:0] io_inY,
- output [31:0] io_outR,
- output [31:0] io_outTheta
- );
- `ifdef RANDOMIZE_REG_INIT
- reg [31:0] _RAND_0;
- reg [31:0] _RAND_1;
- reg [31:0] _RAND_2;
- reg [31:0] _RAND_3;
- reg [31:0] _RAND_4;
- reg [31:0] _RAND_5;
- reg [31:0] _RAND_6;
- reg [31:0] _RAND_7;
- reg [31:0] _RAND_8;
- reg [31:0] _RAND_9;
- reg [31:0] _RAND_10;
- reg [31:0] _RAND_11;
- reg [31:0] _RAND_12;
- reg [31:0] _RAND_13;
- reg [31:0] _RAND_14;
- reg [31:0] _RAND_15;
- reg [31:0] _RAND_16;
- reg [31:0] _RAND_17;
- reg [31:0] _RAND_18;
- reg [31:0] _RAND_19;
- reg [31:0] _RAND_20;
- reg [31:0] _RAND_21;
- reg [31:0] _RAND_22;
- reg [31:0] _RAND_23;
- reg [31:0] _RAND_24;
- reg [31:0] _RAND_25;
- reg [31:0] _RAND_26;
- reg [31:0] _RAND_27;
- reg [31:0] _RAND_28;
- `endif
- reg [31:0] Xns_0;
- reg [31:0] Xns_1;
- reg [31:0] Xns_2;
- reg [31:0] Xns_3;
- reg [31:0] Xns_4;
- reg [31:0] Xns_5;
- reg [31:0] Xns_6;
- reg [31:0] Xns_7;
- reg [31:0] Xns_8;
- reg [31:0] Xns_9;
- reg [31:0] Yns_0;
- reg [31:0] Yns_1;
- reg [31:0] Yns_2;
- reg [31:0] Yns_3;
- reg [31:0] Yns_4;
- reg [31:0] Yns_5;
- reg [31:0] Yns_6;
- reg [31:0] Yns_7;
- reg [31:0] Yns_8;
- reg [31:0] Zns_0;
- reg [31:0] Zns_1;
- reg [31:0] Zns_2;
- reg [31:0] Zns_3;
- reg [31:0] Zns_4;
- reg [31:0] Zns_5;
- reg [31:0] Zns_6;
- reg [31:0] Zns_7;
- reg [31:0] Zns_8;
- reg [31:0] Zns_9;
- wire [31:0] _Xns_0_T_3 = 32'sh0 - $signed(io_inY);
- wire [31:0] _Xns_0_T_4 = io_inY[31] ? $signed(io_inY) : $signed(_Xns_0_T_3);
- wire [31:0] _Xns_0_T_7 = $signed(io_inX) - $signed(_Xns_0_T_4);
- wire [31:0] _Yns_0_T_3 = 32'sh0 - $signed(io_inX);
- wire [31:0] _Yns_0_T_4 = io_inY[31] ? $signed(io_inX) : $signed(_Yns_0_T_3);
- wire [31:0] _Yns_0_T_7 = $signed(io_inY) + $signed(_Yns_0_T_4);
- wire [31:0] _Zns_0_T_3 = 32'sh0 - 32'shc910;
- wire [30:0] _Xns_1_T = Yns_0[31:1];
- wire [31:0] _GEN_27 = {{1{_Xns_1_T[30]}},_Xns_1_T};
- wire [31:0] _Xns_1_T_3 = $signed(Xns_0) - $signed(_GEN_27);
- wire [30:0] _Yns_1_T = Xns_0[31:1];
- wire [31:0] _GEN_28 = {{1{_Yns_1_T[30]}},_Yns_1_T};
- wire [31:0] _Yns_1_T_3 = $signed(Yns_0) + $signed(_GEN_28);
- wire [31:0] _Zns_1_T_2 = $signed(Zns_0) - 32'sh76b2;
- wire [31:0] _Xns_1_T_7 = $signed(Xns_0) + $signed(_GEN_27);
- wire [31:0] _Yns_1_T_7 = $signed(Yns_0) - $signed(_GEN_28);
- wire [31:0] _Zns_1_T_5 = $signed(Zns_0) + 32'sh76b2;
- wire [29:0] _Xns_2_T = Yns_1[31:2];
- wire [31:0] _GEN_31 = {{2{_Xns_2_T[29]}},_Xns_2_T};
- wire [31:0] _Xns_2_T_3 = $signed(Xns_1) - $signed(_GEN_31);
- wire [29:0] _Yns_2_T = Xns_1[31:2];
- wire [31:0] _GEN_32 = {{2{_Yns_2_T[29]}},_Yns_2_T};
- wire [31:0] _Yns_2_T_3 = $signed(Yns_1) + $signed(_GEN_32);
- wire [31:0] _Zns_2_T_2 = $signed(Zns_1) - 32'sh3eb7;
- wire [31:0] _Xns_2_T_7 = $signed(Xns_1) + $signed(_GEN_31);
- wire [31:0] _Yns_2_T_7 = $signed(Yns_1) - $signed(_GEN_32);
- wire [31:0] _Zns_2_T_5 = $signed(Zns_1) + 32'sh3eb7;
- wire [28:0] _Xns_3_T = Yns_2[31:3];
- wire [31:0] _GEN_35 = {{3{_Xns_3_T[28]}},_Xns_3_T};
- wire [31:0] _Xns_3_T_3 = $signed(Xns_2) - $signed(_GEN_35);
- wire [28:0] _Yns_3_T = Xns_2[31:3];
- wire [31:0] _GEN_36 = {{3{_Yns_3_T[28]}},_Yns_3_T};
- wire [31:0] _Yns_3_T_3 = $signed(Yns_2) + $signed(_GEN_36);
- wire [31:0] _Zns_3_T_2 = $signed(Zns_2) - 32'sh1fd6;
- wire [31:0] _Xns_3_T_7 = $signed(Xns_2) + $signed(_GEN_35);
- wire [31:0] _Yns_3_T_7 = $signed(Yns_2) - $signed(_GEN_36);
- wire [31:0] _Zns_3_T_5 = $signed(Zns_2) + 32'sh1fd6;
- wire [27:0] _Xns_4_T = Yns_3[31:4];
- wire [31:0] _GEN_39 = {{4{_Xns_4_T[27]}},_Xns_4_T};
- wire [31:0] _Xns_4_T_3 = $signed(Xns_3) - $signed(_GEN_39);
- wire [27:0] _Yns_4_T = Xns_3[31:4];
- wire [31:0] _GEN_40 = {{4{_Yns_4_T[27]}},_Yns_4_T};
- wire [31:0] _Yns_4_T_3 = $signed(Yns_3) + $signed(_GEN_40);
- wire [31:0] _Zns_4_T_2 = $signed(Zns_3) - 32'shffb;
- wire [31:0] _Xns_4_T_7 = $signed(Xns_3) + $signed(_GEN_39);
- wire [31:0] _Yns_4_T_7 = $signed(Yns_3) - $signed(_GEN_40);
- wire [31:0] _Zns_4_T_5 = $signed(Zns_3) + 32'shffb;
- wire [26:0] _Xns_5_T = Yns_4[31:5];
- wire [31:0] _GEN_43 = {{5{_Xns_5_T[26]}},_Xns_5_T};
- wire [31:0] _Xns_5_T_3 = $signed(Xns_4) - $signed(_GEN_43);
- wire [26:0] _Yns_5_T = Xns_4[31:5];
- wire [31:0] _GEN_44 = {{5{_Yns_5_T[26]}},_Yns_5_T};
- wire [31:0] _Yns_5_T_3 = $signed(Yns_4) + $signed(_GEN_44);
- wire [31:0] _Zns_5_T_2 = $signed(Zns_4) - 32'sh7ff;
- wire [31:0] _Xns_5_T_7 = $signed(Xns_4) + $signed(_GEN_43);
- wire [31:0] _Yns_5_T_7 = $signed(Yns_4) - $signed(_GEN_44);
- wire [31:0] _Zns_5_T_5 = $signed(Zns_4) + 32'sh7ff;
- wire [25:0] _Xns_6_T = Yns_5[31:6];
- wire [31:0] _GEN_47 = {{6{_Xns_6_T[25]}},_Xns_6_T};
- wire [31:0] _Xns_6_T_3 = $signed(Xns_5) - $signed(_GEN_47);
- wire [25:0] _Yns_6_T = Xns_5[31:6];
- wire [31:0] _GEN_48 = {{6{_Yns_6_T[25]}},_Yns_6_T};
- wire [31:0] _Yns_6_T_3 = $signed(Yns_5) + $signed(_GEN_48);
- wire [31:0] _Zns_6_T_2 = $signed(Zns_5) - 32'sh400;
- wire [31:0] _Xns_6_T_7 = $signed(Xns_5) + $signed(_GEN_47);
- wire [31:0] _Yns_6_T_7 = $signed(Yns_5) - $signed(_GEN_48);
- wire [31:0] _Zns_6_T_5 = $signed(Zns_5) + 32'sh400;
- wire [24:0] _Xns_7_T = Yns_6[31:7];
- wire [31:0] _GEN_51 = {{7{_Xns_7_T[24]}},_Xns_7_T};
- wire [31:0] _Xns_7_T_3 = $signed(Xns_6) - $signed(_GEN_51);
- wire [24:0] _Yns_7_T = Xns_6[31:7];
- wire [31:0] _GEN_52 = {{7{_Yns_7_T[24]}},_Yns_7_T};
- wire [31:0] _Yns_7_T_3 = $signed(Yns_6) + $signed(_GEN_52);
- wire [31:0] _Zns_7_T_2 = $signed(Zns_6) - 32'sh200;
- wire [31:0] _Xns_7_T_7 = $signed(Xns_6) + $signed(_GEN_51);
- wire [31:0] _Yns_7_T_7 = $signed(Yns_6) - $signed(_GEN_52);
- wire [31:0] _Zns_7_T_5 = $signed(Zns_6) + 32'sh200;
- wire [23:0] _Xns_8_T = Yns_7[31:8];
- wire [31:0] _GEN_55 = {{8{_Xns_8_T[23]}},_Xns_8_T};
- wire [31:0] _Xns_8_T_3 = $signed(Xns_7) - $signed(_GEN_55);
- wire [23:0] _Yns_8_T = Xns_7[31:8];
- wire [31:0] _GEN_56 = {{8{_Yns_8_T[23]}},_Yns_8_T};
- wire [31:0] _Yns_8_T_3 = $signed(Yns_7) + $signed(_GEN_56);
- wire [31:0] _Zns_8_T_2 = $signed(Zns_7) - 32'sh100;
- wire [31:0] _Xns_8_T_7 = $signed(Xns_7) + $signed(_GEN_55);
- wire [31:0] _Yns_8_T_7 = $signed(Yns_7) - $signed(_GEN_56);
- wire [31:0] _Zns_8_T_5 = $signed(Zns_7) + 32'sh100;
- wire [22:0] _Xns_9_T = Yns_8[31:9];
- wire [31:0] _GEN_59 = {{9{_Xns_9_T[22]}},_Xns_9_T};
- wire [31:0] _Xns_9_T_3 = $signed(Xns_8) - $signed(_GEN_59);
- wire [31:0] _Zns_9_T_2 = $signed(Zns_8) - 32'sh80;
- wire [31:0] _Xns_9_T_7 = $signed(Xns_8) + $signed(_GEN_59);
- wire [31:0] _Zns_9_T_5 = $signed(Zns_8) + 32'sh80;
- wire [63:0] _io_outR_T = $signed(Xns_9) * 32'sh9b75;
- wire [47:0] _GEN_63 = _io_outR_T[63:16];
- assign io_outR = _GEN_63[31:0];
- assign io_outTheta = Zns_9;
- always @(posedge clock) begin
- if (reset) begin
- Xns_0 <= 32'sh0;
- end else begin
- Xns_0 <= _Xns_0_T_7;
- end
- if (reset) begin
- Xns_1 <= 32'sh0;
- end else if (Yns_0[31]) begin
- Xns_1 <= _Xns_1_T_3;
- end else begin
- Xns_1 <= _Xns_1_T_7;
- end
- if (reset) begin
- Xns_2 <= 32'sh0;
- end else if (Yns_1[31]) begin
- Xns_2 <= _Xns_2_T_3;
- end else begin
- Xns_2 <= _Xns_2_T_7;
- end
- if (reset) begin
- Xns_3 <= 32'sh0;
- end else if (Yns_2[31]) begin
- Xns_3 <= _Xns_3_T_3;
- end else begin
- Xns_3 <= _Xns_3_T_7;
- end
- if (reset) begin
- Xns_4 <= 32'sh0;
- end else if (Yns_3[31]) begin
- Xns_4 <= _Xns_4_T_3;
- end else begin
- Xns_4 <= _Xns_4_T_7;
- end
- if (reset) begin
- Xns_5 <= 32'sh0;
- end else if (Yns_4[31]) begin
- Xns_5 <= _Xns_5_T_3;
- end else begin
- Xns_5 <= _Xns_5_T_7;
- end
- if (reset) begin
- Xns_6 <= 32'sh0;
- end else if (Yns_5[31]) begin
- Xns_6 <= _Xns_6_T_3;
- end else begin
- Xns_6 <= _Xns_6_T_7;
- end
- if (reset) begin
- Xns_7 <= 32'sh0;
- end else if (Yns_6[31]) begin
- Xns_7 <= _Xns_7_T_3;
- end else begin
- Xns_7 <= _Xns_7_T_7;
- end
- if (reset) begin
- Xns_8 <= 32'sh0;
- end else if (Yns_7[31]) begin
- Xns_8 <= _Xns_8_T_3;
- end else begin
- Xns_8 <= _Xns_8_T_7;
- end
- if (reset) begin
- Xns_9 <= 32'sh0;
- end else if (Yns_8[31]) begin
- Xns_9 <= _Xns_9_T_3;
- end else begin
- Xns_9 <= _Xns_9_T_7;
- end
- if (reset) begin
- Yns_0 <= 32'sh0;
- end else begin
- Yns_0 <= _Yns_0_T_7;
- end
- if (reset) begin
- Yns_1 <= 32'sh0;
- end else if (Yns_0[31]) begin
- Yns_1 <= _Yns_1_T_3;
- end else begin
- Yns_1 <= _Yns_1_T_7;
- end
- if (reset) begin
- Yns_2 <= 32'sh0;
- end else if (Yns_1[31]) begin
- Yns_2 <= _Yns_2_T_3;
- end else begin
- Yns_2 <= _Yns_2_T_7;
- end
- if (reset) begin
- Yns_3 <= 32'sh0;
- end else if (Yns_2[31]) begin
- Yns_3 <= _Yns_3_T_3;
- end else begin
- Yns_3 <= _Yns_3_T_7;
- end
- if (reset) begin
- Yns_4 <= 32'sh0;
- end else if (Yns_3[31]) begin
- Yns_4 <= _Yns_4_T_3;
- end else begin
- Yns_4 <= _Yns_4_T_7;
- end
- if (reset) begin
- Yns_5 <= 32'sh0;
- end else if (Yns_4[31]) begin
- Yns_5 <= _Yns_5_T_3;
- end else begin
- Yns_5 <= _Yns_5_T_7;
- end
- if (reset) begin
- Yns_6 <= 32'sh0;
- end else if (Yns_5[31]) begin
- Yns_6 <= _Yns_6_T_3;
- end else begin
- Yns_6 <= _Yns_6_T_7;
- end
- if (reset) begin
- Yns_7 <= 32'sh0;
- end else if (Yns_6[31]) begin
- Yns_7 <= _Yns_7_T_3;
- end else begin
- Yns_7 <= _Yns_7_T_7;
- end
- if (reset) begin
- Yns_8 <= 32'sh0;
- end else if (Yns_7[31]) begin
- Yns_8 <= _Yns_8_T_3;
- end else begin
- Yns_8 <= _Yns_8_T_7;
- end
- if (reset) begin
- Zns_0 <= 32'sh0;
- end else if (io_inY[31]) begin
- Zns_0 <= _Zns_0_T_3;
- end else begin
- Zns_0 <= 32'shc910;
- end
- if (reset) begin
- Zns_1 <= 32'sh0;
- end else if (Yns_0[31]) begin
- Zns_1 <= _Zns_1_T_2;
- end else begin
- Zns_1 <= _Zns_1_T_5;
- end
- if (reset) begin
- Zns_2 <= 32'sh0;
- end else if (Yns_1[31]) begin
- Zns_2 <= _Zns_2_T_2;
- end else begin
- Zns_2 <= _Zns_2_T_5;
- end
- if (reset) begin
- Zns_3 <= 32'sh0;
- end else if (Yns_2[31]) begin
- Zns_3 <= _Zns_3_T_2;
- end else begin
- Zns_3 <= _Zns_3_T_5;
- end
- if (reset) begin
- Zns_4 <= 32'sh0;
- end else if (Yns_3[31]) begin
- Zns_4 <= _Zns_4_T_2;
- end else begin
- Zns_4 <= _Zns_4_T_5;
- end
- if (reset) begin
- Zns_5 <= 32'sh0;
- end else if (Yns_4[31]) begin
- Zns_5 <= _Zns_5_T_2;
- end else begin
- Zns_5 <= _Zns_5_T_5;
- end
- if (reset) begin
- Zns_6 <= 32'sh0;
- end else if (Yns_5[31]) begin
- Zns_6 <= _Zns_6_T_2;
- end else begin
- Zns_6 <= _Zns_6_T_5;
- end
- if (reset) begin
- Zns_7 <= 32'sh0;
- end else if (Yns_6[31]) begin
- Zns_7 <= _Zns_7_T_2;
- end else begin
- Zns_7 <= _Zns_7_T_5;
- end
- if (reset) begin
- Zns_8 <= 32'sh0;
- end else if (Yns_7[31]) begin
- Zns_8 <= _Zns_8_T_2;
- end else begin
- Zns_8 <= _Zns_8_T_5;
- end
- if (reset) begin
- Zns_9 <= 32'sh0;
- end else if (Yns_8[31]) begin
- Zns_9 <= _Zns_9_T_2;
- end else begin
- Zns_9 <= _Zns_9_T_5;
- end
- end
-
- `ifdef RANDOMIZE_GARBAGE_ASSIGN
- `define RANDOMIZE
- `endif
- `ifdef RANDOMIZE_INVALID_ASSIGN
- `define RANDOMIZE
- `endif
- `ifdef RANDOMIZE_REG_INIT
- `define RANDOMIZE
- `endif
- `ifdef RANDOMIZE_MEM_INIT
- `define RANDOMIZE
- `endif
- `ifndef RANDOM
- `define RANDOM $random
- `endif
- `ifdef RANDOMIZE_MEM_INIT
- integer initvar;
- `endif
- `ifndef SYNTHESIS
- `ifdef FIRRTL_BEFORE_INITIAL
- `FIRRTL_BEFORE_INITIAL
- `endif
- initial begin
- `ifdef RANDOMIZE
- `ifdef INIT_RANDOM
- `INIT_RANDOM
- `endif
- `ifndef VERILATOR
- `ifdef RANDOMIZE_DELAY
- #`RANDOMIZE_DELAY begin end
- `else
- #0.002 begin end
- `endif
- `endif
- `ifdef RANDOMIZE_REG_INIT
- _RAND_0 = {1{`RANDOM}};
- Xns_0 = _RAND_0[31:0];
- _RAND_1 = {1{`RANDOM}};
- Xns_1 = _RAND_1[31:0];
- _RAND_2 = {1{`RANDOM}};
- Xns_2 = _RAND_2[31:0];
- _RAND_3 = {1{`RANDOM}};
- Xns_3 = _RAND_3[31:0];
- _RAND_4 = {1{`RANDOM}};
- Xns_4 = _RAND_4[31:0];
- _RAND_5 = {1{`RANDOM}};
- Xns_5 = _RAND_5[31:0];
- _RAND_6 = {1{`RANDOM}};
- Xns_6 = _RAND_6[31:0];
- _RAND_7 = {1{`RANDOM}};
- Xns_7 = _RAND_7[31:0];
- _RAND_8 = {1{`RANDOM}};
- Xns_8 = _RAND_8[31:0];
- _RAND_9 = {1{`RANDOM}};
- Xns_9 = _RAND_9[31:0];
- _RAND_10 = {1{`RANDOM}};
- Yns_0 = _RAND_10[31:0];
- _RAND_11 = {1{`RANDOM}};
- Yns_1 = _RAND_11[31:0];
- _RAND_12 = {1{`RANDOM}};
- Yns_2 = _RAND_12[31:0];
- _RAND_13 = {1{`RANDOM}};
- Yns_3 = _RAND_13[31:0];
- _RAND_14 = {1{`RANDOM}};
- Yns_4 = _RAND_14[31:0];
- _RAND_15 = {1{`RANDOM}};
- Yns_5 = _RAND_15[31:0];
- _RAND_16 = {1{`RANDOM}};
- Yns_6 = _RAND_16[31:0];
- _RAND_17 = {1{`RANDOM}};
- Yns_7 = _RAND_17[31:0];
- _RAND_18 = {1{`RANDOM}};
- Yns_8 = _RAND_18[31:0];
- _RAND_19 = {1{`RANDOM}};
- Zns_0 = _RAND_19[31:0];
- _RAND_20 = {1{`RANDOM}};
- Zns_1 = _RAND_20[31:0];
- _RAND_21 = {1{`RANDOM}};
- Zns_2 = _RAND_21[31:0];
- _RAND_22 = {1{`RANDOM}};
- Zns_3 = _RAND_22[31:0];
- _RAND_23 = {1{`RANDOM}};
- Zns_4 = _RAND_23[31:0];
- _RAND_24 = {1{`RANDOM}};
- Zns_5 = _RAND_24[31:0];
- _RAND_25 = {1{`RANDOM}};
- Zns_6 = _RAND_25[31:0];
- _RAND_26 = {1{`RANDOM}};
- Zns_7 = _RAND_26[31:0];
- _RAND_27 = {1{`RANDOM}};
- Zns_8 = _RAND_27[31:0];
- _RAND_28 = {1{`RANDOM}};
- Zns_9 = _RAND_28[31:0];
- `endif
- `endif
- end
- `ifdef FIRRTL_AFTER_INITIAL
- `FIRRTL_AFTER_INITIAL
- `endif
- `endif
- endmodule