FPGA(Field Programmable Gate Array,现场可编程门阵列)作为万能的硬件设计工具,是ASIC芯片设计、验证的重要工具之一。另外,在国防、通信等领域FPGA直接作为产品应用也很广泛。可以预期,在接下来的几十年内,社会对FPGA设计人才的需求都非常迫切。
然而,学习FPGA有相对较高的门槛,主要有如下几点:
- 与学习传统的软件设计相比,学习FPGA需要有较多的硬件相关知识;
- 软件设计的思维模式和硬件设计的思维模式不一样,有一个转换的过程;
- 一般的FPGA或Verilog,VHDL教程都预设了学习的前提条件是至少学习了数字电路设计等先修课程;
- 学习FPGA设计需要硬件开发板,价格不低。
这些条件将大多数有心投入该行业的同学挡在的大门之外。为此,本人将编写一系列0基础的FPGA相关教程,包括Verilog的学习教程,FPGA设计基础,FPGA设计案例分析等,希望能帮到大家,学习本教程不需要太多的硬件知识,用到的时候我会加以解释。如果有一点C语言的基础最好,没有也关系不大。
本篇是【0基础学会Verilog】的目录,以后会不断更新。
001. C语言函数到Verilog模块
本节将一个用C语言描述的简单算术运算函数(function)转换为用硬件描述语言Verilog描述的功能模块(module),以此为例帮助同学们初步认识FPGA设计的主要语言Verilog,熟悉相关语法,了解软件设计思维和硬件设计思维的不同之处。
002. Verilog时序逻辑实现C语言函数
本节用时序逻辑将同一个C语言函数转换为Verilog模块,并以此为例帮助同学们继续认识FPGA设计的主要语言Verilog,进一步了解组合逻辑和时序逻辑的不同之处。
003. 为Verilog模块编写测试模块testbench
本节讨论Verilog模块的仿真验证方法,也就是所谓testbench的编写方法, 并解释可综合模块和仿真模块的区别和联系。另外,用仿真图说明组合逻辑和时序逻辑的重要差别
004. Verilog模块的并行执行特性
本节用一个多输入多输出的例子讨论C语言的顺序执行特性和Verilog的并行执行特性,编写可综合代码及其testbench。
005. 学会看时序图
本节用一个简单的顺序执行运算为例,说明Verilog的时间特性,并初步了解。
006. 有限状态机–转换顺序结构
本节用一个有限状态机完成。
007. 有限状态机–转换顺序结构
本节用一个有限状态机完成。