FPGA第五节:ADDA实验

本文介绍了使用FPGA进行ADDA实验的过程,通过ad9280和ad9708进行AD和DA信号转换。详细讲解了sample模块负责8位数字信号采集,color模块生成行同步、场同步和数据有效信号,以及display模块如何处理数据并显示。此外,还提到了时钟模块、RGB转DVI和ROM IP核的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次主要采用ad9280和ad9708进行ad和da信号转换。
1、信号流通
由ROM中的IP核输出模拟信号,然后经由da9708进行数模转换,经过一根BNC线将ad9708的输出口和ad9280的输入口接到一起,形成一个环路,然后ad9280进行模数转换。
2、模块讲解
模块一:sample。进行8位数字信号的采集,每次采集1280位,然后间隔一段时间采集一次。将采集到的信号,同时还有有效信号,地址信号一同输入到display模块。
模块二:color。主要任务为产生行同步信号,场同步信号还有数据有效信号。同时输出一个彩条RGB信号作为背景。
模块三:display。接收来自sample的数据信号,还有来自color的hs,vs,de,rgb信号。使用IP核将数据信号写入RAM中,并根据不同的频率从ram中读出信号。display模块中还包含一个用于读取图像坐标的getxy模块。
IP核:包括三个IP核,时钟模块,rgb转dvi模块,还有ROM模块(输出预加载波形)
在这里插入图片描述

3、代码讲解
(1)sample模块

module AD_SAMPLE(
input ad_clk,                      //时钟信号
input rst,                         //重置信号
input[7:0] ad_data,                //采集数据
input ad_data_valid,               //信号有效位
output ad_buf_wr,                  //写允许信号
output[11:0] ad_buf_addr,          //写地址
output[7:0] ad_buf_data            //输出信号
    );
    
//提前设置状态位数值
 localparam S_IDLE=0;                  //空闲位
 localparam S_SAMPLE=1;                //采样位
 localparam S_WAIT=2;                  //等待位
 
 reg[7:0] ad_data0;                    
 reg[10:0] sample_cnt;                 //采样计数
 reg [31:0] wait_cnt;                  //等待计数
 reg[2:0] state;                       //状态位
 
 assign ad_buf_addr=sample_cnt;        //把采样计数赋给地址 
 assign ad_buf_data=ad_data0;          //给数据
 assign ad_buf_wr=(state==S_SAMPLE && ad_data_valid==1'b1)?1'b1:1'b0;  //在采样时段且数据有效位为高电平
 
 //复位
 always@(posedge ad_clk or posedge rst)
     begin
         if(rst==1'b1)                     //如果复位信号有效
         ad_data0<=8'b0;                   //数据置零
         else if(ad_data_valid==1'b1)      //复位信号无效且数据有效位为高电平
         ad_data0<=ad_data;                //传送数据
     end
 
 //读取设置
always@(posedge ad_clk or posedge rst) 
    begin
        if(rst==1'b1)                      //如果复位信号有效
            begin
            state<=S_IDLE;                 //转为空闲状态
            wait_cnt=32'd0;                //等待技术位置零
            sample_cnt<=11'd0;             //采样计数位置零
            end
         else 
         case(state)
            S_IDLE:                 
                begin
                    state<=S_SAMPLE;                          //转为采样位
                end   
             //像素设置为1280*720,单次采样1280个数据      
            S_SAMPLE:       
                begin
                    if(ad_data_valid==1'b1)                   //如果数据有效位为高电平
                    begin
                        if(sample_cnt==11'd1279)              //采样计数等于1280时
                            begin
                                sample_cnt<=11'd0;            //计数清零
                                state<=S_WAIT;                //转为等待位
                            end
                        else
                            begin
                                sample_cnt<=sample_cnt+1'b1;  //采样计数加一
                            end        
                    end
                end   
            //等待一段时间再次采样             
            S_WAIT:  
                begin
                if(wait_cnt==32'd25_000_000)                  //等待时间/晶振周期=25000000
                    begin
                        state<=S_SAMPLE;                      //转为采样位
                        wait_cnt<=32'd0;                      //等待计数置零
                    end
                else
                    begin
                        wait_cnt<=wait_cnt+1'b1;              //等待计数加一
                    end
项目背景1.1 AD转换 AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。 A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 AD转换的技术指标,一般有如下几个: 1. 分辨率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辨率又称精度,通常以数字信号的位数来表示。 2. 转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率 (Sample Rate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表 示每秒采样千/百万次(kilo / Million Samples per Second)。 3. 量化误差 (Quantizing Error) 由于AD的有限分辨率而引起的误差,即有限分辨率AD的阶梯状转移特性曲线与无限分辨率AD(理想AD)的转移特 性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。 4. 偏移误差(Offset Error) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。 5. 满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差。 6. 线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。 其他指标还有:绝对精度(Absolute Accuracy) ,相对精度(Relative Accuracy),微分非线性,单调性和无错码,总谐波失真(Total Harmonic Distotortion缩写THD)和积分非线性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值