// This generates a scale of frequencies. The output freq has 10 bits // of fraction. module scalegen(input clk, input reset, input takingData, output reg [31:0] freq); reg[19:0] counter; always @(posedge clk) begin if(reset) begin counter <= 0; freq <= 0; end else begin case(counter[18:16]) 0: freq <= 267919; // 261.64*1024; 1: freq <= 300728; // 293.68*1024; 2: freq <= 337551; // 329.64*1024; 3: freq <= 357621; // 349.24*1024; 4: freq <= 401408; // 392.00*1024; 5: freq <= 450560; // 440.00*1024; 6: freq <= 505774; // 493.92*1024; 7: freq <= 535838; // 523.28*1024; endcase if(takingData) counter <= counter + 1; end end endmodule