数字设计FPGA应用
分享
课程详情
课程评价
spContent=以目前流行的Xilinx7系列FPGA的开发为主线,全面讲解FPGA的原理及电路设计、VerilogHDL语言及VIVADO,从组合、时序逻辑的开发开始深入到FPGA的基础应用、综合应用和进阶应用。课程目标为培养合格的硬件开发工程师。先有教材后有慕课,同步推出。服务团队为电子科技大学数字逻辑课程组和电子实验中心。
—— 课程团队
课程概述

1)课程简介

本课程以目前流行的Xilinx 7系列FPGA的开发为主线,全面讲解FPGA的原理及电路设计、Verilog HDL语言及VIVADO的应用,并循序渐进地从组合逻辑、时序逻辑的开发开始,深入到FPGA的基础应用、综合应用和进阶应用。

课程紧密结合数字电路课程,对数字电路的实现进行验证,并提供了数字设计开发的平台。课程的Verilog HDL语言部分和C语言比较类似,因此可以借用C语言的一些知识来快速学习Verilog HDL,但硬件设计和软件是不同的,对其区别性在本课程中会重点强调。

本课程具有理论和实践紧密结合的特点,在内容的设计上既重视基础理论知识的认知过程,又通过由易到难的19个实践逐步提高理论知识及培养开发能力。通过这门课程的学习,可以达到的FPGA开发初级水平。

配套MOOC课程,电子科技大学“数字逻辑设计及应用”,负责人姜书艳。本课程和该课程可同步学习或在该课程之后学习。

  (2)课程的4条主要线索:

第一条线索是工程, 19个由易到难循序渐进的工程实例分散在第三章开始到第七章。例如最简单的工程是多数表决器,就是第三章组合逻辑设计实践的第一个工程,非常适合入门,通过这个工程掌握开发的各个步骤,巩固HDL语言,因此是我的第一个工程。最后一章的工程是实现多通道电压表和简单的示波器,就需要大量的逻辑处理,调用前面工程实现的模块和IP,最后为了调试加入的VIVADO内置逻辑分析仪解决调试方面的问题,难度与一般的工程应用接轨。

第二条线索是工程Verilog HDL的学习。在第二章是关于Verilog HDL的基础内容,虽然精简但是包含了所有核心的内容。读者完全通过只学习本课程中Verilog HDL部分就能完成所有的基础的FPGA设计开发。对于在工作中遇到需要特殊解决的问题,可以通过百度等手段查找资料或参考其他书籍和文献。

第三条线索就是VIVADO的开发,包括了VIVADO安装、工程和文件的组织、综合实现及下载、管脚约束、仿真、电路查看、IP核的使用和设计、VIVADOXADCBRAM的开发、内置逻辑分析仪的使用等等。VIVADO的开发单先简单在第二章的最后部分描述,然后在后续章节的实践中进行的应用,逐步掌握VIVADO

第四条线索是数字电路的应用,因此第三章是组合逻辑设计,第四章是时序逻辑的设计。我认为数字电路是学习FPGA的基础,而通过FPGA实践能够真正掌握数字电路。 

3)课程章节内容:

第一章是FPGA的原理和电路设计,因此后续的开发需要知道管脚的分配,所以将电路设计放在最前面。

第二章是Verilog HDL以及VIVADO的简介。

第三章是组合逻辑设计,包含了我的第一个工程”--多数表决器。

第四章是时序逻辑,通过第四章的学习后,学生如果认真实践,对数电的理解和掌握会加强,对FPGA的开发也有点熟练了。

第五章的基本实践部分实现流水灯、数码管动态显示及VGA显示工程,将进一步提高开发和应用能力。

第六章的综合实践包括了两个设计与实现:电子秒表的设计与实现,串行异步通信的设计与实现。这一部分的学习将进一步提高综合设计应用能力。

第七章是进阶,原理部分的教学是7系列FPGA芯片的XADCBRAM,然后在这个基础上进一步掌握使用VIRILOG语言和IP核等技术进行模拟量采集及存储器访问的项目开发,并实现一个多通道电压表实例及一个示波器实例。

 

授课目标

1.掌握最新FPGA基本原理和电路设计,应用和巩固数字电路知识,学会并熟练使用VerilogHDL硬件描述语言,掌握在VIVADO环境下使用VerilogHDL进行Xilinx FPGA开发的方法,通过一系列的从简单到有一定难度的实验培养FPGA开发能力及综合工程实践能力。

2.培养合格的硬件开发工程师。

3.通过翻转课堂,培养沟通和团队合作能力。

课程大纲

每周3-4学时,共16周


第一章 FPGA基础及电路设计(3-6学时)


第1周 FPGA基础及电路设计   

1.1 FPGA基础及7系列FPGA基本原理

1.1.1 FPGA概述

1.1.2 FPGA基本逻辑结构

1.1.3  7系列FPGA CLB和IOB

1.1.4  7系列FPGA 的IOB

1.1.5  7系列FPGA及7a35tftg256-1特性

1.2 FPGA电路设计

1.2.1 FPGA的BANK电路

1.2.2 LED驱动电路

1.2.3 拨码开关电路

1.2.4 按键电路

1.2.5 七段数码管驱动电路

1.2.6 VGA显示驱动电路

1.2.7 RS-232驱动电路

1.2.8 配置电路

1.2.9 XADC接口和扩展接口

作业1

第二章 Verilog HDL语言与VIVADO(6-8学时)


第2周 Verilog HDL语言与VIVADO (1基本结构、数据类型和运算符)

2.1 Verilog HDL基本结构

2.1.1 一个简单的组合逻辑实例

2.1.2 一个简单的时序逻辑实例

2.1.3 Verilog HDL结构要求

2.2 数据类型及变量、常量

2.2.1 逻辑值和常量

2.2.2 线网型wire

2.2.3 寄存器类型reg

2.2.4 符号常量

2.2.5 存储器型变量

2.3 运算符

2.3.1 算术运算符

2.3.2 逻辑运算符

2.3.3 按位运算符

2.3.4 关系运算符

2.3.5 等式运算符

2.3.6 缩减运算符

2.3.7 移位运算符

2.3.8 条件运算符和拼接运算符

2.3.9 运算符的优先级 

第3周 Verilog HDL语言与VIVADO (2) 语句和VIVAO初步

2.4 语句

2.4.1 赋值语句、结构说明语句、阻塞与非阻塞

2.4.2 条件语句

2.4.3 循环语句

2.5 VIVADO初步

2.5.1 VIVADO获取和安装

2.5.2 VIVADO主界面

作业2

第三章 组合逻辑电路与VIVADO进阶(6-8学时)


第4周 组合逻辑电路与VIVADO进阶

3.1 我的第一个工程—多数表决器

3.1.1多数表决器的分析和逻辑实现

3.1.2多数表决器的工程创建

3.1.3多数表决器的Verilog HDL源文件创建

3.1.4多数表决器的Verilog HDL代码实现及RTL分析

3.1.5综合

3.1.6约束

3.1.7实现

3.2 3-8译码器设计和IP核

3.2.1 译码器的实现

3.2.2 译码器IP核生成

3.3 调用IP核实现多数表决器

3.3.1 使用74x138实现多数表决器的设计

3.3.2 构建新工程并调用IP核

 

第5周 组合逻辑电路实践

课程设计1(作业3) 设计151IP核,使用151IP核实现4变量逻辑函数

 

第四章时序逻辑电路FPGA实现(6-8学时)


 

第6周 时序逻辑电路FPGA实现1

4.1 时钟同步状态机的设计

4.1.1时钟同步状态机及其设计流程

4.1.2时钟同步状态机设计方法构建序列发生器

4.1.2 状态图直接描述法实现序列发生器

第7周 时序逻辑电路FPGA实现2

4.2 同步计数器74x163的实现

4.3 移位寄存器的实现和应用

4.3.1  74x194的实现

4.3.2 使用74x194IP核实现11001序列发生器

作业4

 

第五章FPGA基本实践(9-12学时)


 

第8周 FPGA基本实践1

5.1 流水灯实践

5.1.1流程灯的关键设计

5.1.2流程灯工程的VIVADO实现

5.2 数码管动态显示实践

5.2.1数码管动态显示原理分析

5.2.2数码管动态显示设计

5.2.3数码管动态显示工程的VIVADO实现

5.2.4数码管动态显示IP核设计与实现

5.2.5调用IP核实现动态显示

第9周 FPGA基本实践的课程设计

课程设计2(作业5) 设计和实现根据拨码开关输入,修改刷新频率的数码管动态显示IP核,并将拨码开关位置信息显示在数码管上

第10周 5.3 VGA显示的实现

5.3.1VGA显示基本原理

5.3.2VGA显示设计与实现

作业6

第六章FPGA综合实践(6-8学时)


 

第11周 FPGA综合实践

6.1 电子秒表的设计与实现

6.1.1按键消抖

6.1.2秒表综合设计

第12周6.2 UART串行接口设计及通信实现

6.2.1异步串行接口原理分析

6.2.2波特率及其他时钟信号发生模块设计

6.2.3串行发送程序设计

6.2.4串行接收程序设计

6.2.5串行通信顶层程序设计

6.2.6串行通信功能测试

作业7

第七章FPGA进阶—XADC、BRAM原理及电压表、示波器设计(12-16学时)


 

第13周 第7章FPGA进阶—XADC、BRAM原理及电压表设计

7.1 XADC基本结构及寄存器

7.1.1XADC逻辑结构

7.1.2  XADC对外连接说明

7.1.3 XADC状态寄存器和控制寄存器

第14周7.2 应用XADC实现多路电压采集及显示

7.2.1生成XADC IP核实例

7.2.2使用XADC IP核实现XADC序列模式访问模块

7.2.3 AD序列采集和显示实现

7.2.4序列采集及显示测试

第15周7.3 应用XADC及BRAM实现多通道示波器

7.3.1块存储器BRAM原理

7.3.2块内存生成IP的使用和仿真验证

7.3.3多通道示波器的设计思路

7.3.4显示内存设计及其访问模块构建及仿真

7.3.5波形发生器模块设计及仿真

7.3.6 VGA显示驱动模块设计及仿真 

16周  综合课程设计

课程设计3(作业8):采集多路电压并通过串口发送到电脑串口调试助手


预备知识

电路分析基础、数字逻辑设计及应用

证书要求

本课程的学习环节包含:观看讲课视频、完成课后作业、完成单元测验题、参与课程讨论、参加期末考试。 

课程学习成绩由三个部分构成:

(1)课后作业和单元测验,占课程成绩的30%。

(2)参与课程讨论占课程成绩的10%。 

(3)课程结束后,学生参加课程的最后考试,成绩占60%。

 完成课程学习并考核合格(>=60分)的可获得合格证书,成绩优秀(>=85分)的可获得优秀证书。


参考资料

教材:“Xilinx FPGA原理与实践—基于VIVADOVerilog HDL”,机械工业出版社2018年第1版 卢有亮编著 

参考资料:

1.     数字设计原理与实践(第4版影印版),John F. Wakerly,高等教育出版社  2007

2.         数字逻辑设计及应用,姜书艳主编,电子科技大学出版社,2014

3.         数字逻辑设计及应用,姜书艳主编,清华大学出版社,2007


常见问题

Q :  是否必须有实验板 A :  不是必须,可以进行仿真。但请下载VIVADO,并起码做仿真实验,如果有实验板就可以进行下载实践。  

Q :  这门课程需要C语言基础吗A :  不需要,如果有C语言基础学Verilog HDL会快些,但不是必须

Q :  VIVADO在哪里下载A :  可以在官网下载,或者在资料中提供下载地址

Q :  课程一开始应注意什么?A :  应尽快在前2周完成VIVADO的下载及安装。

Q :  课程是否有配套的教材 ?A :  建议购买配套教材,“Xilinx FPGA原理与实践—基于VIVADOVerilog HDL”,机械工业出版社2018年第一版 卢有亮编著

Q :  学好这个课程是否能保证找到理想的工作 A :  应该会有效提高就业的档次和选择面。

Q :  我是如材料、物理等专业的,不是计算机或自动化等,是否应该学这门课程 A :  电子相关专业都应该学习这门课程,FPGA应用现在已经无处不在。如果你的专业课有数电课程,就非常有必要同步或在数电之后学习这么课程。