Skip to content

chumy6/Sine-Wave-Generator-Using-LUT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

基于查找表的正弦模块

一个基于查找表计算正弦值的模块,输入为整数角度,输出为该角度的正弦值。

参数

  1. 输入参数

    • clk:时钟信号。
    • rst:复位信号。
    • start:启动信号。
    • in:输入的角度值,单位为度。
  2. 输出

    • out:输出正弦值。
    • done:计算完成标志。

原理

  1. 查找表(LUT):模块包含一个查找表 sine_lut,存储了正弦值的256个点的近似值。每个点代表一个0到360度范围内的角度的正弦值。

  2. 输入

    • 首先计算输入角度 in 的绝对值 abs_in
    • 然后将角度通过条件语句转换为 [0, 360) 范围内的角度(取模360)。
  3. 状态机(FSM)

    • IDLE:等待 start 信号启动计算。如果启动,进入 SCALE 状态。
    • SCALE:将角度(度数)转换为查找表的索引:(degree * 256) / 360,用输入乘以183后右移16位来近似。
    • LOOKUP:使用计算出的索引从查找表中获取正弦值。
    • OUTPUT:根据输入角度的符号,输出正弦值。如果角度为负,则输出正弦值的负值。输出值根据参数 FBITS 做右移处理,以调整精度。
  4. 输出

    • 输出 out 为正弦值,done 信号表示计算完成。

About

Design of a Sine Wave Generator Using a Lookup Table (LUT)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published