• 计算模块分析


    模块需要实现的功能: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信号。             

  • 相关阅读:
    栈及其在.NET FrameWork中的源码分析
    《高性能网站建设指南》读书笔记
    九宫格数独问题
    队列及其在.NET FrameWork中的源码分析
    《web标准之道》读后感(书评)
    SharePoint中的权限体系
    关于异步方法调用
    WF4.0 Beta2:关于动态保存和装载XAML工作流
    Lotus Symphony介绍及试用
    Node.js 0.8.18 / 0.9.7 发布
  • 原文地址:https://www.cnblogs.com/mebey/p/9414258.html
Copyright © 2020-2023  润新知