首页 > 其他分享 >FPGA的DAC转换部分遇到的问题

FPGA的DAC转换部分遇到的问题

时间:2024-03-10 18:12:38浏览次数:22  
标签:cnt set 转换 FPGA DAC lsm 计数 en done

利用线性序列机根据时序图和手册中的输出值的对应关系。

DAC这边的知识基本相同。

在验证的时候发现了问题,反推仿真的时候发现了,子啊lsm_cnt线性序列机计数的33到了之后还有一位,发现是set_en的问题,因为set_en使能才能计数。


这边是正确的波形图和代码对应

always @(posedge clk or negedge reset_n)
        if(!reset_n)
            set_en <= 1'd0;
        else if(set_go)
            set_en <= 1'd1;
        else if((lsm_cnt == 33) && (div_cnt == MCNT_DIV_CNT))
            set_en <= 1'd0;
        else
            set_en <= set_en;

    always @(posedge clk or negedge reset_n)
        if(!reset_n)
            div_cnt <= 0;
        else if(set_en) begin
            if(div_cnt == MCNT_DIV_CNT)
                div_cnt <= 0;
            else
                div_cnt <= div_cnt + 1'd1;
        end
        else
            div_cnt <= 0;
         
       always @(posedge clk or negedge reset_n)
            if(!reset_n)  
                lsm_cnt <= 6'd0;   
            else if(div_cnt == MCNT_DIV_CNT)begin
                if(lsm_cnt == 6'd33)
                    lsm_cnt <= 6'd0;
                else
                    lsm_cnt <= lsm_cnt + 1'd1;
            end
            else
                lsm_cnt <= lsm_cnt;


         always @(posedge clk or negedge reset_n)
             if(!reset_n)
                  set_done <= 0;
             else if((lsm_cnt == 33) && (div_cnt == MCNT_DIV_CNT))
                set_done <= 1'd1;
             else
                set_done <= 1'd0;

这边看到在div_cnt和lsm_cnt计数满,将set_done信号触发,触发转换结束信号。

同时通过计数满的信号,拉低set_en使能,从而停止计数


我第一次写的时候,是通过set_done信号来拉低set_en信号

always @(posedge clk or negedge reset_n)
        if(!reset_n)
            set_en <= 1'd0;
        else if(set_go)
            set_en <= 1'd1;
        else if(set_done)
            set_en <= 1'd0;
        else
            set_en <= set_en;

这边的仿真图就出现了问题,因为set_done信号是一拍,而set_en信号在下一个clk时钟上升沿才拉低。

也就导致在lsm_cnt到33计满之后,set_en还是高电平,所以继续计数,div_cnt因为没计满,所以多了一个lsm_cnt计数。

间接导致

0: begin dac_sclk <= 1'd1; dac_cs_n <= 1'd0; dac_din <= r_dac_data[15];

这个函数,将r_dac_data[15]的值计入了dac_din当中,这些都是set_done之后的,所以不应该产生。会导致最后接收模拟信号输出的时候的时序混乱

 

标签:cnt,set,转换,FPGA,DAC,lsm,计数,en,done
From: https://www.cnblogs.com/cjl520/p/18064521

相关文章

  • 无线表格识别模型LORE转换库:ConvertLOREToONNX
    引言总有小伙伴问到阿里的无线表格识别模型是如何转换为ONNX格式的。这个说来有些惭愧,现有的ONNX模型是很久之前转换的了,转换环境已经丢失,且没有做任何笔记。今天下定决心再次尝试转换,庆幸的是转换成功了。于是有了转换笔记:ConvertLOREToONNX。这次吸取教训,环境文件采用Anacond......
  • 基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览RTL图:   仿真图:   导入到matlab显示效果如下:   2.算法运行软件版本matlab2022a vivado2019.2 3.算法理论概述      在计算机视觉领域,基于肤色模型和中值滤波的手部检测方法是一种常见的初步定位策略。该方法主要分为......
  • 6大数据类型相互转换
    定义:Python中的不同数据类型是不能进行转换的,所以我们需要数据类型转换,一共分为两种类型转换自动类型转换强制类型转换在Python中:容器类型数据:字符串,列表,元组,字典,集合非容器类型数据:数字类型,布尔类型自动类型转换定义:当两个不同类型的数据进行转换时,结果会进行计算a......
  • FPGA Develop Note ——— RAM
    FPGADevelopNote———RAMRAM的英文全称是RandomAccessMemory,即随机存取存储器,简称随机存储器。它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址的存储单元中读出数据,其读写速度是由时钟频率决定的。TypesRAM类型特性说明数据读写口数量地......
  • 使用 Amazon Bedrock 上的 Claude 3 将架构图转换为 CDK/Terraform 代码
    概述在云原生领域,基础设施即代码(IaC)对于开发人员和DevOps团队来说是一种不可避免的实践。最近,AmazonBedrock上线了Claude3Sonnet模型和这个模型的图像转文本能力。这无疑开启了一个新时代,也就是实现架构图与IaC工具的无缝融合,如亚马逊云科技云开发工具包(CDK)或......
  • vim 编辑python文件 禁止tab转换为空格的设置
    1.修改各种路径下的.vimrc都没用2.一个解决方法:每次用vim打开python文件后,分别运行:setts=4(8):setnoexpandtab:%retab!3.其他:安装python编辑的dictionary补全提示插件:filetypepluginonletg:pydiction_location='~/.vim/tools/pydiction/compl......
  • C++中OpenCV、Armadillo矩阵数据格式的转换方式
      本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法。  在C++语言的矩阵库Armadillo与计算机视觉库OpenCV中,都有矩阵格式的数据类型;而这两个库在运行能力方面各有千秋,因此实际应用过程中,难免会遇到需要将二者的矩阵格......
  • python3代码转换成docker镜像启动
    1.打包成docker镜像来使用切到Tags,搜索3.11选择python:3.11.4-slim-bullseye2.在压测脚本的根目录中,创建Dockerfile文件: FROMpython:3.11.4-slim-bullseyeWORKDIR/opt/appCOPYrequirements.txt./ENVhost=nullENVport=nullENVonlyResetJob=nullRUNpip......
  • 锂电池电源转换利器:PW2053芯片,实现3.7V转3V/2.5V/1.2V低功耗转换
    在现代电子设备领域,高效、稳定的电源管理对于设备的性能和寿命至关重要。特别是在锂电池供电的应用中,选择一款性能卓越的降压调节器显得尤为关键。今天,我们将向您介绍一款备受赞誉的高效同步降压调节器——PW2053。这款调节器凭借其出色的性能和广泛的应用领域,在电源管理领域独领......
  • Java工具 - 坐标系WGS-84,GCJ-02,BD-09之间的相互转换
    importjava.util.ArrayList;importjava.util.List;/***地图坐标转换*/publicclassGpsCoordinateUtils{privatestaticfinaldoublePI=3.1415926535897932384626433832795;//privatestaticfinaldoublePI=3.14159265358979324;privatestaticf......