Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22272
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 58
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-19 12:19
文章分类

全部博文(3)

文章存档

2014年(3)

我的朋友

分类: 嵌入式

2014-09-08 15:57:12

 本实验的视频连接:    
 代码可到到这里下载:   访问密码 67a9
    仔细想想自己是也一名IT男,经常对朋友吹牛说是一名Geek,但一直没有什么行动!深夜里思索:难道我真的只有一颗极客的心,而没有实力?不行要改变现状,哪怕一点也好。俗话说的好,行动就是成功的一半了!     那干点什么呢?脑子飞速闪现,这些年学的知识,模电,数电,信号系统,数字信号处理,数字编码理论,通信原理,51单片机,FPGA,还有我最近看了7、8个月的Linux和看了3、4个月的USB驱动、要不做个把学过东西都整合起试试,一方面加深对所学进一步理解,另一方面提高自己的实战能力。经过半天的构思画出了如下一个原理图:

    工作原理:Linux_PC上把数据经过USB接口传到51单片机中,51单片机把数据传到FPGA上进行处理,FPGA处理后把数据返还给51单片机,接着51单片机通过USB接口返还给Linux_PC,最后把在 PC 上计算处理的数据和通过在 FPGA上处理的数据进行对比。
    为什么这么选择,PC的优势对于复杂事物的处理能力,51单片机的优势在于对小事物的控制,FPGA的优势在于并行计算。那FPGA上进行什么处理,就我目前来所学的来看 FFT 是一个用途非常广且很重要的算法。那设计成什么架构?流水线,还是先试试最简单的?最后考虑先尝试下一般做法,等能成功了再尝试流水线的设计。我设计的 基2-16点FFTverilog 见另一篇博文。虽然用 ModelSim 进行功能仿真成功了,可到 Quartus II 进行综合发现,逻辑单元超出了(EP2C5Q208C),那回去再想想如何精简和优化,实验还是要继续的那就先试试用 蝶形单元 来测试试试。
    设计前对整个系统的引脚进行分配,见上图。
整个系统的代码如下:
    
1:FPGA 上的代码 +/         在 FPGA 目录下
                            -/ butterfly_cs.v 为旋转因子为 C 和 S 的蝶形处理器
                            -/ fpga_to_c51.bdf 为整个FPGA 系统原理图
                            -/ name_tb.v 为测试文件,对应每个 name.v 模块,具体含义对应 fft 博文

2:C51 上的代码  +/   C51 的目录下
                            -/ c51_to_butterfly.c   里面注明了说有引脚的定义和作用
   
3:基于CH375 usb接口芯片的 linux 驱动程序 +/                linux_ch375_driver 文件夹下
                           -/ ch375_driver.c  为linux(Ubuntu 14.04)上的usb驱动程序,参照 usb-skeleton.c 写的
                           -/ Makefile
   
4:应用程序  +/  在 linux_c 文件夹下
                    
 -/   pc_c51.c 主要作用是给 FPGA 发送数据,把通过 FPGA 处理的程序和 在 PC 上运行的程序进行对比

总结:
    通过此次实验学会了什么?
    系统把握方面:    做任何工程要先做到调理清晰,把大项目分解成几个独立的小系统,确定每个小系统
数据交流方式;把大项目分解成小系统,这样可以提高真个项目的健壮性,也有利于调试。在设计时先可以用一个简单的方案代替每个小系统,确保整个大系统能运行起来,接着可以通过查阅 学术论文 或 其他资料 来改进每个小系统。
    FPGA 方面:        如何通过构建模块来设计整个系统;再就是调试方面,关键模块一定要测试,如果不测试等到所有模块都组合起来,难度太大。再代码综合方面还有待更进一步提高。

    C51 方面:          在调试的过程中,由于对 P3 管脚的结构不太了解,吃了大亏,就是用 P3 口采集数据时一直不成功,用了各种方法进行测试,最后重新温习下 C51 的结构,才发现 P3 口采集数据前要先置 1。

    Linux driver 方面:通过这次试验,把近 3 个学习的 USB driver 给实验了一遍,对 USB 驱动 和 驱动模型有了更深入理解,尤其对 USB设备在插入到拔出这段时间内,驱动模型发生的变化。

    关于代码:        还是要多看,多改,使其执行效率最高。

    本次实验室是从8.25 号开始的,本想在9月1号之前结束,虽然各个子模块分开调试9月1号基本完成,但所有模块组合起来调试要比想象的难,直到9月7号才能完成。编程里有句名言是:优秀的设计来自好经验,好的经验来自错误的实验,所以这些经历实验是必须要经历的。最后对于热爱技术的我来说未来的路还很长,最后用一句话勉励自己:

         路漫漫其修远兮,吾将上下而求索












阅读(933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~