基本信息

内容简介
目录
第1章 数字电路基础1
1.1 模拟电路与数字电路1
1.2 二进制相关知识3
1.2.1 二进制和其他进制3
1.2.2 进制间的相互转换4
1.2.3 二进制的四则运算5
1.3 二进制在电路中的表达6
1.3.1 有限字长和补码6
1.3.2 负数、有符号数和无符号数6
1.4 门电路和基本逻辑运算10
1.4.1 非门、与门和或门11
1.4.2 与非门和或非门12
1.4.3 异或门和同或门12
1.4.4 三种表达形式的转换13
1.4.5 基本门的电路实现14
1.4.6 三态输出和漏极开路输出15
1.4.7 波形图17
1.4.8 门电路的一些非典型应用18
1.5 逻辑代数22
前言
即使是MCU或MPU能够胜任的工作,若使用FPGA来完成,你可以肆意挥洒自己的创意,构建符合自己习惯的逻辑接口和功能,创造符合特殊要求的功能模块和处理器外设,而不必像使用通用MCU或MPU那样,需要学习为了功能通用而设置的纷繁复杂的接口、控制寄存器或API函数。当然,一切的前提是项目成本不敏感,并且你具备深厚的FPGA开发功力——这比MCU或MPU开发要难很多。
但终端产品领域是FPGA尚无法触及的,主要限制是成本、功耗和开发难度。在成本和功耗上,FPGA灵活的本质决定了它无法与MCU或MPU抗衡,同时终端产品往往出货量也很大,因而在高带宽或特殊定制逻辑方面,也可以由ASIC胜任——ASIC在量大时成本极低。
而开发难度大则源于多个方面。在理论方面,想要学好FPGA,甚至说想要入门FPGA,都必须掌握扎实的数字逻辑基础知识。在语言方面,用于FPGA开发的硬件描述语言(HDL)描述的数字逻辑电路是并行的,与人类思维的串行性(即一步一步的思考)不符,而MCU等开发使用的程序语言则符合人类思维的串行性,相对易于入门和掌握。依笔者浅见,“程序”一词含有“依序执行的过程”之意,与可综合的硬件描述语言的并行性不符,因而本书尽量避免使用“程序”一词指代可综合的硬件描述语言代码。
开发困难还源于FPGA技术近年来的快速发展和FPGA相关教育的滞后。
笔者自六年前开始面向华中科技大学启明学院电工电子科技创新中心(以下简称“创新中心”)的学生开设与FPGA应用相关的选修课,并为他们设计开发板,无论课程内容还是开发板,每年都可能会变动以跟进新的技术发展。
创新中心的学生主要来自全校各电类相关院系,并经过严格的考核选入,都是理论成绩和实践能力兼优并对电子技术有着浓厚兴趣的学生。即便如此,笔者依然感受到FPGA应用教学的困难,特别是在引导和帮助他们使用FPGA实现具备一定难度和深度的功能的时候,或者在实现一个完备的电子电路系统,比如将FPGA用作大学生电子设计竞赛作品主控或者各类研究、双创项目的主要实现平台的时候。
笔者以为,FPGA应用教学的困难直接反映了数字电路应用教学的困难,这与传统数字电路课程设置不无关系。在电子技术子领域日趋细分、国内大学电类专业日趋细分的当代,侧重数字电路应用的专业(如通信、电气、自动化等)仍然在深入学习SR锁存器的电路构成,深入学习如何用74系列IC设计异步时序逻辑电路。笔者并不认为这些不重要,但以为这些应该是侧重数字电路理论的专业(如电子、电信等)才需要深入学习的内容,毕竟侧重数字电路应用的专业的学生以后一般不需要设计IC;不需要在数字逻辑电路中做晶体管级的优化;也不需要为少数关键路径而动用异步逻辑、锁存器逻辑。相应地,在侧重数字电路应用的专业中,现代数字电路应用中的同步时序逻辑内容并没有提升到应有的地位,与之相关的时钟概念和知识、常用的时序逻辑功能单元、基础的时序分析概念和知识也是比较缺失的。
在本书中,笔者提炼和扩展了传统数字电路课程中与FPGA应用相关的部分,形成了本书的第1章,便于读者快速强化FPGA应用设计所需的数字电路基础知识,尚未学习数字电路课程的低年级读者也可以通过学习第1章来入门数字电路基础。
第2章则是SystemVerilog(IEEE 1800—2012)简明语法讲解,主要侧重可综合(即可以在FPGA中实现)的语法,最新的IEEE 1800—2012标准较早期版本引入了不少“漂亮”的语法元素,让笔者急切地想与读者分享,后果是少数理应可综合的语法在目前主流开发工具中尚不支持,或许它们还需要一点时间来跟进,遇到这些特例,书中均会给出解决方法。
第3章是使用ModelSim进行Verilog功能仿真的简单教程。
第4章是Verilog的基本应用,这一章主要介绍各种数字逻辑基本功能单元的描述,并着重介绍了时钟、使能的概念和跨时钟域处理。从这一章起,我们正式开始了FPGA应用设计之旅。
第5章介绍IO规范,首先通识性地介绍了IO连接的常识和常见电平规范,而后以四种常见外部逻辑接口规范为例,介绍了通用接口逻辑的设计和实现。希望读者能在学习过程中领会到此类设计的一般思路和处理方法。
第6章介绍片上系统的内部互连。片上系统(SoC)结合了通用处理器和FPGA逻辑的优势,实现了软硬件协同设计,是当下FPGA应用技术的热门。而要充分利用SoC的优势,发挥软硬件协同的潜力,处理器系统与FPGA逻辑的高速互连至关重要。此章从一种简单的互连接口入手,逐步过渡到目前应用最为广泛的AXI互连协议。
第7章介绍Verilog在数字信号处理中的基本应用,主要介绍了一些基础数字信号处理算法的实现,包括频率合成、FIR和IIR滤波器、采样率变换、傅里叶变换和常见于数字控制系统的PID控制器。
第8章介绍Verilog在数字通信中的基本应用,主要介绍了基带编解码、各类基础调制解调的实现。
这些章节的依赖关系如下图所示。
本书侧重Verilog在FPGA中的应用基础,对于特定FPGA芯片、特定开发工具、特定外部连接和具体系统案例,请关注即将出版的本书的姊妹篇。
本书特别注重理论与工程实现的结合,以实现为主,以相关理论的结论为指导,读者应着重理解理论与实现的对应关系,注意培养将理论转换为工程实现的能力。
本书中的代码均为可综合代码,均是从笔者多年教学和工程实践中实际应用过的代码中提炼而来的,具备极高的实践参考价值,并大量采用参数化设计方法,大量采用生成块和常量表达式/函数,具备极高的可重用性。书中不可综合的代码只有:明确说明为测试平台;明确说明有些开发工具尚不支持的某些新语法,但一般会给出修改方法。