fpga-lab-2/HDL/sigdel.sv

38 lines
731 B
Systemverilog
Raw Permalink Normal View History

2023-01-27 11:15:11 +03:00
//top-level module
module sigdel
#(
2023-02-07 16:10:37 +03:00
PHACC_WIDTH = 27
2023-01-27 11:15:11 +03:00
) (
//clock and reset
input logic clk, clr_n,
//control slave
input logic [31:0] wr_data,
input logic wr_n,
output logic fout
);
2023-01-27 17:06:29 +03:00
logic [7:0] phinc_val, phase, sine;
//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
2023-02-07 16:10:37 +03:00
phacc phacc_inst (.phinc(1'b1), .clk(clk), .reset(clr_n), .phase(phase));
2023-01-27 11:15:11 +03:00
defparam phacc_inst.WIDTH = PHACC_WIDTH;
2023-01-27 17:06:29 +03:00
sinelut sinelut_inst (
2023-01-27 11:15:11 +03:00
.address (phase), .clock (clk), .q(sine)
);
2023-01-27 17:06:29 +03:00
sdmod sdmod_inst (
.val(sine), .clk(clk), .reset(clr_n), .daco(fout)
);
2023-01-27 11:15:11 +03:00
endmodule