FPGA学习笔记(一)——FPGA学习入门

之前一直都是自己看书学习FPGA,例如:云创工作室《Verilog HDL 硬件描述语言程序设计与实践教程》,该书主要讲了如何使用ISE和Modelsim进行编程,很详细,初学者可以对整个FPGA开发流程有个大概了解。夏宇闻《Verilog 数字系统设计教程》,该书主要讲解了Verilog HDL语法知识,可以作为Verilog  HDL语言入门。

但是,我做项目时,还是以c++的思路编程,没有体会到Verilog HDL的精华。所以,我想通过学习小梅哥的视频培训,纠正自己学习过程中的误区。不多说了,开始吧。

该视频作为FPGA入门视频,主要讲解了所有视频的学习路线。

(一)简介

FPGA设计的是电路,有单独的语言,即硬件描述语言(HDL),以文本形式形式来描述数字系统硬件结构和行为,是一种用形式化方法来描述数字电路和系统的语言,可以从上层到下层来逐步描述袭击的设计思想。即用一系列分层次的模块来表示复杂的数字系统,并逐层进行验证仿真,再把具体的模块组合由综合工具转化成门级网表,接下去再利用布局布线工具把网表转化成具体电路结构的实现。世界上主流的硬件描述语言有VHDL、Verilog HDL和System Verilog,System Verilog包含了Verilog HDL,是一种硬件描述和验证语言,偏向于验证。Verilog HDL是一种类C语言,VHDL是一种类ADA语言。

Verilog HDL和C语言的比较:

两者有着本质区别。Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真;C语言是一种软件语言,是控制硬件来实现某些功能。

(1)C语言是由函数组成,而Verilog HDL则是由module模块组成。

(2)C语言中的函数调用通过函数名相关联,函数之间的传值是通过端口变量实现的。相应的,Verilog HDL中的模块调用是通过模块名相关联,模块之间的联系同样通过端口之间的连接实现,和C语言中端口变量所不同的是,模块间连接反映的是硬件之间的实际物理连接。

(3)C语言中,整个程序的执行从main函数开始。Verilog HDL没有相应的专门命名模块,每一个module模块都是等价的,但是必定存在一个顶层模块,它的端口中包含了芯片系统与外界所有I/O信号。这个顶层模块从程序的组织结构上讲,类似于C语言中的main函数,但是Verilog HDL中所有module模块都是并发运行的。

(4)C语言是运行在CPU平台上的,是串行执行的。Verilog HDL语言用于CPLD/FPGA开发,或者IC设计,对应着门逻辑,所有模块是并行执行的。

(二)学习路线

1、逻辑设计

接口逻辑:UART、CAN、SPI、LVDS

状态机:简单讲,就是不同状态做不同的事情。

线性序列机:

2、IP使用

简单的IP包括计数器、IO接口等等,复杂的包括FFT,各种软核CPU。

3、接口设计

Avalon ST(流接口)

Avalon MM(存储器映射)

FSMC(外部总线)

4、时序分析

包括时序分析和时序约束两部分。

6、片上系统

软核:SOPC,使用FPGA通用逻辑搭建CPU和外围设备电路。

Intel的NIOS II 软核CPU,时钟频率可到100MHZ。

Intel的硬核ARM Cortex-A9,时钟频率可到800~900MHZ,可运行Linux系统。Cortex-A53,更加像ARM处理器,FPGA作为一块功能电路。

Xilinx的MicroBlaze 软核CPU。

Xilinx的硬核PowerPC和ARM Cortex-A9。

猜你喜欢

转载自blog.csdn.net/weixin_38621214/article/details/85721698