zoukankan      html  css  js  c++  java
  • 计算模块分析

    模块需要实现的功能:1、实现原始深度计算:五个输入、一个输出值和一个输出使能信号;

                                        2、计算幅度值(这个功能是一个使能控制的)这个的话就是一个行结束信号和一个行输出使能信号;

                                        3、需要告诉相连的模块什么时候开始计算,什么时候算完了一行,什么时候算完了一帧;

                                        4、需要对计算出来的振幅值做一个判断。

    首先怎么计算核心公式:atan 。这个采用的方法是 根据判断两两相减的数据组合的坐标在哪个象限,然后根据边转边加的方式将其代换到第一象限的0-45°之间,后面就根据他们两个的商进行查找。(这里调用IP哎)

    第一步,定义一些设计中需要用到的参数。比如:MAX_DIST_VALUE、LOW_AMPLITUDE、MODULO_SHIFT、MODULO_SHIFT_PI=MAX_DIST_VALUE/2+MODULO_SHIFT.

    第二步,设计一个开始计算的信号cal_start 当cal_start信号为高时,开始计算,对灰度进行一个处理(减去2048除以259,除法用移位来实现,即右移九位),同时设计一个计数器,在cal_start为高时,对每一个clk上升沿计数,否则,相应的所有信号都让其为低。设计一个embient_com_en,当这个信号为控制是否进行振幅校正,当期为高时,就对其进行校正,如果不为高,就不进行振幅校正。无符正整数变有符正整数,$signed({1'b0,dcs_do});

    cal_start为高时,计算sqrt_i=x*x+y*y;这段代码应该是可以优化的,定义寄存器,减小组合逻辑延时。

    设计一个状态机,分别是初始状态,开始工作,计算三个状态。

       这三个状态产生控制信号,hsync_start 、cal_start 和line_end信号                        

    前级模块输入cache_ready,当这个信号为高时,hsync_start信号为高,进入start状态,start状态下,cal_start信号拉高,如果atan_value信号为高就进入CALING状态  ,CALING状态下,如果pixel_cnt记到318,就令line_end信号为高,hsync_start信号拉低。当记到329的时候状态条回到IDLE信号。             

  • 相关阅读:
    17.天堂和地狱只在你的一念之间
    14.事情原来可能更糟
    如何评价一个网站的人气(Link Popularity Check)
    1.人生何必一定要成功
    4.何不看开一点
    字符串到枚举的转换代码
    广州泳场一览表
    收集开源项目
    7.把“失去”当作“抛弃”
    经常使用的Oracle监控语句
  • 原文地址:https://www.cnblogs.com/mebey/p/9414258.html
Copyright © 2011-2022 走看看