目录
第1章FPGA开发简介
1.1可编程逻辑器件概述
1.2FPGA芯片
1.2.1FPGA框架结构
<p> </p> <p>目录</p> <p> </p> <p> </p> <p> </p> <p> </p> <p><span style="font-family: 宋体;">第</span>1<span style="font-family: 宋体;">章</span><span style="font-family: Calibri;">FPGA</span><span style="font-family: 宋体;">开发简介</span></p> <p> </p> <p>1.1<span style="font-family: 宋体;">可编程逻辑器件概述</span></p> <p> </p> <p>1.2FPGA<span style="font-family: 宋体;">芯片</span></p> <p> </p> <p>1.2.1FPGA<span style="font-family: 宋体;">框架结构</span></p> <p> </p> <p>1.2.2Altera<span style="font-family: 宋体;">公司的</span><span style="font-family: Calibri;">FPGA</span></p> <p> </p> <p>1.3FPGA<span style="font-family: 宋体;">开发工具</span></p> <p> </p> <p>1.4<span style="font-family: 宋体;">基于</span><span style="font-family: Calibri;">FPGA</span><span style="font-family: 宋体;">的开发流程</span></p> <p> </p> <p>1.4.1FPGA<span style="font-family: 宋体;">设计方法概论</span></p> <p> </p> <p>1.4.2<span style="font-family: 宋体;">典型</span><span style="font-family: Calibri;">FPGA</span><span style="font-family: 宋体;">开发流程</span></p> <p> </p> <p>1.4.3FPGA<span style="font-family: 宋体;">的配置</span></p> <p> </p> <p>1.4.4<span style="font-family: 宋体;">基于</span><span style="font-family: Calibri;">FPGA</span><span style="font-family: 宋体;">的</span><span style="font-family: Calibri;">SoC</span><span style="font-family: 宋体;">设计方法</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>2<span style="font-family: 宋体;">章硬件描述语言</span></p> <p> </p> <p>2.1VHDL<span style="font-family: 宋体;">硬件描述语言</span></p> <p> </p> <p>2.1.1<span style="font-family: 宋体;">程序基本结构</span></p> <p> </p> <p>2.1.2VHDL<span style="font-family: 宋体;">程序语法规则</span></p> <p> </p> <p>2.1.3<span style="font-family: 宋体;">并行语句</span></p> <p> </p> <p>2.1.4<span style="font-family: 宋体;">顺序语句</span></p> <p> </p> <p>2.1.5<span style="font-family: 宋体;">子程序及子程序调用语句</span></p> <p> </p> <p>2.2Verilog<span style="font-family: 宋体;">硬件描述语言</span></p> <p> </p> <p>2.2.1Verilog HDL<span style="font-family: 宋体;">程序基本结构</span></p> <p> </p> <p>2.2.2Verilog HDL<span style="font-family: 宋体;">数据类型</span></p> <p> </p> <p>2.2.3Verilog HDL<span style="font-family: 宋体;">运算符</span></p> <p> </p> <p>2.2.4Verilog HDL<span style="font-family: 宋体;">描述语句</span></p> <p> </p> <p>2.2.5<span style="font-family: 宋体;">语句的顺序执行与并行执行</span></p> <p> </p> <p>2.2.6Verilog HDL<span style="font-family: 宋体;">元件例化</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>3<span style="font-family: 宋体;">章</span><span style="font-family: Calibri;">Quartus Prime</span><span style="font-family: 宋体;">设计开发环境</span></p> <p> </p> <p>3.1Quartus Prime<span style="font-family: 宋体;">概述</span></p> <p> </p> <p>3.2Quartus Prime<span style="font-family: 宋体;">设计流程</span></p> <p> </p> <p>3.2.1<span style="font-family: 宋体;">设计输入</span></p> <p> </p> <p>3.2.2<span style="font-family: 宋体;">设计处理</span></p> <p> </p> <p>3.2.3<span style="font-family: 宋体;">波形仿真</span></p> <p> </p> <p>3.2.4<span style="font-family: 宋体;">器件编程</span></p> <p> </p> <p>3.3<span style="font-family: 宋体;">嵌入式逻辑分析仪使用</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>4<span style="font-family: 宋体;">章基本电路的</span><span style="font-family: Calibri;">HDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>4.1<span style="font-family: 宋体;">基本电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>4.1.1<span style="font-family: 宋体;">优先编码器</span></p> <p> </p> <p>4.1.2<span style="font-family: 宋体;">数据选择器</span></p> <p> </p> <p>4.1.3<span style="font-family: 宋体;">组合逻辑电路与并行语句、进程语句的关系</span></p> <p> </p> <p>4.1.4<span style="font-family: 宋体;">运算电路</span></p> <p> </p> <p>4.1.5<span style="font-family: 宋体;">时钟信号</span></p> <p> </p> <p>4.1.6<span style="font-family: 宋体;">锁存器和触发器</span></p> <p> </p> <p>4.1.7<span style="font-family: 宋体;">同步、异步信号描述</span></p> <p> </p> <p>4.1.8<span style="font-family: 宋体;">同步电路设计原则</span></p> <p> </p> <p>4.1.9<span style="font-family: 宋体;">计数器</span></p> <p> </p> <p>4.1.10<span style="font-family: 宋体;">分频电路</span></p> <p> </p> <p>4.1.11<span style="font-family: 宋体;">寄存器</span></p> <p> </p> <p>4.1.12<span style="font-family: 宋体;">状态机</span></p> <p> </p> <p>4.1.13<span style="font-family: 宋体;">动态扫描电路</span></p> <p> </p> <p>4.2<span style="font-family: 宋体;">基本电路的</span><span style="font-family: Calibri;">Verilog</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>4.2.1<span style="font-family: 宋体;">优先编码器</span></p> <p> </p> <p>4.2.2<span style="font-family: 宋体;">译码器</span></p> <p> </p> <p>4.2.3<span style="font-family: 宋体;">数据选择器</span></p> <p> </p> <p>4.2.4<span style="font-family: 宋体;">运算电路设计</span></p> <p> </p> <p>4.2.5<span style="font-family: 宋体;">时钟信号</span></p> <p> </p> <p>4.2.6<span style="font-family: 宋体;">触发器</span></p> <p> </p> <p>4.2.7<span style="font-family: 宋体;">同步、异步控制信号</span></p> <p> </p> <p>4.2.8<span style="font-family: 宋体;">计数器</span></p> <p> </p> <p>4.2.9<span style="font-family: 宋体;">分频器</span></p> <p> </p> <p>4.2.10<span style="font-family: 宋体;">寄存器</span></p> <p> </p> <p>4.2.11<span style="font-family: 宋体;">串并转换电路</span></p> <p> </p> <p>4.2.12<span style="font-family: 宋体;">有限状态机</span></p> <p> </p> <p>4.2.13<span style="font-family: 宋体;">动态扫描电路</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>5<span style="font-family: 宋体;">章基于</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">的设计</span></p> <p> </p> <p>5.1IP<span style="font-family: 宋体;">核</span></p> <p> </p> <p>5.2<span style="font-family: 宋体;">触发器</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">核的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计应用</span></p> <p> </p> <p>5.3<span style="font-family: 宋体;">存储器</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">核的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计应用</span></p> <p> </p> <p>5.4<span style="font-family: 宋体;">锁相环</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">核的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计应用</span></p> <p> </p> <p>5.5<span style="font-family: 宋体;">运算电路</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">核的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计应用</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>6<span style="font-family: 宋体;">章人机交互接口设计</span></p> <p> </p> <p>6.1<span style="font-family: 宋体;">键盘扫描电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>6.1.1<span style="font-family: 宋体;">设计原理</span></p> <p> </p> <p>6.1.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>6.1.3<span style="font-family: 宋体;">综合仿真</span></p> <p> </p> <p>6.2<span style="font-family: 宋体;">液晶驱动电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>6.2.1<span style="font-family: 宋体;">设计原理</span></p> <p> </p> <p>6.2.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>6.2.3<span style="font-family: 宋体;">综合仿真</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>7<span style="font-family: 宋体;">章数字信号处理</span></p> <p> </p> <p>7.1<span style="font-family: 宋体;">差错控制电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span><span style="font-family: Calibri;">(CRC</span><span style="font-family: 宋体;">校验电路</span><span style="font-family: Calibri;">)</span></p> <p> </p> <p>7.1.1<span style="font-family: 宋体;">设计原理</span></p> <p> </p> <p>7.1.2<span style="font-family: 宋体;">校验电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">实现</span></p> <p> </p> <p>7.1.3<span style="font-family: 宋体;">综合仿真</span></p> <p> </p> <p>7.2<span style="font-family: 宋体;">滤波电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>7.2.1<span style="font-family: 宋体;">设计原理</span></p> <p> </p> <p>7.2.2FIR<span style="font-family: 宋体;">滤波电路的设计实现</span></p> <p> </p> <p>7.2.3<span style="font-family: 宋体;">综合仿真</span></p> <p> </p> <p>7.3HDB3<span style="font-family: 宋体;">基带信号编译码电路的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span></p> <p> </p> <p>7.3.1<span style="font-family: 宋体;">设计原理</span></p> <p> </p> <p>7.3.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>7.3.3<span style="font-family: 宋体;">综合仿真</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>8<span style="font-family: 宋体;">章密码算法设计</span></p> <p> </p> <p>8.1<span style="font-family: 宋体;">分组密码算法的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计(</span><span style="font-family: Calibri;">SM4</span><span style="font-family: 宋体;">)</span></p> <p> </p> <p>8.1.1SM4<span style="font-family: 宋体;">算法原理</span></p> <p> </p> <p>8.1.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>8.1.3<span style="font-family: 宋体;">仿真验证</span></p> <p> </p> <p>8.2<span style="font-family: 宋体;">流密码算法的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span><span style="font-family: Calibri;">(ZUC)</span></p> <p> </p> <p>8.2.1ZUC<span style="font-family: 宋体;">算法原理</span></p> <p> </p> <p>8.2.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>8.2.3<span style="font-family: 宋体;">仿真验证</span></p> <p> </p> <p>8.3HASH<span style="font-family: 宋体;">算法的</span><span style="font-family: Calibri;">VHDL</span><span style="font-family: 宋体;">设计</span><span style="font-family: Calibri;">(SM3)</span></p> <p> </p> <p>8.3.1SM3<span style="font-family: 宋体;">算法原理</span></p> <p> </p> <p>8.3.2<span style="font-family: 宋体;">设计实现</span></p> <p> </p> <p>8.3.3<span style="font-family: 宋体;">仿真验证</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>9<span style="font-family: 宋体;">章基于</span><span style="font-family: Calibri;">Nios </span><span style="font-family: 宋体;">Ⅱ的</span><span style="font-family: Calibri;">SOPC</span><span style="font-family: 宋体;">系统开发</span></p> <p> </p> <p>9.1<span style="font-family: 宋体;">简介</span></p> <p> </p> <p>9.1.1SOPC<span style="font-family: 宋体;">技术</span></p> <p> </p> <p>9.1.2Nios <span style="font-family: 宋体;">Ⅱ嵌入式处理器</span></p> <p> </p> <p>9.1.3Qsys<span style="font-family: 宋体;">开发工具</span></p> <p> </p> <p>9.2SOPC<span style="font-family: 宋体;">硬件开发</span></p> <p> </p> <p>9.2.1<span style="font-family: 宋体;">启动</span><span style="font-family: Calibri;">Qsys</span></p> <p> </p> <p>9.2.2<span style="font-family: 宋体;">添加</span><span style="font-family: Calibri;">Nios </span><span style="font-family: 宋体;">Ⅱ及外设</span><span style="font-family: Calibri;">IP</span><span style="font-family: 宋体;">模块</span></p> <p> </p> <p>9.2.3<span style="font-family: 宋体;">集成</span><span style="font-family: Calibri;">Nios </span><span style="font-family: 宋体;">Ⅱ系统至</span><span style="font-family: Calibri;">Quartus Prime</span></p> <p> </p> <p>9.3SOPC<span style="font-family: 宋体;">软件系统开发</span></p> <p> </p> <p>9.3.1<span style="font-family: 宋体;">创建</span><span style="font-family: Calibri;">Nios </span><span style="font-family: 宋体;">Ⅱ工程</span></p> <p> </p> <p>9.3.2<span style="font-family: 宋体;">设置工程的系统属性</span></p> <p> </p> <p>9.3.3<span style="font-family: 宋体;">程序编写及编译</span></p> <p> </p> <p>9.3.4<span style="font-family: 宋体;">代码调试及运行</span></p> <p> </p> <p><span style="font-family: 宋体;">附录</span>DES<span style="font-family: 宋体;">算法的</span><span style="font-family: Calibri;">S</span><span style="font-family: 宋体;">盒</span></p> <p> </p> <p>参考文献</p> <p> </p>显示全部信息前 言前言现场可编程门阵列(Field Programmable Gate Array,FPGA)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果,基于FPGA的设计方法是电子设计领域的一大变革。不同于传统的电子设计方法,基于FPGA的现代电子设计方法采用自顶向下的设计方法,使设计师们可以把更多的精力和时间放在电路方案的设计上,很大程度上提高了电子产品的上市时间; FPGA的可编程性,使得在不改变硬件电路设计的前提下,产品性能的提升成为可能; 硬件软件化,以及不断增长的可编程门阵列的规模,使得产品在小型化的同时,可靠性也得以不断提升。近年来,IP核的广泛使用,特别是嵌入式处理器IP核的使用,使FPGA的市场占有量大大增加。因此对于广大的电子设计人员,以及电子工程专业的学生来说,掌握基于FPGA的开发技术是非常必要的。参与本书编写的教师多年从事EDA课程的教学和相关科研工作,作者总结了许多教学和科研经验,成就了本书的编写与问世。全书系统地介绍了FPGA的开发技术,内容涵盖FPGA可编程逻辑器件的基本知识及相关软件的使用方法,可编程逻辑器件的硬件描述语言,以及基于FPGA的电路设计,着重讲述了FPGA电路设计的方法和技巧,并给出了设计实例。全书共9章。第1章分析了FPGA开发的基本设计方法和设计流程,并以Altera公司的FPGA芯片为例,介绍了可编程逻辑器件的结构特点。第2章介绍了目前流行的两种可编程逻辑器件的硬件描述语言: VHDL和Verilog。第3章以Quartus*新版本Prime 16.0为例,介绍了可编程逻辑器件开发软件的安装和使用方法。第4章介绍了基本电路的FPGA设计,讲解了FPGA设计时需要注意的基本问题。第5章介绍了基于IP核的设计方法。第6章以键盘扫描和液晶驱动设计为例,介绍了人机交互接口设计。第7章介绍了几种基本的数字信号处理电路的FPGA设计。密码算法的设计实现是FPGA在信息**设计领域的一个重要应用,因此本书的第8章以分组密码、流密码及Hash算法为例,给出了三个较新的密码算法的FPGA实现的实例。第9章涉及FPGA高端开发技术,介绍了基于Nios Ⅱ的Qsys系统开发的流程和设计方法。书中第6章至第8章的设计程序可以在www.besti.edu.cn/EDA精品课程网站下载。有关FPGA的新器件、新技术等不断更新的知识,读者可以从EDA厂商的网站上获取更新的资料,也可以从销售商或可编程逻辑器件中文网站(http://www.fpga.com.cn)上获取相关的信息和技术支持。全书由李莉组织编写并统稿。本书第1章、第3章、第6章以及附录部分由李莉编写,第8章由李雪梅和张磊共同编写,第5章、第7章、第9章由李莉和董秀则共同编写,第2章、第4章由李莉和李雪梅共同编写。北京电子科技学院路而红教授不辞辛苦地认真审阅了全部书稿,并为本书提出了许多宝贵的建议和意见。硕士研究生杨凤、胡尧、李稹宇参与了本书相关程序的调试工作。借此机会也向所有关心、支持和帮助过本书编写、修改、出版、发行的老师和朋友们致以诚挚的谢意。由于作者水平有限,书中难免有不妥之处,欢迎各位读者提出批评和指正。作者联系方式: lili103@besti.edu.cn。作者2017年4月于北京前言 <div>现场可编程门阵列(Field Programmable Gate Array,FPGA)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果,基于FPGA的设计方法是电子设计领域的一大变革。不同于传统的电子设计方法,基于FPGA的现代电子设计方法采用自顶向下的设计方法,使设计师们可以把更多的精力和时间放在电路方案的设计上,很大程度上提高了电子产品的上市时间; FPGA的可编程性,使得在不改变硬件电路设计的前提下,产品性能的提升成为可能; 硬件软件化,以及不断增长的可编程门阵列的规模,使得产品在小型化的同时,可靠性也得以不断提升。近年来,IP核的广泛使用,特别是嵌入式处理器IP核的使用,使FPGA的市场占有量大大增加。因此对于广大的电子设计人员,以及电子工程专业的学生来说,掌握基于FPGA的开发技术是非常必要的。参与本书编写的教师多年从事EDA课程的教学和相关科研工作,作者总结了许多教学和科研经验,成就了本书的编写与问世。全书系统地介绍了FPGA的开发技术,内容涵盖FPGA可编程逻辑器件的基本知识及相关软件的使用方法,可编程逻辑器件的硬件描述语言,以及基于FPGA的电路设计,着重讲述了FPGA电路设计的方法和技巧,并给出了设计实例。全书共9章。第1章分析了FPGA开发的基本设计方法和设计流程,并以Altera公司的FPGA芯片为例,介绍了可编程逻辑器件的结构特点。第2章介绍了目前流行的两种可编程逻辑器件的硬件描述语言: VHDL和Verilog。第3章以Quartus*新版本Prime 16.0为例,介绍了可编程逻辑器件开发软件的安装和使用方法。第4章介绍了基本电路的FPGA设计,讲解了FPGA设计时需要注意的基本问题。第5章介绍了基于IP核的设计方法。第6章以键盘扫描和液晶驱动设计为例,介绍了人机交互接口设计。第7章介绍了几种基本的数字信号处理电路的FPGA设计。密码算法的设计实现是FPGA在信息**设计领域的一个重要应用,因此本书的第8章以分组密码、流密码及Hash算法为例,给出了三个较新的密码算法的FPGA实现的实例。第9章涉及FPGA高端开发技术,介绍了基于Nios Ⅱ的Qsys系统开发的流程和设计方法。书中第6章至第8章的设计程序可以在www.besti.edu.cn/EDA精品课程网站下载。有关FPGA的新器件、新技术等不断更新的知识,读者可以从EDA厂商的网站上获取更新的资料,也可以从销售商或可编程逻辑器件中文网站(http://www.fpga.com.cn)上获取相关的信息和技术支持。全书由李莉组织编写并统稿。本书第1章、第3章、第6章以及附录部分由李莉编写,第8章由李雪梅和张磊共同编写,第5章、第7章、第9章由李莉和董秀则共同编写,第2章、第4章由李莉和李雪梅共同编写。北京电子科技学院路而红教授不辞辛苦地认真审阅了全部书稿,并为本书提出了许多宝贵的建议和意见。硕士研究生杨凤、胡尧、李稹宇参与了本书相关程序的调试工作。借此机会也向所有关心、支持和帮助过本书编写、修改、出版、发行的老师和朋友们致以诚挚的谢意。由于作者水平有限,书中难免有不妥之处,欢迎各位读者提出批评和指正。作者联系方式: lili103@besti.edu.cn。作者2017年4月于北京<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>显示全部信息媒体评论评论免费在线读第5章CHAPTER 5
基于IP的设计
本章主要介绍Quartus Prime中可重复利用的参数化模块库(LPM)设计资源,讲述如何配置和实例引用参数化模块等IP资源。希望通过这一章的内容,能够利用Quartus Prime软件工具提供的参数化模块资源对常用电路进行**快速的HDL设计。5.1IP核IP(Intellectual Property)原指知识产权、著作权等,在IC设计领域通常被理解为实现某种功能的设计。IP核则是完成某种常用但是比较复杂的算法或功能(如FIR滤波器、SDRAM控制器、PCI接口等),并且参数可修改的电路模块,又称为IP模块。随着CPLD/FPGA的规模越来越大,设计越来越复杂,越来越多的人开始认识到IP核以及IP复用技术的优越性,并努力推动IP复用设计技术的发展。根据实现的不同,IP核可以分为三类: 完成行为域描述的软核(Soft Core),完成结构域描述的固核(Firm Core)和基于物理域描述并经过工艺验证的硬核(Hard Core)。三种IP核的特点比较见表51。不同的用户可以根据自己的需要订购不同的IP产品。
表51三种IP核的特点比较
软(soft)IP核固(firm)IP核硬(hard)IP核
描述内容模块功能模块逻辑结构物理结构提供方式HDL文档门电路级网表,对应具体工艺网表电路物理结构掩模版图和全套工艺文件
优点灵活,可移植缺点后期开发时间长介于两者之间后期开发时间短灵活性差,不同工艺难移植