废话不说了,下面进入正题,学习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
简介:
【vivado 蜂鸣器】项目是一个利用Vivado设计工具实现的电子音乐播放器,特别地,它被编程来播放特定的曲目。
Vivado是Xilinx公司提供的一个综合性的硬件描述语言(HDL)开发平台,主要用于FPGA(Field-Programmable Gate Array)和SoC(System on Chip)的设计与实现。
在这个项目中,开发者使用Vivado创建了一个能够发出音频信号的蜂鸣器模块,这个模块可以嵌入到其他游戏或应用中作为声音源。
我们需要了解FPGA的基本概念。
FPGA是一种可编程逻辑器件,它的内部包含大量的可配置逻辑块和输入/输出单元,允许用户根据需求自定义电路结构。
Vivado提供了完整的流程,包括设计输入、逻辑综合、布局布线以及硬件调试等,使得开发者可以方便地在FPGA上实现复杂的数字系统。
在本项目中,蜂鸣器模块可能基于PWM(Pulse Width Modulation)技术实现。
PWM通过调节脉冲宽度来模拟不同频率的声音,以此来生成音调。
开发者可能编写了Verilog或VHDL代码,定义了一个计数器和比较器,通过改变脉冲宽度来控制蜂鸣器的频率,进而播放出不同的音符。
项目中提到的"带有脑中的数字时钟"可能是指一个额外的模块,用于显示时间。
这个模块可能包括一个时钟发生器、计数器和七段数码管驱动逻辑,用于在硬件平台上实时显示当前时间。
"vivado"表明项目的核心是使用Vivado进行设计。
Vivado提供了一整套的工具链,包括IP Integrator用于集成预先封装好的IP核,比如PLL(Phase-Locked Loop)用于产生时钟,或者AXI总线接口用于与其他模块通信。
此外,还有仿真工具用于验证设计的功能正确性,如ISim或ModelSim。
【压缩包子文件的文件名称列表】中,我们可以看到以下几个关键文件夹:- `bell.xpr`:这是Vivado工程文件,包含了项目的配置信息和所有源文件的引用。
- `bell.cache`:缓存文件夹,存储了设计过程中产生的中间数据,如综合报告、布局布线结果等。
- `bell.srcs`:源代码文件夹,可能包含了.v或.vhd文件,即Verilog或VHDL源代码。
- `bell.hw`:硬件平台配置文件,定义了目标FPGA的管脚分配和设备配置。
- `bell.sim`:仿真相关文件,用于在软件中验证设计的正确性。
- `bell.ip_user_files`:用户自定义IP核的文件夹,可能包含了蜂鸣器和数字时钟的自定义IP。
- `bell.runs`:运行配置文件,记录了每个设计步骤的设置和结果。
这个项目展示了如何使用Vivado设计一个能在FPGA上运行的音频播放模块,以及如何将此模块与其他硬件组件(如数字时钟)集成在一起。
通过学习这个项目,开发者可以了解到FPGA开发的基本流程,以及如何利用Vivado进行数字系统设计和硬件编程。
2025/6/15 19:57:33 102KB
1
通过对硬件编程,将图形、文字、动画存储在E2PROM中,通过计数器控制图形、文字、动画的地址,在利用显示矩阵显示出来。
系统所显示的内容可反复循环,直至手动或加压清零,便可回到初始地址。
2024/4/26 22:12:46 400KB 可编程彩灯控制器
1
这个手册将向你引见使用NC-Verilogsimulator和SimVision。
本文使用的是一个用Veilog硬件编程语言编写的一个饮料分配机,通过这个例子你将学会nc-verilog的基本使用方法
2015/9/24 9:51:06 1.09MB nc-verilog 应用学习
1
quartusII下VHDL语言音乐播放器的硬件编程实现,可选择3首音乐中的一首播放,可暂停,是EDA实验的必备材料。
2015/6/26 10:31:26 539KB VHDL 音乐播放器 EDA quartusII
1
在实时多任务系统中,定时器的喂狗不能在像硬件编程那样在循环中喂狗。
ucos系统中,多个任务就像把程序划分成了多个main()。
喂狗也不像无系统程序那么简单,不合理的喂狗无法达到实际保护效果,附件工程是一个简单的示范历程,供大家一同学习参考,也是抛砖引玉。
2022/9/3 22:26:57 6.74MB STM32 ucos 看门狗
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡