回想起自己学 FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,
设计开发板,调电路,练习各种 FPGA 实例,到最后能独立完成项目,一路走
来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对
初学者有所帮助。
废话不说了,下面进入正题,学习 FPGA 我主要经历了这么几个阶段:
①、Verilog 语言的学习,熟悉 Verilog 语言的各种语法。
②、FPGA 的学习,熟悉 QuartusII 软件的各种功能,各种逻辑算法设计,
接口模块(RS232,LCD,VGA,SPI,I2c 等)的设计,时序分析,硬件优化等,自
己开始设计简单的 FPGA 板子。
③、NiosII 的学习,熟悉 NiosII 的开发流程,熟悉开发软件(SOPC,NiosII
IDE),了解 NiosII 的基本结构,设计 NiosII 开发板,编写 NiosII C 语言程序,
调试板子各模块功能。
先来说说第一个阶段,现在主要的硬件描述语言有 VHDL,Verilog 两种,
在本科时老师一般教 VHDL,不过现在
Verilog 用的人越来越多,其更容易上手(与 C 语言语法比较类似),也更灵
活,现在的 IC 设计基本都用 Verilog。像 systemC,systemVerilog 之类的
应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了 Verilog
作为我学习的硬件描述语 言。
其实有 C 语言的基础,学起 Verilog 的语言很简单,关键要有并行的概念,
所有的 module,assign,always 都是并行的,这一点与软件语言有明显不
同。这里推荐几本评价比较好的学习 Verilog 的书籍:
①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通
俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编
程没有多少涉及到。
②、《设计与验证 Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲
解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。
学习 Verilog 其实不用看很多书,基本的语法部分大家都一样,关键是要
自己会灵活应用,多做练习。
Verilog 语言学了一段时间,感觉自己可以编点东西,希望自己编的程序
在板子上运行看看结果,下面就介绍我学习的第二个阶段。
刚开始我拿了实验室一块 CPLD 的开发板做练习,熟悉 QuartusII 的各种
功能,比如 IP 的调用,各种约束设置,时序分析,Logiclock 设计方 法等,不
过做到后面发现 CPLD 的资源不太够(没有内嵌的 RAM、不能用
SignalTapII,LE 太少等),而实验室没有 FPGA 开发板,所以就萌生 了自己
做 FPGA 开发板的意图,刚好 Cadence 我也学的差不多了,就花了几天时间
主要研究了 FPGA 配置电路的设计,在板子上做了 Jtag 和 AS 下载 口,在做了
几个用户按键和 LED,其他的口全部引出作为 IO 口,电路比较简单,板子焊
好后一调就通了(心里那个爽啊...)。我选的 FPGA 是 cycloneII 系列的
EP2C5,资源比以前的 FPGA 多了好几倍,还有 PLL,内嵌的 RAM,可以试试
SignalTapII,用内嵌的逻辑分析仪 测试引脚波形,对于 FPGA 的调试,逻辑
评论0