菜鸟成长之路之FPGA

FPGA
全称Field Programmable Gate Array
可反复编程的逻辑器件(与ASIC专用集成电路最大的区别是具有数字电路的可重编程性)
FPGA的潜在优势

  • 灵活性
  • 并行性
  • 集成性

FPGA技术的局限性

  • 绝对性能受限:在某些性能上,FPGA比不上专用芯片

  • 灵活性是否适用:如果设计不需要太多的灵活性,FPGA的灵活性是一种浪费,会潜在增加产品成本

  • 功耗相对较高:相比特定功能,应用集中的ASIC,适用FPGA实现相同功能会产生更高的功耗

  • 设计复杂性高
    应用

  • 逻辑粘合

菜鸟成长之路之FPGA

  • 实时控制

  • 高速信号采集和处理
    菜鸟成长之路之FPGA

  • 协议实现(如更新较快的各种有线和无线通信标准,广播视频及编解码算法,各种加密算法等)
    菜鸟成长之路之FPGA

  • 各种原型系统验证

  • 并行计算(算法实现)
    菜鸟成长之路之FPGA
    模块声明类语法
    module…end module
    端口声明
    菜鸟成长之路之FPGA
    参数声明
    菜鸟成长之路之FPGA
    方便代码移植也方便代码阅读
    wire和reg
    菜鸟成长之路之FPGA
    多语句定义:begin…end
    就是C语言里的"{}",用于单个语法的多个语句定义
    菜鸟成长之路之FPGA
    强耦合关系的语法就不用加begin …end,例如if else

循环语句:for
菜鸟成长之路之FPGA
任务定义:task…endtask
其实类似于C语言中的子函数
菜鸟成长之路之FPGA
代码样例:
菜鸟成长之路之FPGA
连续赋值:assign,问号表达式(? : )

  • assign用于直接互联不同的信号或直接给wire变量赋值
  • “?:”表达式就是简单的if…else语句,多用于组合逻辑中
    菜鸟成长之路之FPGA
    always模块
    (敏感表可以为电平,沿信号posedge/negedge;通常和@连用)
    如果@括号后面跟的是*,则begin end的逻辑就是组合逻辑
  • always在组合逻辑中有多重用法
  • 如果always后面有沿信号(上升沿posedge,下降沿negedge)声明则多为时序逻辑
    -菜鸟成长之路之FPGA
    赋值符号=和<=
    一个是阻塞赋值一个是非阻塞赋值
    时序逻辑用非阻塞<=
    非阻塞做的是并行处理
    菜鸟成长之路之FPGA
    阻塞语句是顺序执行