234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    (玩电子) 电子技术学习与研究
    当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

    分享一些FPGA学习的一经验ζ

    作者:佚名   来源:本站原创   点击数:x  更新时间:2012年01月19日   【字体:

         从开始学FPGA到现在粗略算︻来的一话,已经有3个多月了,就目前而言,我并不 确定自己算︻不 算︻高手们所说的一入门了 。但是不 管现在的一水平如何,今天就总结一下自己学习它的一感受或一些认识吧 。

           首先,先说一下自己的一在学习中所发现自己的一不 足之处:

    1.      不 会总结 。

    2.      学习的一良好习惯没养成 。

       在写FPGA的一基本模块时,遇到的一问题有许多,譬如,写代码时的一警告,特别是一些不 能忽视的一警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的一警告已经出现了几次,但是就是解决不 掉 。每次在学一个模块时,只要是看懂了,它的一一些重点就没有及时的一记录在本子上    ,只有个别的一想起来时,才会做笔记 。每做完一个模块,没有及时记录下自己从这个模块中学到了什么 。上    面的一不 足,都是在写模块的一过程中,自己逐渐暴露出来的一 。我很庆幸自己的一一些问题能及时的一被发现,虽然年前的一学习将暂告一段落,但是,在年后的一学习中,我一定会时刻记得自己以前在学习上    出现了怎样的一不 足,避免类似的一事情再次发生 。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的一原因 ,定期看一下 。我上    次写的一一个代码就没有注释现在自己都看不 懂了 http://www./mcu/967.html ,每次写模块的一时候,都要记下重点知识,即使是自己懂得的一,好记性都是比不 过烂笔头的一 。

           其次,就谈一下自己在学习FPGA中,截止目前,学到了什么,认识到那些 。

       FPGA简单的一说,就是现场可编程逻辑阵列 。它的一内部是逻辑单元,它们之间可以用线连接,至于以怎样的一形式相连,则可以根据应用者写入的一逻辑决定 。每次布线都会重新组合逻辑单元,从而可以任意的一编写不 同的一逻辑 。当然,前提是定义的一逻辑块不 超出它可读写的一最大值 。可能自己说的一术语并不 专业,又●或者是理解或表达的一不 透彻,但随着学习的一加深,一定会有更加透彻的一理解吧 。学习FPGA ,虽然资料很多,但是看的一资料并不 是很多,除了看夏宇闻编写的一语法书外,看的一最多的一就是特权同学的一,一个年轻的一电子工程师,他就是通过自己的一努力 №和坚持不 懈有了现在的一水平,虽然不 能说是最好的一工程师,但是,他在这条路上    的一成长历程,却代表着更广大的一青年的一奋斗轨迹 。他的一《深入浅出玩转FPGA》这本书,以前只听网友说不 错,等到自己开始看后,发现里面的一内容确实是值得学习,不 仅是学习的一层次性,同时里面的一方法也是很不 错的一 。通过看书№和做模块,自己对FPGA中的一几个学习重点或者说菜鸟必须清楚了解的一知识,有了一些自己的一看法,首先是阻塞与非阻塞赋值的一区别,阻塞赋值是只要你给一个寄存器赋值了,它在此语句结束后,其值立马就改变,而非阻塞赋值却不 同,赋值后,寄存器存储的一值并没有改变,还是上    次所赋得值,只有当此过程块结束后,下一次脉冲来时,输出才会改变,确切的一说,某些情况下,可以将阻塞赋值理解为移位寄存器 。它们的一不 同之处可以有下图看出:
     



    图一:非阻塞赋值 

     

    图二:阻塞赋值

           当想把a先赋给b,然后赋给c时,阻塞赋值是b№和c在同一个脉冲下,一起等于a,而非阻塞赋值则是先把a赋给b,在下一个脉冲时,再将b赋给c,这才符合设计的一初衷 。所以,在运用时,要注意到它们的一不 同之处 。在时序逻辑中,用非阻塞赋值,而在组合逻辑中用阻塞赋值 。

           除了阻塞与非阻塞赋值的一区别要理解清楚外,状态机又●是一个重点,会运用状态机非常重要,这是在写可调时钟时,自己深刻意识到的一,当时写可调时钟时,想要调节它的一不 同模式,但是又●不 能在不 同的一过程块中,对同一个变量赋值(№和C51的一不 同之处),所以,当时写此代码的一时候,走了弯路 。这几次写的一几个代码中也用到了状态机,如:矩阵键盘的一扫描,串入并出№和并入串出,AD0832 。它让我越来越感觉到,要想控制好一个层次分明的一工作流程,状态机不 可少 。而要想写好一个状态机,首先要做的一就是要确定若干个状态,明确各个状态之间的一逻辑关系,转移条件等等 。虽然,到目前为止,自己还有几个模块没写完,但是,自己对状态机已经不 再是不 知道怎样用,而变为遇到一个问题时,总是想到状态机是否能解决这个问题 。我想这也是自己在这方面踏出的一第一步吧 。除了这两点外,让我感触很大的一就是除法器的一编写,以前在单片机中,用到除法,只需要一个符号:“/”就能搞定,但是,现在让自己写一个除法器,要弄懂它的一原理,这让我意识到,往往看起来很简单的一一件事,在其背后,总有许多需要我们去挖掘或者说是去认识№和学习的一地方 。除此之外,我感觉有几种编程技巧挺不 错的一,例如:“Wire    keysign=cnt[19]”这种置标志位的一方法,只有当位宽为19的一寄存器“cnt”计数计满时,keysign才变为1,同时只保留一个周期,而寄存器“cnt”计满后,自动清零,当下次计满时,keysign才再次被赋值为1;这在矩阵键盘的一扫描中,是非常重要的一 。还有就是移位寄存器的一应用,包括位拼接等等,都挺经典的一 。

           在学习的一过程中,通过学习到的一这几种相对较好的一编程方法后,我也意识到了自己在学习中的一一些不 正确的一思想,如:以前总感觉既然是写代码的一,最好还是自己写,这样才比较好,照着别人写好的一代码看,感觉好像少点什么似的一,这可能是心理作用在做怪,而这几次模块写下来,自己体悟挺深的一,刚开始总是自己想着写,进度不 仅慢,效率也不 是很高 。这让我郁闷不 已,后来看别人都是看着别人的一代码改写的一,我想了挺多的一 。看别人的一代码,能看懂其实也是一种本事,作为初级者,首先就是一个学习的一过程,不 可能什么东西都是“自来熟”,只有先学习别人的一长处,掌握了一定的一基础,才能去创新 。这一点,在我看了网上    一些人写的一代码后更加相信:大多数的一基本模块代码,大家的一编程思路都是非常一样 。只有在编写一些大型的一代码时,才会在原有的一基础上    去进行改进№和融合 。而这些技能离不 开平时的一积累 。

           关于以上    的一总结,我相信在以后的一学习中一定会对自己有莫大的一帮助,它会时刻警醒自己,在以前的一学习中,自己有哪些不 足,以后千万不 能再去犯同样的一错误,不 断地纠正,不 断地进步,相信自己一定会学好FPGA的一 。

     

    发表评论】【告诉好友】【收藏此文】【关闭窗口

    文章评论

    相关文章