在 verilog 中求正弦波的相位差。正弦波在 RAM 的 60 个地址单元中以 16 位二进制表示。简短的算法

问题描述 投票:0回答:1

正弦波的频率为 1 kHz .

IEEE 754 浮点格式的正弦波最大幅度为 4.97 V

与波形的其他值类似,转换为 16 位二进制。

想要一些想法来创建一个算法,首先使用这个值来找到正弦波的相位差。

创建的 LUT 直到知道读取值:

Memory Created :

module ram_memory_2(clk,add,data);

    input [5:0]add;
    input clk;
    output reg [15:0]data;
   

    always @ (*)
    begin
       case(add)
            0  : data <= 16'b0011011010010011;
            1  : data <= 16'b0011011011111010;
            2  : data <= 16'b0011011011111010;
            3  : data <= 16'b0011011101110001;
            4  : data <= 16'b0011011110101010;
            5  : data <= 16'b0011011111010111;
            6  : data <= 16'b0011011111100111;
            7  : data <= 16'b0011011111110100;
            8  : data <= 16'b0011011111011111;
            9  : data <= 16'b0011011111001111;
            10 : data <= 16'b0011011110011110;
            11 : data <= 16'b0011011101101101;
            12 : data <= 16'b0011011100110011;
            13 : data <= 16'b0011011011100001;
            14 : data <= 16'b0011011001111111;
            15 : data <= 16'b0011011000100001;
            16 : data <= 16'b0011010110100010;
            17 : data <= 16'b0011010100100011;
            18 : data <= 16'b0011010010011100;
            19 : data <= 16'b0011010000001100;
            20 : data <= 16'b0011001011100001;
            21 : data <= 16'b0011000110100010;
            22 : data <= 16'b0011000001010010;
            23 : data <= 16'b0010111000101011;
            24 : data <= 16'b0010101010101110;
            25 : data <= 16'b0010000110100010;
            26 : data <= 16'b1010100000001011;
            27 : data <= 16'b1010110010011000;
            28 : data <= 16'b1010111100111011;
            29 : data <= 16'b1011000011101110;
            30 : data <= 16'b1011001000111101;
            31 : data <= 16'b1011001101011100;
            32 : data <= 16'b1011010001001010;
            33 : data <= 16'b1011010011011101;
            34 : data <= 16'b1011010101100000;
            35 : data <= 16'b1011010111010011;
            36 : data <= 16'b1011011001000010;
            37 : data <= 16'b1011011010101000;
            38 : data <= 16'b1011011011111010;
            39 : data <= 16'b1011011101001100;
            40 : data <= 16'b1011011110001101;
            41 : data <= 16'b1011011110111010;
            42 : data <= 16'b1011011111010011;
            43 : data <= 16'b1011011111011011;
            44 : data <= 16'b1011011111101100;
            45 : data <= 16'b1011011111100011;
            46 : data <= 16'b1011011111000011;
            47 : data <= 16'b1011011110011110;
            48 : data <= 16'b1011011101011100;
            49 : data <= 16'b1011011100100011;
            50 : data <= 16'b1011011011001001;
            51 : data <= 16'b1011011001101010;
            52 : data <= 16'b1011011000000100;
            53 : data <= 16'b1011010110001101;
            54 : data <= 16'b1011010100001010;
            55 : data <= 16'b1011010001111011;
            56 : data <= 16'b1011001111010111;
            57 : data <= 16'b1011001010011000;
            58 : data <= 16'b1011000101011000;
            59 : data <= 16'b1011000000011001;
            default: data <= 16'b0000000000000000; // default case if address not listed
        endcase
    end
endmodule


memory verilog adc
1个回答
0
投票

您有 60 个 1Khz 正弦波样本,这意味着您的采样频率是

Fs = 60kHz;
。现在对于代表正弦波的 60 个点,两个连续点之间的相位差是
6 degrees
360 degrees/60 (total samples in one cycle)

现在假设您想计算两个随机点之间的差异,具体方法如下:

  1. 找出两点的索引差(这些点在LUT中有多远?)
  2. 将差值乘以 6 度即可得到相位差。
© www.soinside.com 2019 - 2024. All rights reserved.