1、首先了解FPGA是什么,Field(现场) Programmable(可编程) Gate(逻辑门) Array(阵列),其中,逻辑门单元是构成一切数字逻辑器件的基本单元,大量逻辑门单元可以在任何地方随时进行组装的,高度灵活,理论上来讲,只要有足够的资源(积木数量足够多)几乎可以实现数字域的任何功能,受限的是速度、功耗以及系统的成本。

图1 FPGA架构及内部主要功能单元

2、要充分了解FPGA内部功能单元(逻辑单元、存储器、时钟产生、可编程IO等),单元作用、配合方式,针对具体型号,了解该型号的器件内部的各种功能单元具体数量。以Lattice版本为例:

图2 Lattice版本FPGA芯片内部主要功能单元

该器件的具体资源参数如下:

  • 4320个LUT资源 - 每个LUT(查找表)有4个输入,16种状态,并一个寄存器,用来实现各种逻辑功能;

  • 92Kbit RAM - 在逻辑之外的成块状的存储器,可灵活配置成各种位宽、各种读写模式存储功能,如FIFO、双口RAM等;

  • 96Kbit用户闪存 - 这是Lattice 的一个创新,后来Altera/Intel也学着做了MAX10,就是将配置FPGA的存储器从外面的PROM变成了集成在FPGA内部的Flash,可以反复编程,从此FPGA不再外挂一个累赘了,用起来就像PLD一样方便;

  • 嵌入式功能块(硬核):一路SPI、一路定时器、2路I2C,这可是MCU除了ALU、总线之外最基本的功能模块,都硬化到该FPGA内部了,也就意味着如果你想用这个FPGA做一个MCU玩玩,可以直接将这些已经硬化的功能块通过总线挂在处理器上,没必要再写这些功能,并且占用逻辑资源了;

  • 2+2路PLL+DLL - 我们前面讲过外部常用的时钟产生器(比如晶振)产生的频率不高,但FPGA内部可以工作到很高的速度,因此现在几乎所有FPGA器件都有内置的PLL将外部的低频率的时钟整到很高频率,如外部时钟为12MHz,内部PLL可以将它倍频到400MHz;

  • 支持DDR/DDR2/LPDDR存储器 - 这是说该器件能够直接挂这些存储器,适配它们的电平和时序;

  • 104个可热插拔I/O - 每个I/O管脚可以单独编程为输入、输出、上拉或下拉、并可以设置器输出阻抗,以便支持不同的接口协议,就像城市连接外部的道路可进可出、有的铺沥青、有的是土路;

图3 管脚分布
  • 内核电压2.5-3.3V,供电电压的范围比较宽;

  • 132脚BGA封装,引脚间距0.5mm,芯片尺寸8mm x 8mm;

3、数字逻辑的设计思想 - 针对任意一项具体的功能,正确组合器件内的单元,按顺序连接这些单元,需要比较扎实的数字电路/数字系统设计的基础知识以及逻辑思维能力。

4、需要一些工具来帮助你实现,如一套从头到尾执行的设计环境(FPGA厂商提供的编译工具 - Lattice的Diamond、Intel的Quartus、Xilinx的Vivado),一种连接逻辑思维和机器操作之间的沟通工具 - 设计语言(原理图、Verilog、VHDL等等)。

Verilog 是 Verilog HDL 的简称,Verilog HDL 是一种硬件描述语言(HDL:Hardware Description Language),硬件描述语言是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具,把网表转换为要实现的具体电路布线结构。

在Verilog编程中需要注意以下几点:

  • 所有的Verilog程序都以Module(模块、组件)的方式存在,一个简单的逻辑可以由一个Module组成,复杂的逻辑可以包含多个Modules,每个Module有独立的功能,并由输入、输出端口被其它module调用。通过Module的方式可以将一些比较独立、可以复用的功能进行模块化,代码阅读起来也比较直观;

  • Verilog的信号分为wire和register两种类型,wire可以看成直接的连接,而register具有对某一个时间点状态进行保持的功能,因此在设计逻辑的时候要明确定义每个信号是wire还是reg属性;

  • 并行执行:Verilog描述的主要是硬件而不是软件,因此也就意味着其描述的各个功能之间可以并行执行,比如在你的设计中你有3个计数器,每一个计数器都连接到不同的时钟上,这是没有问题的,每一个时钟都干自己的事。不像MCU,只有一个线程按照顺序执行。

FPGA入门(FPGA结构、Verilog编程基础)相关推荐

  1. 2023年的深度学习入门指南(10) - CUDA编程基础

    2023年的深度学习入门指南(10) - CUDA编程基础 上一篇我们走马观花地看了下SIMD和GPGPU的编程.不过线条太粗了,在开发大模型时遇到问题了肯定还会晕. 所以我们还是需要深入到CUDA中 ...

  2. Python入门——第一章 python编程基础

    Python入门 文章目录 Python入门 第一章 python编程基础 1.1 基本输入输出 1.1.1使用print()函数进行简单输出 chr()函数 print()输出到指定文件 print ...

  3. 使用 FPGA 开发板采用 Verilog 编程练习基于 VGA 图像显示

    目录 一.VGA 简介 二.实验内容 2.1 Quartus 新建工程 2.2 新建 Verilog 文件 2.3 配置管脚 2.4 DE2-115 开发板连接 2.5 烧录程序 三.总结 四.参考资 ...

  4. Matlab入门 (2 )编程基础

    MATLAB编程基础 #htext/orange 本章主要介绍关于M文件.函数定义.类型.参数传递方法.程序控制结构.文件操作.代码优化方法和程序调试方法 M文件 概述 MATLAB脚本文件 (Ⅰ)脚 ...

  5. python编程入门电子书下载-Python编程基础如何快速入门?“附电子书下载”

    本文是一位程序员的Python学习心得分享,对于新手来说,如何快速入门始终是个难题.今天我们就来看看他的心得体会,相信会对你有所启发. 本人使用Python语言将近2年了,这2年的时间就是我自己被Py ...

  6. Arduino 开发入门 学习笔记 Arduino编程基础

    11月2日至5日 事务缠身 11月6日 继续坚持 Arduino语言 其实是基于C/C++的嵌入式设备开发框架,核心库文件提供的API使传统开发方式中各个寄存器的意义以及寄存器配置过程变得透明. 增强 ...

  7. FPGA入门到实战-学习笔记

    ref:腾讯教育 FPGA入门到实战-录播课-上海V3学院 https://ke.qq.com/course/66019 老师:尤恺元 第1课 掌握Verilog HDL的高级编码知识 授课日期: 老 ...

  8. 如何零基础入门FPGA?这篇文章让你吃透!

    01  FPGA学习重点 1. 看代码,建模型 只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行 ...

  9. 零基础入门FPGA,如何学习?

     问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. 如果想速成,那就上网看视频吧,这样主要是面 ...

最新文章

  1. mongodb索引--从55.7秒到毫秒级别
  2. openmv4闪灯说明_OpenMV Cam
  3. linux删除之前的文件日志
  4. 国内 GitHub 造假黑色产业链曝光;开源开发者撤销对 ICE 禁用的决定
  5. 笨办法学 Python · 续 练习 43:SQL 管理
  6. linux服务占用的真实内存,为什么TOP看不出真实的内存占用情况?
  7. android 加网络权限管理,Android添加用户组及自定义App权限的方法
  8. 代码整洁之道 垃圾编码收集
  9. 【数据库】MySql分割字符串
  10. ip头ttl_TCP/IP协议详解内容总结,看完恍然大悟
  11. MySQL内核月报 2014.11-MySQL· 5.7改进·Recovery改进
  12. php读取execl 实例,php读取excel的实例代码
  13. 笔记本android vga输出,笔记本VGA接口基础知识普及
  14. Oracle项目管理平台的多层级组织架构设置方法
  15. 关于图像客观质量评价
  16. NLP之分词技术理论
  17. linux基础及应用教程第二版课后答案,Linux基础及应用复习题(附加参考答案)
  18. 关于超实数单子的说明
  19. 基于rancheros离线安装Habor以及Rancher
  20. hMailServer搭建邮件服务器,用自己的域名邮箱,酷一些吧

热门文章

  1. 如何让Echarts地图只显示某个省、市、区
  2. 使用ngrok对黑群晖进行内网穿透/公网访问
  3. 渲染富文本编辑器并设置富文本编辑器的高度
  4. 超详细的张飞硬件第七部开关电源读书笔记02
  5. CSAPP-处理器体系架构
  6. gstreamer 无组件问题修复
  7. 计算机网络实验(思科)
  8. 【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】
  9. 解决libssl.so.1.1 libcrypto.so.1.1依赖问题
  10. 计算机里创建本地磁盘分区,韩博士教你怎么用本地模式将电脑磁盘分区