38 lines
723 B
Systemverilog
38 lines
723 B
Systemverilog
|
//top-level module
|
||
|
module sigdel
|
||
|
#(
|
||
|
PHACC_WIDTH = 14
|
||
|
) (
|
||
|
//clock and reset
|
||
|
input logic clk, clr_n,
|
||
|
//control slave
|
||
|
input logic [31:0] wr_data,
|
||
|
input logic wr_n,
|
||
|
output logic fout
|
||
|
);
|
||
|
|
||
|
logic [7:0] phinc_val;
|
||
|
|
||
|
//control slave logic
|
||
|
always_ff @ (posedge clk or negedge clr_n) begin
|
||
|
if (!clr_n) begin
|
||
|
phinc_val[7:0] <= 8'd0;
|
||
|
end else begin
|
||
|
if (!wr_n) begin
|
||
|
phinc_val[7:0] <= wr_data[31:0];
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
phacc phacc_inst (.phinc(phinc_val), .clk(clk), .reset(clr_n), .phase(phase));
|
||
|
defparam phacc_inst.WIDTH = PHACC_WIDTH;
|
||
|
|
||
|
sinelut sinelut_inst (
|
||
|
.address (phase), .clock (clk), .q(sine)
|
||
|
);
|
||
|
|
||
|
sdmod sdmod_inst (
|
||
|
.val(sine), .clk(clk), .reset(clr_n), .daco(fout)
|
||
|
);
|
||
|
endmodule
|