废话不说了,下面进入正题,学习FPGA经历了这么几个阶段:①、Verilog语言的学习,熟悉Verilog语言的各种语法。
②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。
③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosIIIDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosIIC语言程序,调试板子各模块功能。
先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。
像systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。
鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。
其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。
这里推荐几本评价比较好的学习Verilog的书籍:①、《verilog数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。
但本书对于资源优化方面的编程没有多少涉及到。
②、《设计与验证VerilogHDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。
学习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的调试,逻辑分析仪是至关重要的。
利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。
这个时候我主要看的数据有这几本感觉比较好:①、《AlteraFPGA/CPLD设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法(IP,RTL,SignalProbe,SignalTapII,TimingClosureFloorplan,chipEditor等),对于入门非常好。
②、《AlteraFPGA/CPLD设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。
③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
2025/11/11 0:01:05 131.03MB FPGA 学习 文档 合集
1
基于ALTERA公司的CycloneII系列的EP2C35F672C6编写的数字钟程序,绝对原创。
其中包含调试过程中遇到的错误,以及错误解决方法记录和心得体会。
2025/10/19 16:37:55 1.94MB FPGA,数字钟,定时,报警,清零
1
代码为基于Altera之CycloneII的应用,用于TFT-LCD显示的时序verilog语言代码,代码已经验证OK。
2025/10/10 14:28:16 12KB TFT-LCD显示
1
基于FIR数字滤波器的原理和层次化、模块化设计思想,结合Altera公司的CycloneII系列FPGA芯片,提出了FIR数字滤波器的实现硬件方案,给出了采用Matlab、QuartusⅡ设计及实现32阶低通FIR滤波器的方法步骤,仿真及实际测试结果验证了设计方案的正确性,与传统的数字滤波器相比,本文设计的FIR数字滤波器具有更好的实时性、灵活性和实用性。
2025/2/4 2:07:28 1.27MB Matlab FPGA FIR 数字滤波器
1
这是我用Matlab的HDLCoder工具,然后结合Altera的CycloneII芯片FPGA视频图像开发平台仿真调试,这是最终版的源代码。
为省去大家纠结的痛苦,请注意:pixelin是像素输入;
x_in,y_in分别是像素点坐标位置;
clkenble是时钟使能;
width,height分别是图像的宽和高;
pixelout是输入像素点对应的均衡化因子,用它*255/(width*height)就是均衡化后的像素值;
2024/11/21 11:49:43 16KB FPGA图像处理 verilog HDL直方图
1
本设计是基于DE2开发板,以Altera的CycloneII系列的FPGA为主控制器,配上SDRAM和FLASH,使用SOPC技术,构成一个简单的SOPC系统,用于控制SD卡,TFT液晶显示屏,VS1003音频播放模块等,实现自制的简单音乐播放系统。
在设计中FPGA通过分别调用Altera库中的IP核来控制Flash和SDRAM,通过模拟的SPI总线来分别控制SD卡,TFT模块,VS1003模块。
能实现将SD卡中的MP3格式的音乐交由VS1003模块解码播放,BMP格式的图片交由TFT模块显示。
2024/8/18 10:34:13 981KB SOPC VS1003 TFT SD卡
1
这个是在QuartusII平台上用VerilogHDL语言写的七人表决器工程,用的是文本输入方式。
芯片选的是用的CycloneII:EP2C35F484I8芯片。
其中双击.qpf文件可直接打开此工程;
双击.v文件可打开此程序源码;
双击.vwf可打开此工程的仿真文件,可以直接仿真结果。
2024/1/24 0:09:26 280KB Verilog HDL Quartus II
1
基于alter公司cycloneII开发平台下的VHDL编程,实现了七人表决的功能,七个按键分别对应七个人,当有人同意时,按键按下,置“1”,当有人不同意时按键挑起,置“0”,同时LED灯会随着对应的按键按下变亮或者熄灭,当同意认输超过3人时第一个LED灯点亮,表示表决通过,同时数码管一直会显示出同意的人数。
2023/11/28 7:42:19 335KB vhdl语言开发
1
本代码是基于基于cycloneII的八位数码管动态显示,输入接口可扩展,例如可直接用于电子时钟的设计。
清晰明了的数码管动态扫描显示方式的模块化代码编写,让你轻松驱动数码管。
下载后请将里面的文件拷贝出来再打开,因为路径不能有中文。
2023/7/4 16:27:33 515KB FPGA数码管
1
硬件语言Verilog写的AD9851调试代码,基于CycloneII代板写运行的,外面有调试残缺的工程,亲测可用。
2023/4/16 2:52:29 5.69MB AD9851
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡