FPGA入门(FPGA结构、Verilog编程基础)
1、首先了解FPGA是什么,Field(现场) Programmable(可编程) Gate(逻辑门) Array(阵列),其中,逻辑门单元是构成一切数字逻辑器件的基本单元,大量的逻辑门单元可以在任何地方随时进行组装的,高度灵活,理论上来讲,只要有足够的资源(积木数量足够多)几乎可以实现数字域的任何功能,受限的是速度、功耗以及系统的成本。
2、要充分了解FPGA内部功能单元(逻辑单元、存储器、时钟产生、可编程IO等),单元作用、配合方式,针对具体型号,了解该型号的器件内部的各种功能单元具体数量。以Lattice版本为例:
该器件的具体资源参数如下:
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管脚可以单独编程为输入、输出、上拉或下拉、并可以设置器输出阻抗,以便支持不同的接口协议,就像城市连接外部的道路可进可出、有的铺沥青、有的是土路;
内核电压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编程基础)相关推荐
- 2023年的深度学习入门指南(10) - CUDA编程基础
2023年的深度学习入门指南(10) - CUDA编程基础 上一篇我们走马观花地看了下SIMD和GPGPU的编程.不过线条太粗了,在开发大模型时遇到问题了肯定还会晕. 所以我们还是需要深入到CUDA中 ...
- Python入门——第一章 python编程基础
Python入门 文章目录 Python入门 第一章 python编程基础 1.1 基本输入输出 1.1.1使用print()函数进行简单输出 chr()函数 print()输出到指定文件 print ...
- 使用 FPGA 开发板采用 Verilog 编程练习基于 VGA 图像显示
目录 一.VGA 简介 二.实验内容 2.1 Quartus 新建工程 2.2 新建 Verilog 文件 2.3 配置管脚 2.4 DE2-115 开发板连接 2.5 烧录程序 三.总结 四.参考资 ...
- Matlab入门 (2 )编程基础
MATLAB编程基础 #htext/orange 本章主要介绍关于M文件.函数定义.类型.参数传递方法.程序控制结构.文件操作.代码优化方法和程序调试方法 M文件 概述 MATLAB脚本文件 (Ⅰ)脚 ...
- python编程入门电子书下载-Python编程基础如何快速入门?“附电子书下载”
本文是一位程序员的Python学习心得分享,对于新手来说,如何快速入门始终是个难题.今天我们就来看看他的心得体会,相信会对你有所启发. 本人使用Python语言将近2年了,这2年的时间就是我自己被Py ...
- Arduino 开发入门 学习笔记 Arduino编程基础
11月2日至5日 事务缠身 11月6日 继续坚持 Arduino语言 其实是基于C/C++的嵌入式设备开发框架,核心库文件提供的API使传统开发方式中各个寄存器的意义以及寄存器配置过程变得透明. 增强 ...
- FPGA入门到实战-学习笔记
ref:腾讯教育 FPGA入门到实战-录播课-上海V3学院 https://ke.qq.com/course/66019 老师:尤恺元 第1课 掌握Verilog HDL的高级编码知识 授课日期: 老 ...
- 如何零基础入门FPGA?这篇文章让你吃透!
01 FPGA学习重点 1. 看代码,建模型 只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行 ...
- 零基础入门FPGA,如何学习?
问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. 如果想速成,那就上网看视频吧,这样主要是面 ...
最新文章
- mongodb索引--从55.7秒到毫秒级别
- openmv4闪灯说明_OpenMV Cam
- linux删除之前的文件日志
- 国内 GitHub 造假黑色产业链曝光;开源开发者撤销对 ICE 禁用的决定
- 笨办法学 Python · 续 练习 43:SQL 管理
- linux服务占用的真实内存,为什么TOP看不出真实的内存占用情况?
- android 加网络权限管理,Android添加用户组及自定义App权限的方法
- 代码整洁之道 垃圾编码收集
- 【数据库】MySql分割字符串
- ip头ttl_TCP/IP协议详解内容总结,看完恍然大悟
- MySQL内核月报 2014.11-MySQL· 5.7改进·Recovery改进
- php读取execl 实例,php读取excel的实例代码
- 笔记本android vga输出,笔记本VGA接口基础知识普及
- Oracle项目管理平台的多层级组织架构设置方法
- 关于图像客观质量评价
- NLP之分词技术理论
- linux基础及应用教程第二版课后答案,Linux基础及应用复习题(附加参考答案)
- 关于超实数单子的说明
- 基于rancheros离线安装Habor以及Rancher
- hMailServer搭建邮件服务器,用自己的域名邮箱,酷一些吧
热门文章
- 如何让Echarts地图只显示某个省、市、区
- 使用ngrok对黑群晖进行内网穿透/公网访问
- 渲染富文本编辑器并设置富文本编辑器的高度
- 超详细的张飞硬件第七部开关电源读书笔记02
- CSAPP-处理器体系架构
- gstreamer 无组件问题修复
- 计算机网络实验(思科)
- 【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】
- 解决libssl.so.1.1 libcrypto.so.1.1依赖问题
- 计算机里创建本地磁盘分区,韩博士教你怎么用本地模式将电脑磁盘分区