微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA从零开搞————第二天(朝花夕拾)

FPGA从零开搞————第二天(朝花夕拾)

时间:10-02 整理:3721RD 点击:
  夜深人静的时候最适合总结和学习新东西了有木有啊,嘿嘿。FPGA之旅的第二天,走你!  今天看的东西不是特别多,主要是公司还有其他活要干(说点小感悟:公司是给你钱让你产生效益的,而学校是你花钱买教育的,这是我看来本质的区别,后来者一定要转变好心态和思维),但是学习还得继续。废话结束!
  回顾:昨天主要看了一些基本的语法(我是以夏宇闻的书为参考书,其他的用到时再去拓展),首先复习吧(年纪大了一下就忘了)。
  wire和reg的区别(自己的理解,望大牛批评指正):从仿真角度看,wire对应的连续的赋值,比如assign;reg对应过程赋值,比如always、initial;从综合的角度来看,要对应实际的电路,wire综合出来的结果就是一根导线,就起连接作用。reg比如在always中综合的结果就是逻辑电路,比如or、and这些门电路,没有时钟的边沿。另一个结果是带有时钟边沿的,综合出来就是带时序的逻辑,比如触发器这种。
  还有,一个模块在输入的时候,我应该不知道上级的输出是什么,那么对本模块来说,他就是一根导线,也就是wire型,输出则由我决定是wire还是reg。一般而言,整个设计的外部模块输出,也就是最顶层,要求是寄存器输出,reg,较稳定,扇出能力也好(这句话不理解妈蛋)。
例子来啦:
一:
reg  a,b;
wire and_result;
...
assign and_result =a&&b;
你可以试试把wire定义成reg。综合器会报错。

二:
wire按照国外的教材上面的定义:
wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。
那么你可能会问。assign and_result =a&&b不是就是对wire的赋值吗?
其实并非如此。综合器综合时将a&&b综合成ab经过一个与门。而and_result只是连接到与门输出的线。正真综合出与门的是&&。而不是result,是不是有点神奇啊哈哈。
好了,复习到此结束。
  今天主要看的还是Verilog的基本知识:Task和Function的基本知识,一个是任务,一个是函数,跟C语言有点像。需要注意的是,函数和主模块共用仿真单位时间,任务可以自定义仿真时间单位;函数要有返回值,任务木有,而是通过输出端口输出(有点绕,不过一看书上的例子就懂了)
  接着看了一下有限状态机,格雷码、独热码的概念,对着书上的例子,看了下计数器、移位寄存器、触发器等等的Verilog代码,感觉代码还是挺好看懂的,但是自己动手写起来有点困难,所以还是多动手,最最简单的例子自己写起来感觉到处是问题(用我们那的方言就是:眼眼巧,手手拙)哈哈。
  由于是个学渣,当初的数电也是皮毛,连基本的触发器,状态机,卡诺图都忘得一干二净,所以又回头看了半天数电(突出一个囧),感觉这些基本电路设计的代码倒是好看,但是对电路硬件本身不是很熟悉的话,心里特不踏实。一句话,用到啥看啥,没必要从头翻,毕竟时间有限啊。
  今天就看了这么点知识,然后跑了简单的例子(不得不说,FPGA综合和布线咋就这么慢呢?听同事说大点的项目光是逻辑综合、布局布线都要花十几个小时,我在心里默念,I am too young too simple)。
  为什么叫朝花夕拾呢?因为当初丢掉的数电知识需要拾起来呀。
  现在主要在想,FPGA内部没有像单片机,arm那些逻辑处理单元,和运算的东西,怎么去实现一个比如像串口啊、IIC、USB、AD、网络这些功能呢,抱着这些疑问,先去休息了哈哈。明天打算直接看实例项目代码——AD采集卡,看看怎么实现的。到时候再写点总结(希望能看懂),当然代码是不会贴出来的(保密嘛,职业操守还是要有的嘿嘿)。
  

写的很好,总结到位。

会每天都更新吗,跟着你学习吧~

谢谢分享!

FPGA对供电有要求没有?

想学学FPGA不知道有什么好的资料不。

也是马上就要学了

新手 学习了。

感觉确实需要记录自己学习到的,不然很块就忘了

谢谢分享!谢谢谢谢分享!

学习啊 从零开始

希望小编天天更

学习学习,谢谢分享!

这样坚持下去感觉效果不错

写的很好,总结到位。

顶顶顶

顶顶顶

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top