dsp课程设计实验报告总结

时间:2024.4.24

DSP课程设计总结

(20##-20##学年第2学期)

题    目 :                           

专业班级 :    电子1103              

学生姓名 :                 

学    号 :      

指导教师 :                           

设计成绩 :                           

20## 年 6 月

      

设计目的----------------------------------------------------------------------3

系统分析----------------------------------------------------------------------3

硬件设计

      3.1 硬件总体结构-----------------------------------------------------------3

3.2 DSP模块设计-----------------------------------------------------------4

3.3 电源模块设计----------------------------------------------------------4

3.4 时钟模块设计----------------------------------------------------------5

3.5 存储器模块设计--------------------------------------------------------6

3.6 复位模块设计----------------------------------------------------------6

3.7 JTAG模块设计--------------------------------------------------------7

软件设计

4.1 软件总体流程-----------------------------------------------------7

      4.2 核心模块及实现代码---------------------------------------8

课程设计总结-----------------------------------------------------14

一、    设计目的

设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。

二、    系统分析

1.1设计要求

硬件要求:

(1)使用TMS320VC5416作为核心芯片。

(2)具有最简单的led控制功能。

(3)具有存放程序的外部Flash芯片。

(4)外部输入+5V电源。

(5)绘制出系统的功能框图。

(6)使用AD(Altium Designer)绘制出系统的原理图和PCB版图。

软件要求:

利用实验箱的模拟信号产生单元产生不同频率的信号,或者产生两个频率的信号的叠加。在DSP中采集信号,并且对信号进行频谱分析,滤波等。通过键盘选择算法的功能,将计算的信号频率或者滤波后信号的频率在LCD上显示。

三、    硬件设计

3.1 硬件总体结构

 

3.2 DSP总体结构

3.3 电源模块设计

3.4 时钟模块设计

3.5 存储器模块设计

3.6复位模块设计

3.7 JTAG模块设计

四、    硬件设计

4.1 软件总体流程

4.2核心模块及实现代码

1.采集数据去直流

in_x[m] = port8002 & 0x00ff;//读取数据

   m++;

   intnum = m;

      if (intnum == Len)      //256个点为采样周期

      {

             intnum = 0;

             xavg = 0.0;

      for (s=0; s

{

                    xavg = in_x[s] + xavg;  //归一化处理

             }            

             xavg = xavg/Len;//采样均值

             for (s=0; s

             {

                    x[s] = 1.0*(in_x[s] - xavg);

      }

1.      FFT变换

void kfft(double pr[Len],double pi[Len],int n,int k,double fr[Len],double fi[Len],int l,int il)  //pr为实部,pi为虚部,k为蝶形运算级数

{

     int it,m,is,i,j,nv,l0;

    double p,q,s,vr,vi,poddr,poddi;

    for (it=0; it<=n-1; it++)

      { m=it; is=0;

        for (i=0; i<=k-1; i++)

          { j=m/2; is=2*is+(m-2*j); m=j;}

        fr[it]=pr[is]; fi[it]=pi[is];   //序数重排

      }

    pr[0]=1.0; pi[0]=0.0;

    p=6.283185306/(1.0*n);

    pr[1]=cos(p); pi[1]=-sin(p);

    if (l!=0) pi[1]=-pi[1];

    for (i=2; i<=n-1; i++)

      { p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];

        s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);

        pr[i]=p-q; pi[i]=s-p-q;

      }

    for (it=0; it<=n-2; it=it+2)

      { vr=fr[it]; vi=fi[it];

        fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];

        fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];

      }

    m=n/2; nv=2;

    for (l0=k-2; l0>=0; l0--)

      { m=m/2; nv=2*nv;

        for (it=0; it<=(m-1)*nv; it=it+nv)

          for (j=0; j<=(nv/2)-1; j++)

            { p=pr[m*j]*fr[it+j+nv/2];

              q=pi[m*j]*fi[it+j+nv/2];

              s=pr[m*j]+pi[m*j];

              s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);

              poddr=p-q; poddi=s-p-q;

              fr[it+j+nv/2]=fr[it+j]-poddr;

              fi[it+j+nv/2]=fi[it+j]-poddi;

              fr[it+j]=fr[it+j]+poddr;

              fi[it+j]=fi[it+j]+poddi;

            }

      }

    if (l!=0)

      for (i=0; i<=n-1; i++)

        { fr[i]=fr[i]/(1.0*n);

          fi[i]=fi[i]/(1.0*n);

        }

    if (il!=0)

      for (i=0; i<=n-1; i++)

        { pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);

          if (fabs(fr[i])<0.000001*fabs(fi[i]))

            { if ((fi[i]*fr[i])>0) pi[i]=90.0;

              else pi[i]=-90.0;

            }

          else

            pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;//pi为相位

        }

   }

2.      计算频率

void cf(double f[Len])

 {  double max;

    int no=0;

    max=f[0];

    for(i=0;i<128;i++)

      { 

        if(f[i]>max)

           {

             max=f[i];//max为最大幅值

             no=i;//最大幅值处对应序数

              }

       }

  

   fstop=no*fs/256;

3.      FIR滤波

void firdes(double npass   //求出窗口函数h

  {

     int t;

   for (t=0; t

     {

            h[t] = sin((t-(FLen-1)/2.0)*npass*pai)/(pai*(t-(FLen-1)/2.0));

     }

     if (t == ((FLen-1)/2)) h[t]=npass;

  }

//作卷积

for (s=0; s

              {

                     x[s] = 1.0*(in_x[s] - xavg);

                     pr[s] = x[s];         //输入实部

                     pi[s] = 0;            //输入虚部

                     for (p=0; p

                  {

                         xmid[FLen-p-1] = xmid[FLen-p-2];

                  }

                 

                  xmid[0] = x[s];

                     r = 0;

                     rm= 0;

                     for (j=0; j

                     {     

                          r  = xmid[j] * h[j];

                            rm = rm + r;

                  }

                     y[s] = rm;

              }

4.      LCD显示

SendCMD(CLEAR);

  showperson();

  Delay(1);

 //----------------------------------------------------------- 

  SendCMD(CLEAR);

  SendCMD(0x0080);      //设定DDRAM的地址在第一行 80H

  delay_100us();

  for(i =0;i<16;i++)

       {

        

         SendDat(data_buff3[i]);

         delay_100us();

         asm(" nop ");

       }

       asm(" nop ");

  SendCMD(0x0090);

  shownum(f1);     

  //------------------------------

 SendCMD(0x0088);      //设定DDRAM的地址在第二行 90H

 delay_100us();

 for(i =0;i<16;i++)

       {

        

         SendDat(data_buff4[i]);

         delay_100us();

       }

 SendCMD(0x0098);

 shownum(f2);

4.3 软件实验效果图

1.去直流

2.滤波前fft

3.滤波后fft

4.窗口函数

 课程设计总结

  在为期两个多星期的综合设计中,重新熟悉了一下ADCCS软件的操作。在画原理图时,各元件的连接及封装形式都应参照手册。只有深刻了解各管脚的功能,才能准确快速地画好原理图。画好原理图后,要先编译一下看是否有连接错误。

如果原理图有所改变,可以在PCB中重新导入。如果元器件管脚或IO引脚变绿,可能是间距违反了规定的rule。可以将rule里的间距改小一点。在pcb连线过程中,我发现移动clk时钟器件,其管脚变绿,但rule并无问题。后经查阅资料,取消了Drc功能,才恢复正常。在连接滤波电容时,将滤波电容靠近其滤波元器件。 

在软件设计过程中,前两天一直没有搞清楚设计要求,进展缓慢。首先了结了一下各个模块程序的输入输出变量的含义,只有这样才能正确地调用各个函数。在计算频率时,其实我只计算了一个频率。输入是一个混频信号,由于左右对称,在128点内可得到两个最大幅度,030(或其他分界点亦可,视滤波效果而言),比较一次,30128,再比较一次。滤波函数仅仅只是计算了窗口函数,故还需将输入信号函数和窗口函数进行卷积得到最终结果。

在编写LCD显示模块程序时,经常出现乱码。Unsigned   char类型的字符串数组,一个汉字相当于两个英文字母,如果地址1没有安排好容易出现乱码。                                                                     

更多相关推荐:
DSP课程设计总结.doc2

DSP课程设计总结(20##-20##学年第2学期)题目:DSP课程设计专业班级:电子08-3学生姓名:学号:指导教师:设计成绩:20##年6月目录一设计目的二系统分析2.1设计要求2.2主要任务三硬件设计3.…

DSP课程设计总结报告

课程设计总结报告课程名称DSP控制器及其应用设计题目专业电子信息工程班级姓名学号指导教师报告成绩信息工程学院二一四年六月十三日目录前言错误未定义书签第一章设计要求错误未定义书签11基本要求错误未定义书签12提高...

dsp课程设计报告

科信学院课程设计说明书(2008/20XX学年第二学期)课程名称:DSP控制器及其应用题目:DSP通用管脚控制LCD公告牌的文字显示专业班级:电子信息工程06-1班学生姓名:学号:指导教师:设计周数:2周设计成…

dsp课程设计报告

DSP课程设计实验报告语音噪声滤波院系电子信息工程学院指导教师杨恒小组成员郝嘉然082120xx王廓08283023语音噪声滤波目录一绪论1二设计任务书3三设计方案算法原理说明4四程序设计调试与结果分析15五感...

dsp课程设计报告

科信学院课程设计说明书20xx20xx学年第二学期课程名称题目DSP通用管脚控制LCD公告牌的文字显示专业班级电子信息工程061班学生姓名陈恒学号指导教师谢万新李丽宏付佳王鹏设计周数2周设计成绩20xx年6月1...

dsp课程设计

GuangxiUniversityofScienceandTechnology课程设计说明书实验课程DSP原理开发与运用实验内容基于TMS320的Led显示控制系统设计院系计算机学院专业通信工程班级111班学生...

dsp课程设计

DSP技术及应用课程设计自适应滤波器的设计院系专业班级姓名学号指导教师职称完成日期成绩0000000000教授助教20xx年06月13日目录1引言12DSP的理论基础221dsp结构介绍222自适应滤波算法的D...

dsp课程设计报告

基于DSP的FFT算法的实现摘要数字信号处理DigitalSignalProcessing简称DSP是一门涉及许多学科而又广泛应用于许多领域的新兴学科DSP有两种含义DigitalSignalProcessin...

Jsp课程设计实验报告

jsp程序设计Jsp课程设计实验报告题目专业班级姓名指导教师学生成绩管理系统20xx年6月28日目录一绪论31系统开发背景32项目开发的目标33系统开发所用的技术设备3二需求分析31系统需求分析32用户需求43...

jsp课程设计模板

动态网页设计课程设计论文题目城市公交查询系统院系软件学院专业班级软件工程班学号学生姓名指导教师教师职称起止时间程序设计专题报告任务及评语大连水产学院本科毕业论文设计错误未找到引用源目录第1章实训的目的与要求41...

jsp课程设计 (12)

辽宁工业大学动态网页设计课程设计论文题目游戏装备交易系统院系教师职称助教起止时间20xx124至20xx1218程序设计专题报告任务及评语目录第1章实训的目的与要求111实训设计目的112实训设计的实验环境11...

jsp课程设计报告

课程设计实验报告题目账目管理系统系别计算机科学与技术系专业年级姓指导教师成年月日一设计内容1用jsp和java设计一个账目管理系统2采用MYSQL数据库储存数据3可以实现管理员登陆对账目进行管理操作二功能1可以...

dsp课程设计总结(9篇)