微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 工程师笔记:从零开始大战FPGA

工程师笔记:从零开始大战FPGA

时间:08-19 来源:电子发烧友论坛 点击:

是带时序的逻辑,比如触发器这种。

  还有,一个模块在输入的时候,我应该不知道上级的输出是什么,那么对本模块来说,他就是一根导线,也就是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从零前进,走你。

  上次说要看FPGA的AD采集卡实例。

  在看了Verilog的基本语法后,就开始迫不及待的想看看实例怎么应用的。打开工程后傻眼了,这个project是用VHDL编写的而不是我前段时间看的Verilog啊。。。无奈,只好找了一本VHDL的电子书看一看,这次我是直接看的代码,遇到不认识的标识符,语法等等,就回去看电子书。所以效率非常低,这就是所谓的空中楼阁啊。(还是不建议像我一样的初学者刚开始就看两种语言,大牛除外,先把基本的设计思想,代码是怎么跑的这些搞懂,语言的话只是工具,当你了解了FPGA具体在干什么的时候,再来挑选所需语言)

  在了解了每一行的代码的意思后,又回过头来看这个工程,还是看不懂(不能用学单片机、ARM的思维去学FPGA),以前跑AD在单片机或者ARM上调用一下库函数就OK,根本不理会什么时序的东西,现在发现走不通。

  调整了下思维,FPGA的设计是非常模块化的感觉,那就先搞懂每个模块的用途。

  这个AD片子是个50MSPS,14位8通道的一个小东西。然后大体看了下datasheet的时序图和引脚定义。大体包含了模拟输入,数字输出,时钟(由FPGA提供),数据输出时钟(用来读取采样的数据),帧数据输出时钟(也就是输出1帧1帧的数据,也就是14位),串行时钟和数据。

  这时候就有点了解了,工程里先进行最顶层模块的的设计(VHDL用实体entity这么个关键词,我表示快混淆概念了啊...),主要是端口的说明,也就是与AD片子的接口,时钟(各种时钟)、8路数据输入等等,反正这个就对应了与AD的接口关系。

可以把实体这部分看做一个系统的大方框,主

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

网站地图

Top