Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

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

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages