零基础学FPGA (二十一)SOPC进阶自定义AD转换IP核设计全流程_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、零基础学fpga (二十一)sopc进阶,自定义ad转换ip核设计全流程 今日带大家来设计一个自定义的ip核,我们从最基本的做起,包括datasheet 的理解,设计的整体框架,ad转换代码的编写,avalon-mm接口的编写,硬件系统还是基于上次的硬件系统,不过我们不再用altera给我们提供的ip核了,我们要自己做一个,有时候我们找不到他们提供的ip核,或者有些ip核是收费的,这个时候我们就可以自己来编写自己的ip,虽然没有正式的那么标准,但是用来做一些试验还是没什么问题的。 这次试验我用的是本来我那块板子,由于那块板子上有ad转换芯片,而我们上次搭建的硬件系统是基于cyclone iv的

2、硬件系统,但是这块开发板上没有ad芯片,我们就不做软件下载的试验了,其实只要在我们编写ad转换hdl代码的时候测试胜利,那么我们软件调试部分就应当没什么问题了,有条件的学生可以自己做这一部分。一、有理可依全部编写的代码必需都得有理可依,要不然挺直看代码那得有多疼痛啊,第一部分先来带大家认识一下datasheet上的东西我们要操作的ad转换芯片tlc549的顶层视图可以看到这个芯片应当不太难操作,左边是模拟信号输入端,由于是模数转换,这边我们就临时可以不管,看右边有时钟信号,数字信号输出端和片选端,那么我们需要控制的,无非就是时钟信号和片选信号了还有什么器件描述什么的大家可以自己取去看,我们主要

3、去看时序图大体上来看一下,首先是的工作时钟,它在片选信号为低电平的时候有效,延续8个周期用来将转换后的数字信号送到数据总线上,8个时钟周期过后就是转换周期,用来对模拟信号举行转换,在这期间,片选信号要拉高,对于片选信号,开头的时候有一个从高电平到低电平的跳变,然后等待一个建立时光tsu,建立时光结束后adc工作时钟开头工作,8个时钟周期后,片选拉高开头模数转换,之后片选拉低,将转换后的数据送出去。详情部分,可以看到当片选拉低后,我们可以定义一个使能信号en来开启工作时钟,从片选拉低到工作时钟有效需要一个建立时光1.4us,这个数据在下面的表格中可以查到,之后是8个数据锁存周期,每一个时钟的凹凸

4、电平延时不能小于404ns,详细也是表格中找,然后是转换周期,时光是17us,至于转换期间的工作时钟是什么我们可以不必关怀。再来看一下它的注释内容,大体意思是说转换周期需要一个17us的延时,注释b大体意思是说,当片选拉低之后,数据的第8位就自动的放到了数据总线上,剩下的7位数据在第7个时钟下降沿到来的时候就已经锁存了。二、编程思路这段时光跟着他们在上课,听李教师讲课的时候,李教师不会将大量的时光放到代码的编写上,而是有时候花一整节课的时光来协助同学来构建编程的思路,包括系统架构,状态转移图等,有了这些都东西作为铺垫,我们的代码编写就可以手到擒来,起到事半功倍的效果,假如我们不做好事先的预备设

5、计工作,没有一个系统的架构在我们脑海里,上来就去写代码,就会发觉越写问题越多,思路不通,处理不当等问题,所以小墨学生回归之后也用word做了这么个状态转移图,这个试验不是很难,状态机也没那么复杂,就是希翼起到一个抛砖引玉的过程,通过一个小小的实例,告知大家以后在拿到一个问题后改怎么下手。虽然画的不怎么样还是可以看得哈理一下编程思路吧,从datasheet里面我们知道。我们要做好这几个延时,即预备转换的延时1.4us,17us的转换延时,和404ns的adc工作时钟凹凸电平延时等。状态机部分采纳两段式状态机。将组合规律与时序规律分开,采纳独热编码。根据状态转移图构思好状态机的编程思路。数据处理部

6、分,为了保证数据的稳定性,可以采纳边沿脉冲检测法检测adc工作时钟的升高沿,在每一个升高沿将转化后的数据一位一位锁存,因为数据是串行输入,还要用到串并转换的思想,这些编程办法前面都已经介绍过,就不一一讲解了。代码风格部分,个人感觉这一套代码比起以前有了一些长进,起码看起来思路清楚,注释合理,数据处理恰当,语法直白,没实用到一些很别扭的语法等。详细还需要广阔读者自己去体味,也希翼你们能够喜爱代码部分就不一一讲解了,源代码会附在文章后面,大家可以自行消化三、仿真与验证上面是前仿真的过程,从波形来看和我们的设计吻合,用标尺量一下,延时参数也和我们设计的全都按理说我们下一步需要举行时序约束部分,但是我

7、们的这个设计是us级的,即使不做时序约束也是可以的,但是究竟我设计的是一个ip核,为了稳定起见还是做一下时序约束比较好。说实话,时序约束部分,个人感觉是一门巍峨上的知识,变幻多端,有些都是阅历值,你问一个工程师为什么是这样约束,有时候可能他也答不上来。之前也接触过静态时序分析的学问,但是向来不敢写,感觉还是学的不怎么样吧,想回去以后学内存这方面的时候再去好好讨论一下它下面是后仿真的波形图可以看到,波形跟我们的设计吻合,也没有浮现什么不合理的设计什么的,可以下板验证了可以看到,当我们扭动滑动变阻器的时候,相应的模拟量被转化成数字量并在数码管上显示了四、avalon-mm总线接口设计我们知道,我们

8、设计的这个ip核是要挂到avalon-mm总线上的,作为一个从机,总线需要通过片选信号来拜访总线上挂的这些ip,因此,我们也需要给我们的ip设计一个和总线通信的接口我们设计ad转换的ip核的片选信号低电平有效,当片选信号有效的时候,假如再来一个读信号,那么,数据就会被总线读走,送至cpu五、自定义ip好了,下面我们就可以来定义我们自己的ip了先将我们刚才设计好的ad转换的.v文件复制到我们硬件系统的名目中,并养成一个好的习惯,新建一个文件夹,并命名为ip,以后我们设计的ip都可以放到里面打开我们之前硬件系统的sopc builder,双击左上角的new component ,在hdl file

9、一栏中添加我们的adc.v文件,在signal一栏中,按照端口的类型配置端口,时钟复位信号不用说,其中我们的与总线接口部分的端口属于总线的从机端口,我们需要把它定义为avalon_slave_0端口类型,信号类型设置为低电平片选,低电平读就好,其他端口设置为conduit类型,信号类型设置为export,由于我们是用来输出到外部器件的端口在接口一栏中,我们可以设置一些相关参数,普通为默认就好,为了我们数据的稳定性,我们可以把读延时周期设置为4个,保证它有足够的时光去处理数据然后点击finish,双击我们生成的ip核将它添加到系统工程中即可,然后重新生成硬件系统六、硬件系统生成将生成的新的硬件系统的例化接口声明好,这样在我们的设计顶层又多了这样一个模块,根据惯例分析综合,时序约束,分配管脚,这样我们的硬件系统就设计好了七、软件部分由于我的硬件系统上没有ad芯片,这里就只容易说一下软件代码,不做下板调试了软件部分只讲一下主函数部分,看下图代码很容易,就是每隔一段时光将采集到的值在窗口打印,不过有个问题需要说明一下,有人会问,我们在自定义ip的时候不是定义了片选端和读信号么,为什么我们没有对它举行操作就可以读数据了呢?其实我们是不需要对我们的外设举行片选或者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论