14657|40

1861

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

FPGA学习分享---初学者的快乐(记应用FPGA完成DS18B20的控制和读取) [复制链接]

        各位坛友
        在国庆过后,我就开始在坛子空间里面念叨着老师给我的这个毕业设计热身题目:运用红色飓风二代altera FPGA开发板,编写VHDL程序控制和读取显示DS18B20数字温度传感器的实时温度。我就一直走走停停,知道上个周五晚上,调试成功,让我不禁笑逐颜开,呵呵!下面,我向大家分享一下我这段时间的学习经历,请大家不吝赐教,不论批评与否,我都接受大家的意见。这是一个初学者的快乐!一点点不算什么的成就感吧,呵呵!
       我是在国庆假期回来以后,接到导师给我的这个题目的,说让我熟悉一下硬件和开发环境,之前的科研训练搞了一个暑假的软件了,这次换硬的,我很高兴的接手了这份题目。这是我第一次独立要去学习和完成以前几年没有学过的东西。只有开发环境我曾经大二时候接触过,不过都已经忘记了,又要重新学习。
       老师给了我一堆资料,基本上他那里所有的这方面的资料都给我了,说自己回去看,自己理解消化,把这个问题解决。回到寝室,空闲时候,就忙不迭动手开始看资料了。
       不看不知道,一看吓一跳,这东西还真是让我晕乎,一开始不知道从哪里下手好。那就先复习Quartus开发环境的应用吧,自己再借几本关于VHDL语言的书籍看看,编了几个译码器的小程序,仿真测试一下,这就算一个入门吧!
        开始看硬件的了。老师给了红色飓风二代的开发板,下载线却让我为难了,因为我的是笔记本,没有并口,所以无法完成程序下载,这直接关系到我以后的调试工作,所以考虑了半天,自费去珠江路电子商场,45块钱买了一根USB口转并口的线,也就是打印机用的线,相信有些坛友知道这事,我在坛子里面发帖问过,结果是不能用,原因据坛友解释,是虽然接口形式变了,但是里面数据传送的格式还是没有变,所以不能正常连接,所以四十五块钱就这样白费了!伤心啊,我好几天的生活费!:'(
       后来和老师去沟通,他问我这根线有没有发票,我才后悔当初应该要发票的,不然我就不用自己出这钱了,学生做点事,课真没有钱投资啊!在开发板公司网站上了解到有USB-Blaster下载线可以正常连接,但是需要200块,我在淘宝上看到有人买,也就几十,所以和老师商量了,就在淘宝买,记得要发票!这次我学聪明了,千叮咛万嘱咐掌柜的给发票,不然我不要,所以顺理成章得到了下载线,也报销了100块,下载线通过了测试,我终于可以放手去干啦!
      这段过程持续到了11月末,因为其中有一个波折,就是老师准备给我换开发板的,说xilinx那块开发板在另一个老师那里,功能更好,干脆直接上好板子做,所以中间停了大概半个月的时间,结果那老师那边去了一趟后,杳无音讯,所以我又回到了最初的路上,这就是我在空间里面写的那段文字。
     自此,我真正开始了第一次的FPGA学习之旅。
     之前的一个多月时间,断断续续学会了VHDL的大概模式和基本用法,还有熟悉了一下开发板的各个部件。在开发板材料里面,找了好久,总算找到了数码管,时钟等部件与开发板的管脚配置,之前一直没有找到,我愁了好久,因为资料是在太多,我得挨着看,才能看到。在网上下了一个点亮数码管的verilog HDL程序,试着跑了一下,证明了管脚配置的正确性。
     开始进入老师给的题目了。
     我大致在纸上规划了一下,我把任务划成了两个个板块:数码管动态显示板块和芯片控制和温度读取板块。从难易程度上讲,动态显示以前用原理图描述过,所以有一定的基础,决定从这里开始下手,最后的硬骨头是第二板块,留待最后。
     比较顺利在一个周的剩下不多的空闲时间里,用VHDL编写出了一个板块,期间,参考过别人写的包括时钟的分频部分和动态显示部分。采用动态显示是目前的主流,因为是节约资源。在软件上仿真测试通过,并没有下载到硬件上调试。
     接下来,开始了最关键一个板块,也是我从来没有接触过的一个新东西。这个部分,我做了持续两周的时间,到上周末结束的。
      一直没有接触过温度传感器,之前很多网上的资料,都是用单片机控制的,采用汇编语言编写的程序,对我来说,参考意义不是很大。
     我先在坛子里面下载了关于DS18b20的资料介绍(老师当时并没有给我这个资料),了解了它的结构和工作方式和命令字,还有工作时序关系(这个太关键),认为应该问题不大,就开始编写了。
     在纸上画好流程图,这是导师在暑假我科研训练时候教我的,说这样便于掌握自己的编写思路,还有利于程序的模块化。
然后确定好输入输出口。一直没有仔细看开发板的DS18b20和开发板的接线,以为是寄生电源工作方式,后来发现线的焊接不对,去找老师,才发现焊点掉了一个。回来一看,知道了不是寄生电源工作模式,是独立的3.3伏电源供电。有一个4.7K的上拉电阻。(在3.3伏电压上,我还曾经怀疑是否足够,因为在后来的下载测试开始的时候,出现了读取错误的情况,我以为是这里的问题,但是后来查资料,排除了这个可能。)
     编写过程开始的时候,我被一个问题给难住了,如果编写出这个控制读写时序的问题。
     那几天思考这个问题的时候,我愁了好久,就是找不到下手的地方。我想的方法总不能很好的解决这个问题。很感谢网上一个东南大学师兄分享的文章和程序片段,让我的思路豁然开朗。时序中,牵扯到的延时,控制和读取命令,还有时钟的转换,采用嵌套循环的方式,只要保证时序恰当,就能很好的解决这个问题!
     我开发板上的时钟是50MHz,我采用了三个循环嵌套,最小循环时间是计数50,达到1us,第二循环计数120,达到120us,每一次读写一个数,都必须大于60us,所以我就取120,还有初始化等等在里面中和考虑的循环时间(这是最终取的,刚开始的时候不是这么多,出错了的);最大的循环式20000,达到温度转换过程要求的2s的等待时间。这样,就解决了一个很关键的时序问题,很感谢那个东南大学师兄在网上的慷慨分享,虽然联系不到你,但是我在这里表示感谢!
      这个时序问题的理解,让我在两天之内,就把控制读取的大致程序写了出来。接着我编写了一个组合VHDL文件,就开始下载仿真调试了!我的想法是始终频率太高,在软件上仿真测试有些不实际,所以直接上板看情况回头调试。
      当然,下载的结果问题很多,一看数码管,当时就晕乎,出来的结果很奇怪,不是正常的数。我就回头找出错的地方。
      首先,我在程序里初始化读取温度输出,结果数码管能够显现我想要的温度,所以证明不是第一板块出问题,问题就在第二板块的温度读取部分。
      我先设置的温度读取时在60us内完成,这等于最小时限,我想很有可能是这个问题,就改到80us,也不行,索性改到了120,在把每次读取完毕等待的最小1us调为2us,让每一部分都有一个余量,这样就能够保持不冲突。
      然而还是不行~
      这部分我在这里说的不多,但是的确花了我两天的时间去查找资料和修改整理,最后结果还是不对。我很郁闷,但是我认为我还是挺能坚持的,因为我这个人做实验比上课对我的诱惑还大,所以仔细想想,回到DS18b20的资料介绍,好好查找我的疏漏之处,问题肯定就在这里面。
       终于,在一行不起眼的文字里面,我发现了一段文字,意思是在温度读取时序中,数据线在15us低电平拉高后,读电平值应该不要远离15us的拉高点。这让我又找到了希望。之前我读的时间点在35us,尽管相对于120us不算远,但是的确不靠近15us的拉高点,我尝试改到了30,还是不行,后来我索性该到了20us~~~~~~~~~~~~成功了。当数码管显示出四个数字的时候,我直接懵了,还以为怎么的,我完全没有想到我错误就在这么一个小小的读取时间点上!
       当即用手接触传感器,温度开始上升,放开了,又开始下降,这让我兴奋不已。导师说,让我在这学期期末的时候完成这个题目,而我现在都完成了最基本的目标,我太激动了。
       后来,我要确定温度的误差,跑了学校的超市和商店,都没有温度计,最后在班上别的寝室找了一根甲流用的体温计。我为了测量误差,献身了!
       把传感器放到了我腋窝下,夹 了五分钟,温度稳定在了35.7度,然后我用体温计再次测量我的腋窝温度,36.2度,误差控制在了高低0.5度的允许范围,这证明了我的准确性。
       ds18b20的温度测量范围是-55度到125度,于是,我开始修改程序,让四个数码管的最高位,在零下温度的时候,显示-的符号,高于一百度的时候,作为温度的百位输出。呵呵,然而我要如何验证程序的正确与否呢?
       我思前想后,开水是不行的了,测试过,只有98度,于是我找来了一个易拉罐,用一根蜡烛烤它(寝室内部绝密,千万不要让南理工物管知道,不然我就玩了~~)然后温度传感器伸进去靠近铁皮边沿测量,的确能正常显示100度以上的温度;然而零下我还真没有机会去验证,我还在等待老天给个机会,我想下雪,下雪了就可以捧雪辉寝室测量,呵呵,我感觉我疯狂了!!
       接下来,我还想再程序里面加温度报警装置啊,正在打算中,等我零下温度测量通过了就开始动手做。支持我吧!
       先写这么多,今天有点冷,我看了一下我做的温度显示是4.1度,是够冷的了!其实我很希望零下的啊!
      给大家看看我的开发板和测试结果,呵呵!


好了,东西就这么多了,请各位坛友支持!! 支持一个初学者哈!!!






此帖出自FPGA/CPLD论坛

最新回复

不错!  详情 回复 发表于 2013-2-23 15:31
点赞 关注
个人签名有目的的学习是最有效的学习!
 

回复
举报

1861

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
呵呵,我还是上课回来自己顶一个咯!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 

回复

22

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

.

呵呵,你就好啦,   有学习板免费用,   我自己那个都没买,要自己掏钱太贵了
此帖出自FPGA/CPLD论坛
 
 
 

回复

6366

帖子

4914

TA的资源

版主

4
 
这个要强烈支持啊,
绝对的好资料
此帖出自FPGA/CPLD论坛
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

5
 

回复 板凳 kk2614755 的帖子

这个嘛,一定要和导师关系搞好呀,取得他的信任很重要啊!
以后我可能要买一块开发板自己做,呵呵!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

6
 

回复 4楼 tiankai001 的帖子

谢谢支持啦!我第一次做真正的东西啊!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

2400

帖子

0

TA的资源

裸片初长成(高级)

7
 
看过!很好,!继续努力!
此帖出自FPGA/CPLD论坛
 
 
 

回复

104

帖子

0

TA的资源

一粒金砂(中级)

8
 
绝对的好资料
此帖出自FPGA/CPLD论坛
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

9
 

回复 7楼 zhjzh72_2004 的帖子

谢谢鼓励,我会继续努力!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

10
 

回复 8楼 mydepc3721 的帖子

谢谢你的支持和评价!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

1781

帖子

0

TA的资源

五彩晶圆(中级)

11
 
我曾经做了一个频率计的简单例子,效果还不错呢。
此帖出自FPGA/CPLD论坛
个人签名只有求知欲,没有求偶欲的人是植物,只有求偶欲,没有求知欲的人叫动物,既没求知欲,又没求偶欲的人是矿物。
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

12
 

回复 11楼 wangjiafu1985 的帖子

那你可以拿出来大家分享一下嘛,我也学学呀!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

13
 

回复 13楼 zhangkai0215 的帖子

这个资源问题,主要是老师对我很好,跟着他做科研训练一年了,最后这大四,肯定要帮帮咯!呵呵,机会难得,所以我要加紧时间多学点呀
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

14
 
不错,学习的对象.
此帖出自FPGA/CPLD论坛
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

15
 

回复 15楼 core_rui 的帖子

不敢担,我只是跟着老师学习。坛子里面牛人一堆堆,向他们学习!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

16
 
我编了一个空调控制器的代码,用FPGA实现
此帖出自FPGA/CPLD论坛
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

17
 

回复 17楼 琅骏 的帖子

哎呀,说说看勒,大家分享一下,呵呵!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(初级)

18
 
加油吧!
此帖出自FPGA/CPLD论坛
 
 
 

回复

471

帖子

0

TA的资源

纯净的硅(中级)

19
 

回复 楼主 zqzq501311 的帖子

看了你们真好,我们学习什么都要自己掏钱买,连进个实验室都没法,唉
此帖出自FPGA/CPLD论坛
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

20
 

回复 20楼 jialaolian 的帖子

多和老师交流,和老师搞好关系,这样就有机会了啊!
此帖出自FPGA/CPLD论坛
个人签名有目的的学习是最有效的学习!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表