Skip to content

Commit 4362c35

Browse files
committed
ad_dds: Update for CORDIC algorithm integration
Add parameters: - to select the sine generator (polynomial/CORDIC) - to select the CORDIC data width(default 16) Suppress the warnings generated when the DDS is disabled.
1 parent 4c32b47 commit 4362c35

File tree

1 file changed

+46
-31
lines changed

1 file changed

+46
-31
lines changed

library/common/ad_dds.v

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ module ad_dds #(
3939

4040
// data path disable
4141

42-
parameter DISABLE = 0) (
43-
42+
parameter DISABLE = 0,
43+
parameter DDS_TYPE = 1,
44+
parameter CORDIC_DW = 14) (
4445
// interface
4546

4647
input clk,
@@ -65,35 +66,49 @@ module ad_dds #(
6566

6667
// disable
6768

68-
assign dds_data = (DISABLE == 1) ? 16'd0 : dds_data_out;
69-
70-
// dds channel output
71-
72-
always @(posedge clk) begin
73-
dds_data_int <= dds_data_0_s + dds_data_1_s;
74-
dds_data_out[15:15] <= dds_data_int[15] ^ dds_format;
75-
dds_data_out[14: 0] <= dds_data_int[14:0];
76-
end
77-
78-
always @(posedge clk) begin
79-
dds_scale_0_d <= dds_scale_0;
80-
dds_scale_1_d <= dds_scale_1;
81-
end
82-
// dds-1
83-
84-
ad_dds_1 i_dds_1_0 (
85-
.clk (clk),
86-
.angle (dds_phase_0),
87-
.scale (dds_scale_0_d),
88-
.dds_data (dds_data_0_s));
89-
90-
// dds-2
91-
92-
ad_dds_1 i_dds_1_1 (
93-
.clk (clk),
94-
.angle (dds_phase_1),
95-
.scale (dds_scale_1_d),
96-
.dds_data (dds_data_1_s));
69+
generate
70+
if (DISABLE == 1) begin
71+
assign dds_data = 16'd0;
72+
end else begin
73+
74+
assign dds_data = dds_data_out;
75+
76+
// dds channel output
77+
78+
always @(posedge clk) begin
79+
dds_data_int <= dds_data_0_s + dds_data_1_s;
80+
dds_data_out[15:15] <= dds_data_int[15] ^ dds_format;
81+
dds_data_out[14: 0] <= dds_data_int[14:0];
82+
end
83+
84+
always @(posedge clk) begin
85+
dds_scale_0_d <= dds_scale_0;
86+
dds_scale_1_d <= dds_scale_1;
87+
end
88+
89+
// dds-1
90+
91+
ad_dds_1 #(
92+
.CORDIC_DW(CORDIC_DW),
93+
.DDS_TYPE(DDS_TYPE))
94+
i_dds_1_0 (
95+
.clk (clk),
96+
.angle (dds_phase_0),
97+
.scale (dds_scale_0_d),
98+
.dds_data (dds_data_0_s));
99+
100+
// dds-2
101+
102+
ad_dds_1 #(
103+
.CORDIC_DW(CORDIC_DW),
104+
.DDS_TYPE(DDS_TYPE))
105+
i_dds_1_1 (
106+
.clk (clk),
107+
.angle (dds_phase_1),
108+
.scale (dds_scale_1_d),
109+
.dds_data (dds_data_1_s));
110+
end
111+
endgenerate
97112

98113
endmodule
99114

0 commit comments

Comments
 (0)