赞
踩
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,只有一个线程按照顺序执行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。