




资源介绍
你的第一个数字电路 (英文课程中文字幕)
视频数量:21个
总时长:4小时39分
课程介绍:
Xilinx VIVADO FPGA开发入门:用VHDL设计你的第一个数字电路
刚开始接触FPGA的时候,很多人都会被各种工具和概念搞得晕头转向。VHDL语言怎么写、VIVADO软件怎么用、代码写好了怎么烧录到板子上、仿真又是怎么回事……这些问题一个接一个冒出来,让人不知道从哪下手。这门课就是来解决这些困惑的,它把FPGA开发从头到尾的完整流程都拆解清楚,带着你一步步动手做出来。
这门课总共有21个视频,将近五个小时的内容,涵盖了从软件安装到完整项目开发的全部环节。
课程首先会介绍VHDL语言的基本概念和语法。VHDL是一种硬件描述语言,跟我们平时学的C语言、Python这些编程语言不太一样,它的语法和设计思路都是为了描述数字电路的工作方式。课程会详细讲解VHDL的数据类型,包括标准库里的数据类型以及如何创建用户自定义的类型。运算符的使用方法也会讲到,这是写任何VHDL代码的基础。这部分内容虽然偏理论,但都是后面写代码必须掌握的东西。
学完基础语法之后,课程会手把手教你安装Xilinx VIVADO开发环境。VIVADO是Xilinx公司推出的FPGA设计工具,功能很强大,但安装过程对新手来说有点复杂。课程专门录制了详细的安装教程,演示如何下载软件、申请评估许可证、配置开发环境,确保你在开始写代码之前把开发环境搞定。
有了环境之后,课程立刻进入实战环节。第一个实验是做与非门的设计与实现。这个实验麻雀虽小,五脏俱全,你会在VIVADO里创建工程、编写VHDL代码、添加约束文件、进行综合和实现、最后生成比特流文件烧录到ZedBoard开发板上。看着自己写的代码真正在硬件上跑起来,那种成就感会让你对FPGA开发的整个流程有最直观的理解。
做硬件设计少不了仿真,课程的第二部分专门讲VHDL代码的仿真。仿真就是在不烧录到硬件的情况下,用软件模拟代码的运行效果,这样可以快速验证逻辑是否正确,不用反复烧录浪费时间。课程会介绍仿真的基本概念,然后用一个与非门的仿真实验演示具体的操作步骤,包括如何编写Testbench测试平台、如何设置仿真参数、如何观察仿真波形。
过了仿真这一关,接下来要学的是VHDL的条件语句。组合逻辑电路里经常要根据不同的输入条件产生不同的输出,这时候就要用到if语句和case语句。课程会讲清楚这两种语句的区别和使用场景,然后通过一个2-4译码器的设计实验来练习。译码器是很基础的组合电路,学完这个实验你对条件语句的理解会更扎实。
组合逻辑电路是FPGA设计的重要部分,课程的第四部分会系统地讲这方面的内容。从基本的门电路到加法器、比较器,这些组合电路的原理和VHDL实现方法都会讲到。半加器和全加器是这里面最典型的例子,课程会详细演示它们的设计过程。半加器可以把两个二进制位相加得到和与进位,全加器则多了一个来自低位的进位输入。这两个电路看似简单,却是构成复杂算术电路的基石。
学完半加器和全加器之后,课程紧接着安排了七段数码管显示驱动电路的设计。七段数码管是最常见的显示设备,要让它显示数字,需要把二进制数转换成对应的段选信号。课程会讲七段译码器的设计方法,以及如何用状态机来控制多位数码管的动态显示。这个实验涉及到时钟分频、多路复用等实用技术,对提升设计能力很有帮助。
VHDL支持三种不同的设计风格:行为描述、数据流描述和结构化描述。前面学的主要是行为描述和数据流描述,课程第五部分会重点讲结构化设计方法。结构化设计的思路是把大电路拆成小模块,每个小模块单独设计,然后在一个顶层文件里把这些模块连接起来。课程用全加器的设计来演示这个方法:全加器可以看成由两个半加器和一个或门组成,用结构化设计的方法来实现,代码结构会更清晰,也更容易复用和修改。
组合逻辑只能实现组合电路,实际应用中大量使用的是时序电路。课程第六部分开始讲时序逻辑设计,会介绍D触发器、移位寄存器、计数器这些基本单元的原理和实现。BCD计数器是这部分的综合实验,BCD就是用四位二进制表示一位十进制数,BCD计数器从0000数到1001,然后回到0000循环。课程会演示完整的代码设计和硬件实现过程,做完之后你对时序逻辑的理解会上一个台阶。
时序电路里还有一个非常重要的概念就是有限状态机,课程专门用一章来讲。有限状态机是描述复杂时序逻辑的利器,通信协议、数据处理、序列检测这些场景都离不开它。课程会系统介绍状态机的设计方法,然后通过一个序列检测器的设计实验来练习。序列检测器的功能是在一串输入数据里检测特定的序列,比如连续出现三个1就输出一个信号。这个实验能让你真正掌握状态机的设计思路和代码实现。
学到这里,基础内容基本都覆盖了,课程的最后一个部分安排了ALU算术逻辑单元的设计作为综合练习。ALU是CPU的核心部件,能执行加法、减法、与、或、非、移位等各种运算。课程会讲ALU的整体架构,然后分步骤实现一个8位ALU,涵盖各种运算功能的电路设计。最后还会扩展到N位ALU的设计,并且介绍华莱士树乘法算法,这种算法可以用更少的硬件资源实现高速乘法。通过这个综合项目,前面学到的组合逻辑、时序逻辑、结构化设计等知识都能串起来。
整个课程采用边学边练的方式,每个重要知识点都配有完整的实验。课程提供了所有实验的源代码文件,还有VHDL参考手册和设计规范文档可以查阅。虽然实验主要在ZedBoard上演示,但代码是通用的,在其他Xilinx开发板上也能跑。
这门课适合零基础想学FPGA开发的人,或者学过一些概念但不知道怎么上手实践的初学者。你会学到VHDL语法基础、VIVADO工具使用、组合逻辑和时序逻辑设计、状态机设计、完整项目开发流程。学完之后能够独立完成基本的数字电路设计,具备进一步学习复杂数字系统的基础。