// 5-bit PDM driver | |
module pdm( | |
input [4:0] pdm_input, | |
input write_en, | |
input clk, reset, | |
output pdm_out | |
); | |
reg [4:0] accumulator; | |
reg [4:0] input_reg; | |
wire [5:0] sum; | |
assign sum = input_reg + accumulator; | |
assign pdm_out = sum[5]; | |
always @(posedge clk or posedge reset) begin | |
if (reset) begin | |
input_reg <= 5'h00 ; | |
accumulator <= 5'h00; | |
end else begin | |
accumulator <= sum[4:0]; | |
if (write_en) input_reg <= pdm_input ; | |
end | |
end | |
endmodule |