学习FPGA必须要知道的要点
0 2023-03-17

  1. FPGA不是编程语言,而是一种可综合的硬件描述语言,我们再描述的时候一定要明白所要设计的是一个怎样的电路。

  2. Verilog 支持两种进程initial和always进程,前者只能用在TB(TestBench)中,后者才是可综合的。

  3. 阻塞与非阻塞指都是相对于进程本身而言的,简单来讲,阻塞用在描述组合逻辑电路,而非阻塞用于时序逻辑电路。

  4. 使用进程模块的电路类型:
    组合电路-----对组合逻辑中使用的所有输入敏感
    例子:
    always@(a or b or sel)
    时序电路-----仅对时钟和控制信号敏感
    例子:
    always @(posedge clk or negedge clr)

    always既可以描述组合逻辑,也可以描述时序逻辑。

  5. 可以用case语句完成多路选择器的功能,但是列举的情况一定要考虑全,否则会产生Latch。

  6. verilog中有两类子程序:
    函数和任务
    函数-----根据输入返回一个值
    -----产生组合逻辑
    -----用在表达式中:assign mult_out=mult(ina,inb);
    -----函数是组合逻辑,不能含有任何延时,事件,或者时序控制声明,至少有一个输入变量
    总是返回一个变量
    -----可以调用函数,但是不能调用任务。
    任务-----可以是组合或者寄存器
    -----以声明的形式调用任务:stm_out(nxt,first,sel,filter);
    -----与其他编程语言中的任务相似
    -----与函数不同任务不需要传递参数,而函数要传递参数
    -----可以调用任务和函数。
    ----- 可以含有任何延时,事件,或者时序控制声明
    -----返回零个或者多个数值

    可综合的verilog语法子集是指用硬件可以实现的语法。力求用最简单的语言实现最复杂的硬件电路。

  7. 硬件都有相应的输入输出的接口,或者是输入或者是输出,或者是输入输出。

  8. reg型是指时序逻辑里面的一个寄存数据,wire是组合逻辑里面的一条连线。

  9. define定义了一个参数,在整个工程里面都是有效地。parameter定义的一个参数只在这个文件里面进行适用的。

  10. 各种逻辑操作符,移位操作符,算术操作符大多是可综合的。

  11. assign一般是只针对于组合逻辑,而always语句既可以用于组合逻辑又可以用于时序逻辑,always模块的敏感表,如果是电平,则为组合逻辑,如果是沿信号posedge或者negedge 则为时序逻辑。

  12. begin----end和C语言里面的{}是类似的。

  13. for 语句-----循环因为综合出来的结果可能比较浪费资源,所以就一般用的比较少,但是在一些特定的设计中可以起到事半功倍的效果。

  14. Total logic element总共消耗的逻辑单元。

  15. 行为级仿真可以理解为功能仿真(前仿真);布局布线后仿真可以理解为时序仿真(后仿真)。

  16. 时序逻辑中时钟和复位信号是必须的。

  17. 注意wire赋值的一个问题如下:
    wire[2:0] key_an=key_rst_r&(~key_rst)
    其相当于如下的一个赋值语句
    wire[2:0] key_an;
    assign key_an=key_rst_r&(~key_rst);其实现的效果是一样的。

    此种方法为:  脉冲边沿检测法。

  18. 实际工作中,除了描述仿真测试激励(Testbench)时使用for循环语句外,极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

  19. FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【6.29直播】西门子EDA工具在3D IC设计中的应用


  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
  • 时钟发生器的相位噪声和抖动性能

    系统设计师通常侧重于为应用选择最合适的数据转换器,在向数据转换器提供输入的时钟发生器件的选择上往往少有考虑。然而,如果不慎重考虑时钟发生器的相位噪声和抖动性能,

    前天
  • 雷达信号处理上是选FPGA还是GPU,它们各自的特点又是什么?

      FPGA和CPU一直是雷达信号处理不可分割的组成部分。传统上FPGA用于前端处理,CPU用于后端处理。随着雷达系统的处理能力越来越强,越来越复杂,对信息处理

    05-29
  • PLC的相关知识分析

    写点纯理论的东西,最近一直在思考怎么跟零基础的人讲PLC。也就是当你面对一个门外汉时,怎么让他对PLC感兴趣,然后慢慢的带着学习PLC。思考了很多,又把学校的里

    05-27
  • 一文分析DDR线长匹配与时序

    DDR布线在PCB设计中占有举足轻重的地位,设计成功的关键就是要保证系统有充足的时序裕量。要保证系统的时序,线长匹配又是一个重要的环节。我们来回顾一下,DDR布

    05-27
  • 带你区分时序图、活动图、状态图、协作图

      时序图  时序图用于描述对象之间的传递消息的时间顺序,即用例中的行为顺序。  当执行一个用例时,时序图中的每条消息对应了一个类操作或者引起转换的触发事件。 

    05-26
  • 区分FPGA与DSP特点及用途

      FPGA是一种可编程的硅芯片,DSP是数字信号处理,当系统设计人员在项目的架构设计阶段就面临到底采用FPGA还是DSP的重要问题。本文将首先分别介绍FPGA

    05-26
  • FPGA概念对比CPU架构有啥特点

      你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了。今天笔者就和大家聊聊何为FPGA?FPGA主要应用场景是什么?有人说FPGA是替代传

    05-26
  • 时序收敛十大准则

    本文摘自《Vivado使用误区与进阶》,作者为Xilinx工具与方法学应用专家Ally Zhou。 时序收

    05-26
  • 仿真软件ModelSim及其应用

    如果您是FPGA开发方面的初学者,那么这个教程一定能够帮助你在仿真技术上越过新人的台阶;如果您是FPGA开发的老手,这篇文档也并非对您没有帮助,您可以把教程发给其他刚入门的同事,免去您亲自上阵指导的麻烦,把主要的精力放在更有价值的地方。

    05-25
  • 快速认识FPGA

      学习FPGA,在不同层次的人明显有不同的答案。先说一句,说不要开发版的都是菜鸟级选手。  我把FPGA层次划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类

    05-25
  • 分析FPGA与CPLD的差别在哪

      1.CPLD  CPLD主要是由可编程逻辑宏单元(LMC,LogicMacroCell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复

    05-25
  • FPGA与CPLD的作用及不同之处

      FPGA/CPLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA/CPLD来实现。  FPGA/CPLD如同一张白纸或是一

    05-24
下载排行榜
更多
广告