版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-PAGE2-基于FPGA的数字虚拟实验设计摘要FPGA是一种新型高性能可编程逻辑器件,结合数字逻辑电路,通过编程可以改变引脚特性,虚拟实现不同数字芯片的逻辑功能,可以达到同一个芯片底座实现不同芯片的功能,将多个独立逻辑电路集成到一个目标实验室平台,可以最大程度地共享硬件资源和软件资源,并且可以根据课程和实验项目方便地进行切换。因此可以实现学生利用虚拟芯片连接电路,既实现了学生动手操作增强实验效果,又可以减少因频繁更换芯片造成芯片损坏的成本。本课题采用电子设计自动化技术(EDA),以QuartusII软件和AlteraFPGA开发平台为基础,利用虚拟仿真技术和FPGA开发平台,对传统的数字系统原理与应用实践课程教学环节和实践环节进行改革,充分发挥学生在实践教学过程中的主体作用,培养学生在实践中研究问题,分析问题和解决问题的能力。关键词:FPGA数字电路EDA技术实验平台目录1绪论 51.1课题研究背景及意义 51.2国内外研究现状 51.3可行性研究 61.4本文主要工作 72相关基本概念 82.1FPGA 82.2Verilog 82.3QuartusII 93电路原理图,Verilog设计 123.1基础数字芯片 123.2基础数字芯片 143.3组合逻辑电路 203.4时序逻辑电路 263.5原理图 323.6引脚分配 334仿真验证 344.1波形仿真验证 344.2实验波形仿真验证 364.3RTL视图 425实物设计与制作。 455.1PCB设计 465.2板子的焊接与调试 506实物验证 507实验结论 51参考文献 521绪论1.1课题研究背景及意义近些年,随着数字集成化的发展,以FPGA(FieldProgrammable
Gate
Array现场可编程门阵列)为代表的可编程芯片的发展非常快速,而且随着制作工艺的改进,FPGA内部的门阵列可以达到到几百万门甚至上千万门[1],随着芯片制程工艺的改进,20nm工艺的出现,FPGA成为必不可少的流行的实惠的器件[2]。FPGA已经从一开始的应用于辅助功能还有胶合逻辑(连接集成电路的各个功能模块和逻辑电路)的简单器件,到现在作为许多产品核心器件被开发出来。目前,数字EDA教学正在迅猛发展,学生们对于数电学习的需求也越来越高。数字电子实验教学使用的数字芯片的数量也随之增多。然而随着电子技术的不断进步,集成化的特点日益突出,基础数字芯片的应用逐渐减少,市场上基础数字芯片的价格也随之上升。因此在使用基本数字芯片做实验的时候的成本也随之增加[2]。小型数字芯片越来越少,但数字实验教学仍是不可或缺。可以使用可编程逻辑门阵列FPGA来实现数字逻辑的功能,这样既能让学生使用更方便,也能加深对数字逻辑的理解。利用FPGA芯片编程可以改变引脚特性,虚拟实现不同数字芯片的逻辑功能,可以达到同一个芯片底座实现不同芯片的功能,将多个独立逻辑电路集成到一个目标实验室平台,可以最大程度地共享硬件资源和软件资源,并且可以根据课程和实验项目方便地进行切换。因此可以实现学生利用虚拟芯片连接电路,即实现了学生动手操作增强实验效果,又可以减小频繁更换芯片过程中造成芯片损坏的成本[8]。FPGA作为硬件平台学生将全面了解数字系统设计方法、数字设备和操作的理论和实践知识。近来受疫情影响,现场教学受到了限制,那么低成本的口袋实验平台和不使用芯片就能够进行实际逻辑功能验证的集成化器件FPGA有了应用的场景。1.2国内外研究现状进入21世纪以来,电子设计自动化(EDA,ElectronicDesignAutomatic)的技术飞速发展,而且它以成为世界发展的前瞻技术,在现代电子技术中占有举足轻重的作用。由于FPGA具有集成度高、开发周期短、编程灵活等优点,所以非常适合学生验证较为复杂的设计[5]。随着EDA数字技术的快速发展,国外很多著名高校不断跟进数字电子技术的发展。开发了诸如口袋型FPGA实验室等工具,这些工具有方便携带、成本低等优势,因此开展口袋实验室为很多高校数字电路实验课程改革的主体思路。本设计就是借鉴了口袋实验室的体积小,操作简单,对实验场地无要求等优点。国内很多高校都开设了FPGA相关的课程,在逐步探索使用FPGA教学以跟上时代的步伐,这弥补了传统数字电路教学及实验的不足[3]。但由于教学经验有限,教学设备资源的缺乏,很多时候的只有少数学生才有机会深入了解FPGA,很多都是为了参加全国大学生电子竞赛、创新大赛的。接触FPGA的学生不多,对其知识体系的培养,专业性培养以及职业发展会存在着一些限制。目前我国实行创新驱动发展战略,正在逐步落实深化高等学校创新创业教育改革,本校为顺应物联网时代的新趋势[9],正在为进一步提高学校发展水平和培养特色人才做一系列的教学改革。1.3可行性研究随着计算机和半导体技术(尤其是FPGA及其硬件描述语言)开发的频率越来越高,传统的硬件设计技术已远远落后于当今的技术开发。相应的传统数字电路教育和实验已不再适应现代电子技术的持续发展[2]。许多学校提供与FPGA有关的课程以跟上时代的发展,但它们弥补了传统数字电路教育和实验的不足。但是,作者认为,数字电路的教学和实验需要与FPGA结合使用,将FPGA集成到数字电路中是非常必要的。师生对数字实验教育的需求很大。数字电路课程仍然侧重于门电路和中小型电路,这主要是由于本课程的定位。毕竟,无论电路有多复杂,如果没有扎实的数字电路基础知识就很难设计出好的电路。如何使学生掌握数字电路的基础知识,同时又清楚地了解这些知识在现代技术中的应用,这是在数字电路教育中必须解决的问题[6]。所以利用FPGA芯片编程可以改变引脚特性,虚拟实现不同数字芯片的逻辑功能,可以达到同一个芯片底座实现不同芯片的功能,将多个独立逻辑电路集成到一个目标实验室平台,可以最大程度地共享硬件资源和软件资源,并且可以根据课程和实验项目方便地进行切换。可以实现学生利用虚拟芯片连接电路,即实现了学生动手操作增强实验效果,又可以减小频繁更换芯片过程中造成芯片损坏的成本[8],满足了师生对于实验教学的需求。因此开发集成化的电子实验室对学生的学习以及培养专业性人才有着很大的作用。而且近来受疫情影响,现场教学受到了限制,那么低成本的口袋实验平台和不使用芯片就能够进行实际逻辑功能验证的集成化器件FPGA,有了应用的场景。21世纪的教育是适合创新型人才的世纪,因此在这种大环境下,对于学生培养的主要目标是培养具有创新思维的高素质人才[9]。我国各大高等学府的电子实验室和电子实验教学是理论和实践相结合的科研和教学基地,是培养学生对于电子产品认知以及创造能力的重要场所。因此开发集成化的电子实验室对学生的学习以及培养专业性人才具有很大作用。1.4本文主要工作 设计了一个FPGA实验平台,囊括了以下的逻辑电路:基础逻辑电路,基础数字芯片,组合逻辑电路,时序逻辑电路。这些电路有些是用QuartusII原理图绘制,有些则是用Verilog编程实现。本论文的主要框架如下,如图1.1所示。分析需要设计哪些电路分析需要设计哪些电路电路原理图,Verilog设计电路原理图,Verilog设计仿真验证仿真验证实物设计与制作实物设计与制作实物验证实物验证得出结论,完成设计得出结论,完成设计图1.1设计流程2相关基本概念2.1FPGAFPGA(FieldProgrammableGateArray)又叫做现场可编程逻辑门阵列。如图2.1所示。图2-1FPGA逻辑电路FPGA是一种专用集成电路,是一种可编程逻辑阵列,可以有效解决原始设备中门电路少的问题[2]。FPGA的基本结构包括可编程输入和输出单元,可配置逻辑块,数字时钟管理模块,嵌入式BlockRAM,布线资源,嵌入式专用硬核和底层嵌入式功能单元[1]。由于其丰富的布线资源,可重复的编程,高集成度和低投资特性,FPGA被广泛用于数字电路设计领域。FPGA设计过程包括算法设计,代码仿真和设计,电路板调试,设计人员,以及建立算法体系结构,使用EDA建立设计计划或使用HD编写设计代码的实际需求。包括通过代码仿真进行的设计计划调整。实际需求以及最后的板级调试,使用配置电路将相关文件下载到FPGA芯片,以验证实际的操作效果[4]。2.2VerilogVerilogHDL是一种硬件描述语言,用于各种抽象设计级别(包括算法级别,门级别和开关级别)的数字系统建模。建模的数字系统对象的复杂性可能介于简单的门和完整的电子数字系统之间。可以分层地描述数字系统,并且可以使用相同的描述显式地执行时间序列建模[12]。Verilog继承了各种C运算符和结构。该代码相对简洁,易于学习和接受。此外,作为硬件描述语言,还有一些独特的语言元素,例如向量网和寄存器以及进程中的非阻塞分配,这些语言元素不同于普通的计算机编程语言[11]。2.3QuartusIIQuartusII是Altera公司的综合性CPLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(AlteraHardware支持DescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程[4]。使用方法如下:2.3.1新建工程项目如图2.3.1所示。图2.3.1新建工程项目2.3.2填写设计名称填写项目存储路径和工程名,不要出现中文路径。如图2.3.2所示。图2.3.2填写设计名称2.3.3添加工程添加已存在文件(可选),在【Filename】下选择已经存在的工程项目,利用【Add】或【Addall】命令添加文件到新工程,点击【Next】,如图2.3.3所示。图2.3.3添加工程2.3.4选择型号选择设备系列,并在【devices】下选择具体设备型号,这里我们选择CycloneIV系列设备,点击【Next】。如图2.3.4所示。图2.3.4选择型号2.3.5选择仿真器和描述语言设置仿真器和描述语言,【Simulation】下选择仿真工具Modelsim,描述语言为VerilogHDL,点击【Next】。如图2.3.5所示。2.3.5选择仿真器和描述语言2.3.6新建文件新建一个BlockDiagram/SchematicFile文件。如图2.3.6所示。图2.3.6新建文件2.3.7开始画原理图如图2.3.7所示。图2.3.7QuartusII开发流程3电路原理图,Verilog设计这里主要介绍了各种数字电路。包括基础数字电路,基础数字芯片,组合逻辑电路,时序逻辑电路。3.1基础数字芯片3.1.1逻辑门介绍逻辑门(LogicGates)是在集成电路(IntegratedCircuit)上的基本组件。简单的逻辑门可由晶体管组成。这些晶体管的组合允许代表两种类型信号的高电平和低电平在通过它们之后产生高电平或低电平信号。高电平和低电平可以分别表示逻辑“真”和“假”,或二进制形式的1和0,以实现逻辑运算[5]。逻辑门又称“数字逻辑电路基本单元”。执行“或”、“与”、“非”、“或非”、“与非”等逻辑运算的电路。任何复杂的逻辑电路都可由这些逻辑门组成。广泛用于计算机、通信、控制和数字化仪表[6]。3.1.2常见逻辑门介绍常见的逻辑门包括“与”门,“或”门,“非”门和“异或”(也称为异或)。可以使用逻辑门的组合来实现更复杂的逻辑操作。而以下三种是最基本的逻辑门:(1)与门与门(英语:ANDgate)又称“与电路”。是执行“与”运算的基本逻辑门电路。有多个输入端,一个输出端。当所有的输入同时为高电平(逻辑1)时,输出才为高电平,否则输出为低电平(逻辑0)[4]。如表3.1.1所示。表3.1.1与门逻辑表输入A输入B输出F000010100111(2)或门或门(英文:Orgate)又称或电路。在多个条件中,只要满足一个条件,事件就会发生。这种关系称为“或”逻辑关系。具有“或”逻辑关系的电路称为“或”门。或门具有多个输入端子和一个输出端子。多输入或门可以由多个2输入或门组成。只要输入之一为高电平(逻辑1),输出为高电平(逻辑1)。仅当所有输入均为低电平时,输出才会为低电平。如果几个电平条件中,只要有一个高电平的条件得到满足,就会输出高电平,这种关系叫做“或”逻辑关系[4]。如表3.1.2所示。表3.1.2或门逻辑表输入A输入B输出F000011101111(3)非门非门(英语:NOTgate)也称为反相器,是逻辑电路的基本单元。NOT门具有输入和输出。逻辑符号输出端子处的圆圈表示反转的含义。如果输入端子为高电平(逻辑1),则输出端子为低电平(逻辑0),如果输入端子为低电平,则输出端子为高电平。即,输入和输出电平状态总是被反转[4]。如表3.1.3所示。表3.1.3非门逻辑表输入A输出F01103.1.3Verilog实现Verilog中有wire类型。wire变量表示直通,相当于物理连线,即只要输入有变化,输出马上无条件地反映,所以只使用wire类型设计满足逻辑门设计要求。这里以与门为例,进行介绍。新建工程,设计逻辑门——与门,结果如图3.1.1和图3.1.2所示。图3.1.1新建文件图3.1.2设计程序其中“module”是定义符号,而“AND_GATE”是名称。最右侧的括号中的符号是“in1”、“in2”、“out”变量名称,采用逗号分隔。这些变量是接口的定义,其中in1与in2是输入接口,out是输出接口。与门由两个输入与一个输出组成,在设计中与门设计使用“&”符号来完成。由于定义的变量默认是wire类型,所以需要使用“assign”完成对wire类型变量的设计。最后还需要使用“endmodule”标志着已经完成设计。所有设计的逻辑门可以组合排列,比如或门使用“|”,非门使用“~”,不再赘述。3.2基础数字芯片3.2.174LS00(1)74LS00N功能74LS00N是一款常用的二输入四与非门芯片,主要功能逻辑是Y=(AB)'。芯片内一路的门级电路等效于一个与非门。如图3.2.1所示。图3.2.1与非门逻辑电路通过与非门的逻辑运算可以知道Y=(AB)'。如表3.2.1所示。表3.2.1与非门功能表输入输出ABY001011101110芯片内部结构中共有四组与非门电路,如图3.2.2所示,端口1、2、4、5、9、10、12、13是四组与非门的输入端,3、6、8、11是四组与非门的输出端。如图3.2.2所示。图3.2.274LS00N门电路结构(2)Quartus原理图利用QuartusII绘制74ls00芯片的原理图。其中图3.2.3是芯片内部结构图,用来表示和定义芯片内部逻辑关系。输入端和输出端都设有三态门,三态门未接通时处于高阻态,芯片不工作;当三态门E=1时,电路正常工作。利用此原理,在每个芯片都施加一个控制端(ctrl),通过控制三态门的通断来控制芯片工作与否。每个芯片也设置了报警(warm),当电源地接错或者出现短路故障,warm为高电平,报警装置工作。图3.2.4是封装好的元器件图,用来给芯片定义和分配引脚。如图3.2.3和图3.2.4所示。图3.2.374ls00内部结构图图3.2.474ls00封装图3.2.274LS08(1)74LS08N功能74LS08N是一款常用的二输入四与门芯片,主要功能逻辑是Y=(AB)。芯片内一路的门级电路等效于一个与门。如图3.2.5所示。图3.2.5与门逻辑电路通过与非门的逻辑运算可以知道Y=(AB)。如表3.2.2所示。表3.2.2与门功能表输入输出ABY000010100111芯片内部结构中共有四组与门电路,如图3.2.6所示,端口1、2、4、5、9、10、12、13是四组与非门的输入端,3、6、8、11是四组与门的输出端图3.2.674LS08门电路结构(2)Quartus原理图利用QuartusII绘制74ls00芯片的原理图。其中图3.2.7是芯片内部结构图,用来表示和定义芯片内部逻辑关系。同样的,输入端和输出端都设有三态门,三态门未接通时处于高阻态,芯片不工作,;当三态门E=1时,电路正常工作。利用此原理,在每个芯片都施加一个控制端(ctrl),通过控制三态门的通断来控制芯片工作与否。每个芯片也设置了报警(warm),当电源地接错或者出现短路故障,warm为高电平,报警装置工作。图3.2.8是封装好的元器件图,用来定义和分配引脚。如图3.2.7和3.2.8所示。图3.2.774ls08内部结构图图3.2.874ls08封装图3.2.374LS10(1)74LS10N功能74LS10N是一款常用的二输入四与门芯片,主要功能逻辑是Y=(ABC)。芯片内一路的门级电路等效于一个与门。如图3.2.9所示。图3.2.9三输入与门逻辑电路通过与非门的逻辑运算可以知道Y=(ABC)。如表3.2.3所示。表3.2.33输入与门功能表输入输出ABCY00000010010001111000101111011111芯片内部结构中共有四组与门电路,端口1、2、4、5、9、10、12、13是四组与非门的输入端,3、6、8、11是四组与门的输出端,如图3.2.10所示。图3.2.1074ls10门电路(2)Quartus原理图利用QuartusII绘制74ls10芯片的原理图。其中图3.2.11是芯片内部结构图,用来表示芯片内部逻辑关系。图3.2.12是封装好的元器件图,可以直接给它分配引脚。如图3.2.11和图3.2.12所示。图3.2.1174ls10内部结构图图3.2.1274ls10封装图3.3组合逻辑电路3.3.1译码器74HC138是一种最广泛使用的3-8线译码器芯片。可以通过使用三路输入信号控制输出八路不同的输出信号。图3.3.174HC138译码芯片端口74HC138N芯片的使能端有E1、E2、E3三个端口,当E1和E2输入低电平、E3输出高电平时74HC138N译码芯片才能正常完成3-8译码工作;输入三位信号有A0、A1、A2,有效输入信号LLL~HHH共有八种;信号输出端Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7默认输出高电平,当使能端有效时有且仅有一个输出端将输出低电平[13]。74HC138N芯片译码表芯片译码表详情功能如表3.3.1所示,‘H’表示高电平、‘L’表示低电平、‘X’表示任一电平。其中,使能端有效后A0~A2控制Y0~Y7任一端口输出低电平信号。否则,使能端有效后全部输出高电平。如表3.3.1所示。表3.3.174HC138N芯片功能表输入信号输出信号E1E2E3A0A1A2Y0Y1Y2Y3Y4Y5Y6Y7HXXXXXHHHHHHHHXHXXXXHHHHHHHHXXLXXXHHHHHHHHLLHLLLLHHHHHHHLLHHLLHLHHHHHHLLHLHLHHLHHHHHLLHHHLHHHLHHHHLLHLLHHHHHLHHHLLHHLHHHHHHLHHLLHLHHHHHHHHLHLLHHHHHHHHHHHL74HC138N芯片电路原理从芯片的数据手册可知芯片的内部门级电路组合情况,如图3.3.2所示。图3.3.274HC138N门电路逻辑图这里介绍一下利用74138做的选择开关。74138是一个二进制译码器,能把二进制代码编译为0~7的十进制数值,ABC输入端口,输入二进制代码,Y0~Y7输出端口,输出十进制数。Y0~Y7依次对应0~7这八个端口[13]。控制输入端ABC的输入,可以选择输出端口,进而控制对应端口芯片的工作与否。这样就可以做成一个选择开关,改变输入值来确定到底是哪个逻辑门电路在工作。此外,根据需求,可以选择7448译码器(4-10)或者拼接若干个译码器,来实现想要数量的译码器。下面是利用两片3-8译码器拼接成4-16译码器。如图3.3.3所示。图3.3.34-16译码器3.3.2编码器74HC148N是一种最广泛使用的8-3线编码器芯片。可以通过使用八路输入信号控制输出三路输出信号。如图3.3.4所示。图3.3.474HC148N编码芯片端口74HC148N芯片的使能输入端是E1端口,当E1输入低电平时74HC148N编码芯片才能正常完成8-3优先编码工作;使能输出端是E0,当且仅当编码芯片使能后编码信号输入HHHHHHHH时输出低电平;片选优先编码器输出端是GS,当编码芯片使能且信号输入端存在输入低电平时才输出低电平;信号输出端A2~A0一共有八种输出编码:LLL~HHH;信号输入端共有八个端口,当八个端口中存在一路低电平时就会输出有效的编码信号。74HC148N芯片编码表芯片编码表详情功能如表3.3.2所示,‘H’表示高电平、‘L’表示低电平、‘X’表示任一电平。其中当使能端E1有效且输入端的0~7端口信号输入有效时A2~A0才输出有效编码信号,否则GS端输出高电平。如表3.3.2所示。表3.3.274HC148N芯片功能表输入端输出端E101234567A2A1A0GSE0HXXXXXXXXHHHHHLHHHHHHHHHHHHLLXXXXXXXLLLLLHLXXXXXXLHLLHLHLXXXXXLHHLHLLHLXXXXLHHHLHHLHLXXXLHHHHHLLLHLXXLHHHHHHLHLHLXLHHHHHHHHLLHLLHHHHHHHHHHLH(4)74HC148N芯片电路原理从芯片的数据手册可知芯片的内部门级电路组合情况,如图3.3.5所示。图3.3.574HC148N门电路逻辑图3.3.3数据选择器74HC153N是一种最广泛使用的四选一数据选择器芯片。可以通过两路输入信号控制选择输入与输出的信号通道。如图3.3.6所示。图3.3.674HC153N选择芯片端口74HC153N芯片的地址选择端共用端口A、B,地址选择端决定了C0~C3到Y的选择通道;信号输出需要使能,使能端对应有两组:第一组1G,第二组2G,对应信号输入端有两组:第一组1C0、1C1、1C2、1C3,第二组2C0、2C1、2C2、2C3,对应信号输出端也有两组:第一组是1Y,第二组是2Y;信号真值表如表3.3.3所示,当G端处于低电平时由B、A端控制输出通道。如表3.3.3所示。表3.3.374HC153功能表输入端输出端BAC0C1C2C3GYXXXXXXHLLLLXXXLLLLHXXXLHLHXLXXLLLHXHXXLHHLXXLXLLHLXXHXLHHHXXXLLLHHXXXHLH74HC153芯片电路原理从芯片的数据手册可知芯片的内部门级电路组合情况,如图3.3.7所示。由于芯片是由两组四选一电路组合,所以图中仅显示其中一组电路。图3.3.774HC153门电路逻辑图门电路逻辑图中多了一种元件“TG”叫做“传输门”,是一种传输模拟信号的模拟开关。CMOS传输门由一个P沟道和一个N沟道增强型MOSFET并联而成。TG的左边是输入端,右边是输出端。上边是控制信号C'输入端,下边是控制信号C输入端。当C'=0、C=1时,TG导通,输出端的信号等于输入端信号。否则门关闭,信号不导通[13]。由图3.3.7可知,第一列与第二列的TG由A和B端控制,从而起到了数据选择的作用。从图3.3.7可知A有效时,1C0的第一个TG是不导通的。3.3.4数码显示管电路7448为七段译码器作为显示译码器,连接到数码管显示器,可以直观地显示数字系统正在运行的是第几个芯片。A3A2A1A0代表显示解码器输入的BCD码,Ya至Yg代表输出7位二进制代码,1代表数码管的线段的照明状态,0代表线段的关闭状态。获取表中显示的真值表,具体取决于显示字体要求。在该表中,除了BCD代码的10个状态与Ya至Yg状态之间的对应关系之外,还指定了在6个状态:1010至1111中显示不同的字形[7]。如表3.3.4所示。表3.3.4BCD七段译码器的真值表在实验平台中,数码管不单单显示数字,显示的数字也正表明当前第几个模块在工作。这样能更加清晰直观的表明当前到底是哪个数字逻辑在工作。3.4时序逻辑电路3.4.1计数器计数是一种最简单基本的运算,计数器是实现这种操作的逻辑电路。在数字系统中,计数器主要对脉冲数进行计数以提供测量,计数和控制功能以及分频。计数器由一个基本的计数单元和几个控制门组成,该计数单元由一系列具有存储信息能力的各种触发器组成。这些触发器包括RS触发器、T触发器、D触发器和JK触发器等[10]。计数器广泛用于数字系统。例如,计算机控制器对指令地址进行计数,以便可以按顺序检索下一条指令。当算术单元执行乘法、除法运算时,记录加法和减法的次数。计数设备中的脉冲计数器就是实现这种运算的逻辑电路。计数器可以用来显示产品的工作状态[12]。下面以六进制计数器为例介绍,代码如图3.4.1所示。图3.4.1六进制计数器代码3.4.2分频计分频器是一种电子电路,它使输出信号频率成为输入信号频率的整数分之一。许多电子设备,例如电子时钟和频率合成器,需要不同频率的信号一起工作。一种常用的方法是使用稳定的晶体振荡器作为主要的振动源,而分频器是转换的主要手段[23]。早期的分频器主要是正弦分频器,但是随着数字集成电路的发展,脉冲分频器(也称为数字分频器)已逐渐将正弦分频器取代。偶数分频器偶数分频器比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得N(偶)分频[21]。以6分频为例,代码如图3.4.2所示。图3.4.2六分频计代码(2)奇数分频器 奇数分频比偶数分频更复杂,尤其是占空比为50%的奇数分频。在奇数分频的早期阶段,需要两个always模块,这两个always模块的输出分别为clk_out1、clk_out2。使用了两个count1、count2。clk_out1的输出是由分频时钟的上升沿触发的计数输出的结果。这也需要一个计数器模块和一个复位信号。复位后,输出和计数将如下所示:当所有零为零且计数达到count=(N-1)/2时clk_out1翻转。如果count=N-1,则清除计数器,并且clk_out翻转。clk_out2的计数器和输出与count1和clk_out1相同,除了它在分频时钟的下降沿触发。最总的结果是clk_out=clk_out1|clk_out2,得到两个波形,然后把它们相或即可得到N分频[21]。以5分频为例,代码如图3.4.3所示。图3.4.3五分频计代码(3)任意占空比的任意分频现在在前面两个实验的基础上做一个简单的总结,实现对一个频率的任意占空比的任意分频。比如:FPGA系统时钟是50MHz,要产生的频率是880Hz,需要对系统时钟进行分频。很容易想到用计数的方式来分频:50000000/880=56818。那么可以设定一个参数,让它到56818的时候重新计数就可以实现了[21]。程序如图3.4.4所示。图3.4.4889Hz分频计比如还是由50M分频产生880Hz,而分频得到的信号的占空比为30%。那么有56818×30%=17045,计数器到17045的时候重新计数就可以实现了。程序如图3.4.5所示。图3.4.530%占空比分频计3.4.3序列信号发生器传输数字信号和测试数字系统有时需要一组特定的串行数字信号。这种类型的串行数字信号通常称为串行信号。产生顺序信号的电路称为顺序信号发生器[17]。建立序列信号发生器的方法有很多种。一种相对简单直观的方法是使用计数器和数据选择器。例如,如果需要生成一个8位序列信号000010111(从左到右的时间序列),则可以使用一个8进制计数器和一个8选1数据选择器对其进行配置,如图3.4.11所示。其中八进制计数器取自74LS161(4位二进制计数器)的低3位74LS152
是8选1数据选择器[23]。如图3.4.6所示。图3.4.68选1数据选择器当CLK信号连续不断地加到计数器上时,Q2Q1Q0的状态(也就是加到74LS152上的地址输入代码A2A1A0)便按照表6.3.8中所示的顺序不断循环,D’0~D’7的状态就循环不断地依次出现在Y’端。只要令D0=D1=D2=D4=1.D3=D5=D6=D7=0,便可在Y’端得到不断循环的序列信号00010111[26]。在需要修改序列信号时,只要修改加到D0~D7的高、低电平即可实现,而不需对电路结构做任何更动。因此,使用这种电路既灵活又方便。如表3.4.1所示。表3.4.1状态转换表形成序列信号发生器的另一种常用方法是使用具有反馈逻辑的移位寄存器。如果序列信号具有m位,而移位寄存器具有n位,则>=m[14]。如果需要生成一组8位序列信号,例如00001111,使用3位的移位寄存器和反馈逻辑来形成所需的序列信号发生器,如图3.4.12所示。从移位寄存器的Q2端输出的串行输出信号则是所需的串行信号。如图3.4.7所示。图3.4.7用移位寄存器构成的序列信号发生器可以根据需要生成的序列信号,列出移位寄存器应具有的状态转换表,如表3.4.1所示。再从状态转换要求为起点,获取移位寄存器的输入端子D0取值的要求[29]。如表3.4.1中所示。表中也同时给出了D。与Q200。之间的函数关系。利用图3.4.13所示的卡诺图将D。的函数式化简,得到如图3.4.8所示。图3.4.8D。的卡诺图Verilog代码实现,如图3.4.9所示。图3.4.9序列信号发生器代码3.5原理图原理图最上面的排线是I/O接口,定义成双向端口,既可以作为输入,又可以作为输出,避免了在给每个芯片分配管脚时需要单独定义输入输出引脚的麻烦。利用自定义的基于FPGA的I/O接口,可以实现信号处理、仿真、触发和控制等任务.I/O接口下面就是主电路图。如图3.5所示。图3.5主电路原理图3.6引脚分配确定了I/O端口的类型及数量,点击Assignments->PinPlanner来给FPGA芯片的I/O端口分配引脚。如图3.6所示。图3.6引脚分配图4仿真验证4.1波形仿真验证4.1.1原理图编译原理图画完后,将文件保存好,开始进行编译,在菜单栏里依次点击Processing->StartCompilation,或者直接点工具栏中开始编译的图标。开始编译。如图4.1.1所示。图4.1.1原理图编译出现如下图所示,没有错误(warning不算在错误内,不影响编译,可以忽略),表示编译成功;若出现errors错误,需要进行调试改正,直到编译通过,没有错误。如图4.1.2所示。图4.1.2编译调试4.1.2建立波形仿真文件使用QuartusⅡ进行波形仿真需要创建一个VWF波形文件,File->New->UniversityProgramVWF。如图4.1.3所示。图4.1.3建立波形文件4.1.3插入波形图源文件点击菜单栏Edit->Insert->InsertNodeoffile插入要仿真的原理图。如图4.1.4所示。图4.1.4插入波形文件点击NodeFinder,先点List,再点>>,之后点OK,仿真实验结果,如图4.1.5和图4.1.6所示。图4.1.5与门仿真结果图4.1.6插入电路元器件4.1.4运行结果仿真波形图,调整输入波形来获取实验结果。如图4.1.7所示。图4.1.7成功导入波形图4.2实验波形仿真验证4.2.1与门与门是基本逻辑门之一,它有两个输入信号,一个输出信号,信号之间关系为&,当且仅当两个输入信号都为高电平时,输出高电平,否则为低电平。如下图给出了仿真波形,只有当in1和in2都为高电平时,out才为高电平,其余情况则为低电平。如图4.2.1所示。图4.2.1与门仿真结果4.2.2或门或门是基本逻辑门之一,它有两个输入信号,一个输出信号,信号之间关系为|,当两个输入信号中至少有一个为高电平时,输出高电平,否则为低电平。如下图给出了仿真波形,只要当in1和in2至少一个为高电平时,out才为高电平,其余情况则为低电平。如图4.2.2所示。图4.2.2或门仿真结果4.2.3非门非门是基本逻辑门之一,它有一个输入信号,一个输出信号,信号之间关系为~,当输入信号为高电平时,输出高电平,反之为低电平。如下图给出了仿真波形,如图4.2.2所示。图4.2.3非门仿真结果4.2.474HC138译码器设置信号,G1高电平,G2两个都是低电平,然后设置ABC。ABC:00012345678:LHHHHHHH符合实验结果,波形如图4.2.4所示。图4.2.4波形仿真(1)ABC:11112345678:HHHHHHHL符合实验结果,波形如图4.2.5所示。图4.2.5波形仿真(2)ABC:00112345678:HLHHHHHH符合实验结果,波形如图4.2.6所示。图4.2.6波形仿真(3)其它情况的仿真波形经检验,都符合实验结果,满足要求,这里不再赘述。4.2.574HC148编码器74HC148的功能:信号低电平有效,CS,E0用来识别电路的不同状态。输入E1=1,电路禁止编码,输出CS=1,E0=1。输入E1=0,允许编码,输入无效信号111_1111,则输出CS=1,E0=0。编码工作的优先级:7>6>5>4>3>2>1>0。CS=0时编码工作有效,CS=1编码工作无效。E0是使能输出端,用于级联,无有效输入时置为0(有效)。具体引脚功能分配如图4.2.7所示。图4.2.774HC148引脚功能图在E1=0电路正常工作状态下,允许0~7当中同时有几个输入端为低电平,既有编码输入信号。7的优先级最高,0的优先级最低。当7=0时,无论其他输入端有无输入信号(以X表示),输出端只给出7的编码。(1)01234567:xxxxxxx0ABC:LLL符合实验结果,波形如图4.2.8所示。图4.2.8波形仿真(1)(2)01234567:xxxxxxx01ABC:001符合实验结果,波形如图4.2.9所示。图4.2.9波形仿真(2)(3)01234567:xxxxx011ABC:010符合实验结果,波形如图4.2.10所示。图4.2.10波形仿真(3)其它情况的仿真波形经检验,都符合实验结果,满足要求,这里不再赘述。4.2.674HC153数据选择器四选一数据选择器是从4个输入数据中选择出一个送到输出端输出。74HC153有两个完全相同的四选一数据选择器,这里以其中一个选择器的波形进行分析。波形分析如图4.2.11所示。图4.2.11四选一数据选择器4.2.7六进制计数器六进制计数器可以实现每六个电平脉冲记一次数的功能。如图4.2.12所示。图4.2.12六进制计数器仿真图4.2.8偶数分频计这里以六分频计为例,六分频计可以实现将一定频率输入六分频输出,可以得到特定的所需频率。如图4.2.13所示。图4.2.13六分频计仿真4.2.9奇数分频计这里以五分频计为例,五分频计可以实现将一定频率输入五分频输出,可以得到特定的所需频率。如图4.2.14所示。图4.2.14五分频计仿真4.3RTL视图RTL意思是RegisterTransferLevel,寄存器传输级,简单的说就是可以综合的代码[15]。这里先以与门为例,代码如图4.2.2所示。图4.3.1Verilog代码利用QuartusII内置的tools即可生成RTL视图。可以用来参考,将生成的RTL视图与自己思考得出的原理图进行比较,用来验证设计。而在QuartusII工具中综合后生成的电路图,可参考,但不可全部相信。4.3.1与或非门如图4.3.2、图4.3.3和图4.3.4所示。图4.3.2与门RTL视图图4.3.3或门RTL视图图4.3.4非门RTL视图4.3.2六进制计数器这里以六进制计数器为例来介绍。如图4.3.5所示。图4.3.5六进制计数器RTL视图4.3.3偶数分频计这里以六分频计为例。如图4.3.6所示。图4.3.6六分频计RTL视图4.3.4奇数分频计这里以五分频计为例。如图4.3.7所示。图4.3.7五分频计RTL视图4.3.5序列信号发生器如图4.3.8所示。图4.3.8序列信号发生器RTL视图5实物设计与制作。数字电路设计完成,开始进行实物设计,制作PCB板。这里主要使用立创EDA软件进行绘图。2018年的“中兴事件”中[24],美国除了停止向中兴提供核心芯片以外,而且还限制Cadence向中兴提供软件服务,这意味着即使中兴想要设计芯片,失去了基础的EDA软件,也将无从下手。立创EDA是专门为中国人定制的在线电子设计工具与电路板开发平台。立创EDA没有版权问题,彻底解决了大部分国人使用EDA的版权风险[19]。是一款比较好的软件5.1PCB设计5.1.1PCB原理图原理图文件是创建一个原理图最基本的过程,立创EDA上面有上百万的元器件库,基本可以满足设计的需求。立创EDA上有两个库选取的路径,分别是基础库和元件库。(1)基础库在基础库中,包含了电容、电阻、接插件等常用器件,在选择器件时在右下角会出现一个倒三角形,展开可以看到该原理图对应的一些常用封装,在这里直接选用所需要的封装。选中器件后在所选器件上点击鼠标左键就可以在右边的图纸上放置原理图器件了。如图5.1.1所示。图5.1.1基础库(2)元件库除了基本元件库之外,立创EDA设置了元件库查找功能,将立创商城上在售的所有器件的原理图和封装库都提供给用户进行使用,除此之外我们也可以使用所有用户所使用的原理图和封装库。如图5.1.2所示。图5.1.2元件库下面是完成的原理图设计,如图5.1.3所示。图5.1.3PCB原理图5.1.2PCB板图当原理图设计完成之后接下来该进行PCB设计了。选择主菜单栏的“转换”按钮,选择“原理图转PCB”就可以生成一个PCB文件了;但如果事先已经有了PCB文件,在画图过程中对原理图进行修改的话只需要选择“转换”按钮下的“更新PCB”即可。如果同一工程存在多个原理图或PCB时,可以在转成PCB或更新PCB时选择相应的PCB就可以了。生成PCB文件后会出现一个PCB绘图区,背景和网格都可以在右边的属性框修改,在生成相应原理图的封装之后还会默认生成一个参考边框,可以自行修改或删除。如图5.1.4所示。图5.1.4原理图转PCB5.1.3PCB布局布线(1)PCB布局在进行PCB布线前需要对器件进行一个大概的布局。根据原理图的器件在PCB图上选择器件进行布局。5.1.2PCB布线在下图5.1.5的“层与元素”选择所要连接线的层,若选中顶层时,会看到顶层红色方框内会有一支笔指示,如果需要隐藏哪一层的话只需要点击对应层右边的眼睛将其隐藏即可。如图5.1.5所示。图5.1.5PCB层在PCB图纸页面还有一个“PCB工具”的悬浮窗,在这个窗口上可以选择导线、焊盘、过孔、覆铜等基本功能。如图5.2.2所示。图5.1.6层管理器最终的PCB板图如图5.1.7所示。图5.1.7PCB板图5.2板子的焊接与调试如图5.2所示。图5.2板子的焊接与调试6实物验证将设计好的原理图和程序导入开发板中,进行功能的测试和验证。如图6所示。图6板子验证7实验结论设计最终完成后,得到调试、验证成功的板子,该板子即为基于FPGA的数字虚拟实验平台。利用该开发板,根据实验要求,只需更改FPGA内部引脚及逻辑关系,通过I/O接口即可实现多种数字芯片的功能。利用该虚拟实验平台,可以只凭借一块FPGA数字电路,虚拟实现不同数字芯片的逻辑功能,达到同一个芯片底座实现不同芯片的功能,并且可以实现多个独立逻辑电路的工作。I/O(1)I/O(1)学生端I/O学生端I/O(2)FPGAFPGAI/OI/O(3)I/OI/O(4)参考文献[1]潘松,黄继业,潘明编著,EDA技术实用教程:VerilogHDL版,2015.[2][日]田野秃英晴,赵谦,FPGA原理和结构,2019,3.[3]阎石.数字电子技术基础(第六版).高等教育出版社.ISBN978-7-04-044493-3.2017.6.[4]N.Grover,M.K.Soni,“ReductionofPowerConsumptioninFPGAs-anOverview”,I.J.InformationEngineeringandElectronicBusiness,FrameworkforRapidFPGAPrototypingLondon,UnitedKingdom:ImperialCollegeLondonElectricalandElectronicEngineeringdepartment5,pp.50-69,2012.[5]B.Rashidi,“FPGAImplementationofDigitalControllerforSimpleandMaximumBoostControlofThreePhaseZ-SourceInverter”,I.J.InformationTechnologyandComputerScience,04,pp.85-95,2013.[6]徐一楠,赵雷.基于CPLD/FPGA的数字课程研究[J].现代电子技术,2019,16(22):2-3.[7]许成哲,彥吉.数字芯片设计在数字电路实验教学中的研究[J].延边大学,2019:1-2.[8]易春燕.基于FPGA的数字电路_口袋实验室[D].武汉:华中科技大学,2013:1-68.[9]曹晓娟.基于FPGA的数字比相技术研究与开发[D].西安理工大学.2018,15(1):87-91.[10]李宏杰,段德功.基于FPGA的“数字电子技术”教学改革研究[J].无线互联科技.2019年12期.[11]王媛媛,刘宁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外西瓜活动方案策划(3篇)
- 拔管施工方案(3篇)
- 新型护栏施工方案(3篇)
- 桩基打孔施工方案(3篇)
- 欧式门柱施工方案(3篇)
- 池塘隔水施工方案(3篇)
- 泥塘施工方案模板(3篇)
- 海口拆除施工方案(3篇)
- 游乐活动宣传方案策划(3篇)
- 烧结原料施工方案(3篇)
- 新高考数学之圆锥曲线综合讲义第26讲外接圆问题(原卷版+解析)
- 癌症患者生活质量量表EORTC-QLQ-C30
- QCT55-2023汽车座椅舒适性试验方法
- 孕产妇妊娠风险评估表
- 消化系统疾病健康教育宣教
- 河南省洛阳市2023-2024学年九年级第一学期期末质量检测数学试卷(人教版 含答案)
- Unit-3-Reading-and-thinking课文详解课件-高中英语人教版必修第二册
- 新版出口报关单模板
- 14K118 空调通风管道的加固
- 加油站财务管理制度细则
- 全过程工程咨询服务技术方案
评论
0/150
提交评论