㈠ FPGA现在学起来怎么样难不需要了解哪些基础课程
FPGA学习重点
1. 看代码,建模型
只有在脑海中建立了一个个逻运祥模辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。2. 用数学思维来简化设计逻辑
学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分宴者Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y,则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。3. 时钟与触发器的关系
“时钟是时序电路的控制者”这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。
时序逻辑电路的时钟是控制时序逻辑电路旁缓状态转换的“发动机”,没有它时序逻辑电路就不能正常工作。因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿,由此可见时钟在时序电路中的核心作用。最后简单说一下体会吧,归结起来就是多实践、多思考、多问。实践出真知,看100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。为什么你会觉得FPGA难学?
1. 不熟悉FPGA的内部结构
FPGA为什么是可以编程的?恐怕很多初学者不知道,他们也不想知道。因为他们觉得这是无关紧要的。他们潜意识的认为可编程嘛,肯定就是像写软件一样啦。软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C语言或者其它软件编程语言一样。一条条的读,一条条的分析。
拒绝去了解为什么FPGA是可以编程的,不去了解FPGA的内部结构,要想学会FPGA 恐怕是天方夜谭。那么FPGA为什么是可以“编程”的呢?首先来了解一下什么叫“程”。其实 “程”只不过是一堆具有一定含义的01编码而已。编程,其实就是编写这些01编码。只不过我们现在有了很多开发工具运算或者是其它操作。所以软件是一条一条的,通常都不是直接编写这些01编码,而是以高级语言的形式来编写,最后由开发工具转换为这种01编码而已。对于软件编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种控制信号,然后控制其内部的电路完成一个个的读,因为软件的操作是一步一步完成的。
而FPGA的可编程,本质也是依靠这些01编码实现其功能的改变,但不同的是FPGA之所以可以完成不同的功能,不是依靠像软件那样将01编码翻译出来再去控制一个运算电路,FPGA里面没有这些东西。FPGA内部主要三块:可编程的逻辑单元、可编程的连线和可编程的IO模块。
可编程的逻辑单元
其基本结构某种存储器(SRAM、 FLASH等)制成的4输入或6输入1输出的“真值表”加上一个D触发器构成。任何一个4输入1输出组合逻辑电路,都有一张对应的“真值表”,同样的如果用这么一个存储器制成的4输入1输出的“真值表”,只需要修改其“真值表”内部值就可以等效出任意4输入1输出的组合逻辑,这些“真值表”内部值就是那些01编码。
如果要实现时序逻辑电路怎么办?任何的时序逻辑都可以转换为组合逻辑+D触发器来完成。但这毕竟只实现了4输入1输出的逻辑电路而已,通常逻辑电路的规模那是相当的大。可编程连线
那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有很多用存储器控制的链接点,通过改写对应存储器的值就可以确定哪些线是连上的而哪些线是断开的。这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。
可编程的IO
任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置。
总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。不了解FPGA内部结构,就不能明白最终代码如何变到FPGA里面去的,也就无法深入的了解如何能够充分运用FPGA。现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。
2. 错误理解HDL语言,怎么看都看不出硬件结构
HDL语言的英语全称是:Hardware Deion Language,注意这个单词Deion,而不是Design。老外为什么要用Deion这个词而不是Design呢?因为HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。
描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已,只是将以后的电路用文本的形式描述出来而已。而在编写语言之前,硬件电路应该已经被设计出来了。语言只不过是将这种设计转化为文字表达形式而已。
硬件设计也是有不同的抽象层次,每一个层次都需要设计。最高的抽象层次为算法级、然后依次是体系结构级、寄存器传输级、门级、物理版图级。
使用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式,剩下的向更低层次的转换就可以让EDA工具去做了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工具理解并转化为底层的门级电路或其他结构的电路。在FPGA设计中,就是在将这以抽象层级的意见描述成HDL语言,就可以通过FPGA开发软件转化为上一点中所述的FPGA内部逻辑功能实现形式。HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,所以HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的不可综合。
所以在阅读或编写HDL语言,尤其是可综合的HDL,不应该看到的是语言本身,而是要看到语言背后所对应的硬件电路结构。3. FPGA本身不算什么,一切皆在FPGA之外
FPGA是给谁用的?很多学校是为给学微电子专业或者集成电路设计专业的学生用的,其实这不过是很多学校受资金限制,买不起专业的集成电路设计工具而用FPGA工具替代而已。其实FPGA是给设计电子系统的工程师使用的。这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。前面说了,FPGA里面无法就是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑如何将这些以后资源组合起来实现一定的逻辑功能而已,而不必像IC设计工程师那样一直要关注到最后芯片是不是能够被制造出来。
本质上和利用现有芯片组合成不同的电子系统没有区别,只是需要关注更底层的资源而已。要想把FPGA用起来还是简单的,因为无非就是那些资源,在理解了前面两点再搞个实验板,跑跑实验,做点简单的东西是可以的。而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功能才能满足系统的需要,那就需要懂得更多更广泛的知识。4. 数字逻辑知识是根本
无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。
如果不能将数字逻辑知识烂熟于心,养成良好的设计习惯,学FPGA到最后仍然是雾里看花水中望月,始终是一场空的。以上四条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。荐读
1. 入门首先要掌握HDL(HDL=verilog+VHDL)
第一句话是:还没学数电的先学数电。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。接下来,首先找本实例抄代码。抄代码的意义在于熟悉语法规则和编译器(这里的编译器是硅编译器又叫综合器,常用的编译器有:Quartus、ISE、Vivado、Design Compiler 、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿着写,最后不看书也能写出来。编译完代码,就打开RTL图,看一下综合出来是什么样的电路。HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《什么是硬件以及什么是软件》。在这一阶段,推荐的教材是《Verilog传奇》、《Verilog HDL高级数字设计》或者是《用于逻辑综合的VHDL》。不看书也能写出个三段式状态机就可以进入下一阶段了。此外,你手上必须准备Verilog或者VHDL的官方文档,《verilog_IEEE官方标准手册-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些语法问题的时候能查一下。2. 独立完成中小规模的数字电路设计
现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是夏老《Verilog 数字系统设计教程》(第三版)。在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。这里你需要一块开发板,可以选Altera的cyclone IV系列,或者Xilinx的Spantan 6。
还没掌握HDL之前千万不要买开发板,因为你买回来也没用。这里你没必要每次编译通过就下载代码,咱们用modelsim仿真(此外还有QuestaSim、NC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通过那就不用下载了,肯定不行的。在这里先掌握简单的testbench就可以了。推荐的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。3. 掌握设计方法和设计原则
你可能发现你综合出来的电路尽管没错,但有很多警告。这个时候,你得学会同步设计原则、优化电路,是速度优先还是面积优先,时钟树应该怎样设计,怎样同步两个异频时钟等等。
推荐的教材是《FPGA权威指南》、《IP核芯志-数字逻辑设计思想》、《Altera FPGA/CPLD设计》第二版的基础篇和高级篇两本。学会加快编译速度(增量式编译、LogicLock),静态时序分析(timequest),嵌入式逻辑分析仪(signaltap)就算是通关了。如果有不懂的地方可以暂时跳过,因为这部分还需要足量的实践,才能有较深刻的理解。4. 学会提高开发效率
因为Quartus和ISE的编辑器功能太弱,影响了开发效率。所以建议使用Sublime text编辑器中代码片段的功能,以减少重复性劳动。Modelsim也是常用的仿真工具,学会TCL/TK以编写适合自己的DO文件,使得仿真变得自动化,推荐的教材是《TCL/TK入门经典》。
你可能会手动备份代码,但是专业人士都是用版本控制器的,所以,为了提高工作效率,必须掌握GIT。文件比较器Beyond Compare也是个比较常用的工具。此外,你也可以使用System Verilog来替代testbench,这样效率会更高一些。如果你是做IC验证的,就必须掌握System Verilog和验证方法学(UVM)。推荐的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012语法手册》。掌握了TCL/TK之后,可以学习虚拟Jtag(ISE也有类似的工具)制作属于自己的调试工具,此外,有时间的话,最好再学个python。脚本,意味着一劳永逸。5. 增强理论基础
这个时候,你已经会使用FPGA了,但是还有很多事情做不了(比如,FIR滤波器、PID算法、OFDM等),因为理论没学好。我大概地分几个方向供大家参考,后面跟的是要掌握的理论课。信号处理 —— 信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理
接口应用 —— 如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太网接口)、SATA、光纤、DisplayPort
无线通信 —— 信号与系统、数字信号处理、通信原理、移动通信基础、随机过程、信息论与编码
CPU设计 —— 计算机组成原理、单片机、计算机体系结构、编译原理
仪器仪表 —— 模拟电子技术、高频电子线路、电子测量技术、智能仪器原理及应用
控制系统 —— 自动控制原理、现代控制理论、过程控制工程、模糊控制器理论与应用
压缩、编码、加密 —— 数论、抽象代数、现代编码技术、信息论与编码、数据压缩导论、应用密码学、音频信息处理技术、数字视频编码技术原理现在你发现,原来FPGA会涉及到那么多知识,你可以选一个感兴趣的方向,但是工作中很有可能用到其中几个方向的知识,所以理论还是学得越多越好。如果你要更上一层,数学和英语是不可避免的。6. 学会使用MATLAB仿真
设计FPGA算法的时候,多多少少都会用到MATLAB,比如CRC的系数矩阵、数字滤波器系数、各种表格和文本处理等。此外,MATLAB还能用于调试HDL(用MATLAB的计算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。推荐的教材是《MATLAB宝典》和杜勇的《数字滤波器的MATLAB与FPGA实现》。7. 图像处理
Photoshop
花一、两周的时间学习PS,对图像处理有个大概的了解,知道各种图片格式、直方图、色相、通道、滤镜、拼接等基本概念,并能使用它。这部分是0基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。推荐《Photoshop CS6完全自学教程》。基于MATLAB或OpenCV的图像处理
有C/C++基础的可以学习OpenCV,否则的话,建议学MATLAB。这个阶段下,只要学会简单的调用函数即可,暂时不用深究实现的细节。推荐《数字图像处理matlab版》、《学习OpenCV》。图像处理的基础理论
这部分的理论是需要高数、复变、线性代数、信号与系统、数字信号处理等基础,基础不好的话,建议先补补基础再来。看不懂的理论也可以暂时先放下,或许学到后面就自然而然地开窍了。推荐《数字图像处理》。基于FPGA的图像处理
把前面学到的理论运用到FPGA上面,如果这时你有前面第七个阶段的水平,你将轻松地独立完成图像算法设计(图像处理是离不开接口的,上面第五个阶段有讲)。推荐《基于FPGA的嵌入式图像处理系统设计》、《基于FPGA的数字图像处理原理及应用》。进一步钻研数学。要在算法上更上一层,必然需要更多的数学,所以这里建议学习实分析、泛涵分析、小波分析等。
㈡ FPGA如何入门,看了Xilinx开发教程还是觉得很吃力
给你一条思路。首先FPGA的特点是易上手,不可能精通。很多搞了十几年的FPGA工程师还不是遇到项目就卡壳。我见过一个华为工作了七年的做FPGA的,项目搞不出来辞职的(现在是我的顶头上司),所以想搞FPGA还得沉得住心,吃得了苦。然后自学就刚开始学语法,学个两周足以,语法实在太简单了。然后开始买开发板,跟着例程跑程序,这个阶段至少掌握整个FPGA开发流程和熟悉软件,尤其是在线调试,建议VIVADO,因为这玩意还是有点复杂的,工作中要是让你调接口你连这软件怎么抓信号都不会那可就尴尬了。至于SOC这些就不要学了,学了也没用,工作中基本上用不到。然后软件熟悉的差不多就开始自己写代码,这个阶段最主要是注意形成自己的代码风格,多看代码多写代码多仿真,要是有实际项目的代码就更好了,学习人家高手的代码风格(建议别用开发板的代码学习,写的太搓了),然后多搜一些异步设计的规范等等资料,等你知道给个你几个时钟你该用哪个时钟写哪个代码的时候开始玩一些实际项目的东西,这个时候开始有选择了,一般FPGA就是两个方向-接口与算法。这个阶段出去找工作吧,剩下的都是工作中才会理解的东西。算法门槛高,我就写过中频采集板的代码,其他的也不懂,接口的话开始按照人家招聘公司的要求学习,一般要求你要懂PCIE,DDR这些高速接口,高速接口无非是IP核例化和控制,看起来难实则也难(不过是工作中难,要是学习这玩意是啥的话还是不那么难的)。FPGA这玩意最忌讳的是手低眼高,也是很多学FPGA最容易犯的错,觉得这玩意就那么一回事。剩下的路就该你自己走了,FPGA是一个相对比较偏的行业,网上资源不太好搜集,信息收集也是一个需要学会的,但一般都是从人家赛家的官网下载的,所以英语底子得扎实。至于数电就不用再看了,本科基础足够了,心中有电路可不是指的是那种触发器堆的电路,而是指的是数据流的传输与时钟布局的大局观以及整个项目的大局观,所以看数电是没用滴。不过对于信号处理的有些基础知识,至少要知道啥是奈奎斯特采样,啥是中频采样,啥是FIR,FFT,DDC,UDC。
㈢ FPGA/CPLD应用设计200例的目录
上册
第1篇FPGA/CPLD典型应用设计实例
1.1FFT(快速傅里叶变换)的FPGA设计与实现
1.2数字式存储示波器
1.3汽车尾灯控制电路设计
1.4数字钟电路设计
1.5数字调制(FSK)信号发生器
1.6电子数字闹钟
1.7函数发生器设计
1.8伪随机序列发生器
1.9多功能点阵牌电路设计
1.10光通信PDH的标准伪随机图案发生器设计
1.11数字秒表
1.12电子密码锁
1.13数字电压表
1.14自动交通控制系统
1.15交通信号灯控制器
1.16交通控制灯逻辑电路系统设计
1.17十字路口交通管理信号灯系统设计
1.18交通灯控制程序设计
1.19交通灯电路设计
1.20无线通信中的全数字调制器设计
1.21无线通信中的全数字解调器设计
1.22采用VHDL语言设计的数字频率计
1.23数字显示频率计
1.24简易数字频率计设计
1.254位数字频率计
1.26采用VerilogHDL语言设计的频率计
1.27简易频率计电路设计
1.28简易频率计设计
1.29电子数字钟
1.30采用VerilogHDL语言设计的电子数字钟
1.31采用VHDL语言设计的电子数字钟
1.32电子时钟电路设计
1.33计时器
1.34波形发生器电路设计
1.35LED数码管动态显示设计
1.36流水灯电路设计
1.37直流步进电机控制电路设计
1.38ADC电压测量电路设计
1.39简易电子钟设计
1.40数字抢答器
1.41序列检测器
1.42UART通用异步串行口设计
1.43简易周期信号测试仪
1.44序列信号发生器
1.45通信、雷达和遥测用序列检测器的设计
1.46数字密码锁
1.47伪随机序列信号发生器设计
1.48FIFO存储器的VHDL描述
1.49采用VerilogHDL语言设计的UART通用异步收发器.
1.50倍频电路
1.51双向数据转换器
1.52键盘电路
1.53数码LED显示器
1.54多位加法器电路
1.556位数码管动态扫描及译码电路
1.56非2的幂次分频电路
1.57非整数分频电路
1.58常用电路的VHDL描述
1.59同步一百进制计数器的设计
1.60门电路设计
1.61时序电路设计
1.62组合逻辑电路设计
1.63频率合成技术——基于FPGA的直接数字合成器(DDS)设计
1.64串行通信MAX232接口电路设计
1.652的幂次分频电路
1.66环形计数器与扭环形计数器
1.678位可逆计数器和三角波发生器
1.68并/串转换器
1.694选1数据选择器
1.704位二进制数/8421BCD码
1.71移位寄存器设计
1.72三进制计数器设计
1.73移位型控制器的设计与实现
1.74存储器接口电路设计
1.754位加法器设计
1.76乘法器设计
1.77译码器设计
1.78可变模计数器设计
1.79整数增益放大器设计与测试
1.80滤波器的设计与测试
1.81比较器的设计与测试
1.82带阻有源滤波器设计
1.83线性反馈移位寄存器LFSR的FPGA设计与实现
1.84线性分析、循环码编码译码器的FPGA设计与实现
1.85数据传输与I/O接口标准
1.86异步收发器
1.87有限脉冲响应(FIR)数字滤波器的FPGA设计与实现
1.88逐次逼近型ADC
1.89乘法器的FPGA设计与实现
1.90总线仲裁电路的设计
1.91ALU(算术逻辑部件)设计
1.92脉冲分配器设计
1.93二进制码/格雷码的转换
1.94直接序列扩频通信系统设计
1.95并/串转换模块设计
1.96移位相加模块设计
1.97时延环节模块设计
1.98多波形发生器设计
1.99三位乘法器设计
1.100小信号测量系统
1.101单片电路设计
1.102简易数字锁
1.103交通灯控制器
1.104闪烁灯和流水灯设计与仿真
1.1053DES算法的FPGA实现及其在3DES-PCI安全卡中的应用
1.106边界扫描测试
1.107交通信号灯
1.108交通灯监视电路设计
1.109汉字显示
1.110汉字显示电路设计
1.111洗衣机控制电路设计
1.112篮球30s可控计时器设计
1.113悦耳的音响设计
1.114乐曲演奏电路设计
1.115多音阶电子琴电路设计
1.116《友谊地久天长》乐曲演奏电路设计
1.117软件无线电内插滤波器设计
1.118量程自动转换的数字式频率计
1.119游戏电路设计
1.120全自动电梯控制电路
1.1218位二进制乘法电路
1.122自动售邮票机
参考文献
下册
第2篇FPGA/CPLD产品设计、开发技巧与秘诀
2.1如何根据项目选择器件
2.2可编程器件的选择原则
2.3确定初步方案的方法与技巧
2.4基于可编程逻辑器件的数字系统的设计流程
2.5掌握常用FPGA/CPLD
2.6EDA技术的基本设计方法
2.7数字系统设计中的低功耗设计方法
2.8动态可编程重构技术
2.9多级逻辑的设计技巧
2.10VerilogHDL设计方法与技巧
2.11FPGA设计的稳定性探讨
2.12同步电路设计技巧
2.13图形设计法的实用技术
2.14状态机设计技巧
2.15存储器的VHDL实现方法与技巧
2.16存储器设计典型实例
2.17只读存储器
2.18比较器
2.19多路选择器
2.20三态总线
2.21m序列的产生和性质
2.22对具体某一信号的连续存储
2.23典型的时序逻辑电路分析与描述
2.24用VerilogHDL的时序逻辑电路设计
2.25时序逻辑电路的设计方法与技巧
2.26FPGA/CPLD的设计和优化
2.27CPLD典型器件ispPAC20的扩展应用技巧
2.28CPLD典型器件ispPAC的基本应用技巧
2.29VerilogHDL设计组合逻辑电路技巧
2.30VHDL设计组合逻辑电路技巧
2.31LED七段译码器的分析与设计
2.32电路的仿真技巧
2.33宏器件及其调用
2.34ispPAC的增益调整方法
2.35数字系统的描述方法
2.36FPGA系统设计与调试技巧
2.37典型的下载/配置方式
2.38Xilinx器件的下载
2.39ByteBlaster并口下载电缆
2.40单个FLEX系列器件的PS配置(下载电缆连接与下载操作)
2.41多个FLEX器件的PS配置(下载电路连接与下载操作)
2.42单个MAX器件的JTAG方式编程(POF文件连接与编程)
2.43单个FLEX器件的JTAG方式配置(SOF文件连接与编程)
2.44多个MAX/FLEX器件的JTAG方式编程/配置(连接与编程)
2.45主动串行与被动串行配置模式
2.46门禁系统设计技巧
2.47两种实际应用的计数器电路设计
2.48常用触发器及其应用设计技巧
2.49加法器设计
2.50ispPAC的接口电路设计
2.51编程接口和编程--ISP方式和JTAG方式
2.52利用VerilogHDL设计状态机的技巧
2.53系统级层次式设计
2.54边界扫描测试技术
2.55在系统下载电缆与评估板
2.56用CPLD和单片机设计电子系统
2.57怎样优化程序
2.58怎样才能避免潜在的危险
2.59毛刺的产生及其消除技巧
2.60计数器设计与FPGA资源
2.61组合逻辑电路的竞争冒险及其消除技巧
2.62选择器设计和FPGA资源
2.63基于FPGA/CPLD应用设计的23点经验总结
第3篇FPGA/CPLD常用工具及软件特性
3.1常用的FPGA开发工具
3.2常用EDA设计工具
3.3FPGA/CPLD数字逻辑实验平台
3.4软件资源
3.5典型常用的VerilogHDL语言(应用设计举例)
3.6VerilogHDL的一般结构
3.719种常用电路的VerilogHDL描述
3.8典型常用的VHDL语言(应用设计举例)
3.910种常用电路的VHDL描述.
第4篇FPGA/CPLD常用芯片结构及特点
4.1FPGA和CPLD的结构性能对照
4.2FPGA/CPLD的基本结构和原理
4.3Xilinx系列CPLD
4.4Altera系列CPLD
4.5现场可编程系统芯片FPSC
4.6无限可重构可编程门阵列ispXPGA
4.7ispXPLD器件
4.8在系统可编程通用数字开关ispGDS和互连器件ispGDX/V
4.9在系统可编程模拟器件的原理
4.10各种在系统可编程模拟器件的结构
4.11ispLSI系列器件的性能参数
4.12ispLSI系列器件的主要技术特性
4.13ispLSI系列器件的编程方法
4.14成熟器件与新型器件
4.15FPGA/CPLD器件的编程
附录l现场可编程逻辑器件主流产品一览
附录2各种器件的下载电路(在系统可编程ispJTAGTM芯片设计指导)
附录3Lattice系统宏(器件库)
附录4国内外常用二进制逻辑元件图形符号对照表
附录5世界着名的FPGA厂商及商标符号
附录6实验开发板电路原理图
附录7常用FPGA的端口资源
附录8两种CPLD实验仪器面板图及电路图
附录9CPLD主要器件引脚图
附录10缩略语词汇表
参考文献
……