FPGA入门实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

FPGA基础实验部分实验一基本IO实验一、实验目的(1)学习QuartusⅡ5.0的基本操作。(2)熟悉教学实验板的使用。(3)初步掌握vhdl语言的设计输入,编译,仿真和调试过程。二、实验原理利用一个常开按钮(实验板上的KEY1)作为输入(常开时输入1,闭合时输入0),经过一个反相器后输出到核心板的一个LED。KEY1常开时,LED灭,按下(闭合)实验板上的KEY1,该LED点亮。三、实验步骤1、建立工程运行QuatrusII软件,建立工程,File→NewProjectWizad。如图下图所示。点击NewProjectWizard后弹出指定工程名的对话框,在Diectory,Name,Top-LevelEntity中如图下图填写。按Next按钮,直到出现选择器件的对话框(下图),按图示选择器件。然后一直按Next进行,最后按Finish按钮即建立一个空项目。2、建立顶层图执行File→New,弹出新建文件对话框(下图所示)。选择“BlockDiagramSchematicFile”按OK即建立一个空的顶层图,缺省名为“Block1.bdf”,我们把它另存为(File→Saveas),接受默认的文件名,并将“Addfiletocurrentproject”选项选上,以使该文件添加到工程中去。如下图所示:3、添加逻辑元件(Symbol)双击顶层图图纸的空白处,弹出添加元件的对话框(下图):在Libraries里寻找所需要的逻辑元件,如果知道逻辑元件的名称的话,也可以直接在Name一栏敲入名字,右边的预览图即可显示元件的外观,按OK后鼠标旁边即拖着一个元件符号,在图纸上点击左键,元件即安放在图纸上。在图纸上分别添加非门(not)、输入(input)、输出(output)三个symbol,连线,将鼠标移到symbol连线端口的那里,按下左键拖动鼠标到另一个symbol的连线端。如下图所示:分别双击input和outputsymbol的名字“pin_name”、“pin_name1”,将它们的名字改为Key1,LED1。4、分配管脚为芯片分配管脚可以用QuartusII软件里的“Assignments→Pins”菜单,也可以用tcl脚本文件。本文介绍用tcl的方法。在工程目录下建立一个name为Setup.tcl的file。File→New,选择otherfiles页面(下图):有关tcl文件的更详尽内容可参考QuartusII的帮助文档。在实际项目中,该文件也可以根据具体管脚分配要求来改写。对应于EP1C12核心板:set_global_assignment-nameRESERVE_ALL_UNUSED_PINSASINPUTTRI-STATEDset_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFFset_location_assignmentPIN_2-toled1set_location_assignmentPIN_122-tokey1•保存到工程目录下,并注意在保存对话框选上“Addfiletocurrentproject”选项。•然后打开Tools-TclScripts,选中刚才编辑的Script文件:Setup,并点击Run,如图所示:5、设置根据核心板的FPGA选择芯片型号,如上图所示选择EP1C12Q240C8。点击设置对话框的“Device&PinOptions”按钮弹出Device&PinOptions对话框,并选择该对话框的Configuration标签页,如下图所示。6、编译按主工具栏上的编译按钮即开始编译,如下图所示。QuartusII下面的Message窗口会显示一些编译信息。7、下载(1)下载设置:如果第一次使用下载线下载配置文件到FPGA,则需要在Q2软件设置下载线的型号等信息。先将ByteBlasterII下载线的一头接到PC的并口,执行菜单Tools→Programmer(如下图所示)。打开下载界面,可看到NoHardware,表示还没有设置下载线,如下图所示。点击HardwareSetup,弹出“HardwareSetup”对话框(下图)。点击“AddHardware”,弹出“AddHardware”对话框(下图)。在Hardwaretype下拉列表选择“ByteBlasterMVorByteBlasterII”,点OK返回“HardwareSetup”对话框,从“Currentlyselectedhardware:”下拉列表选择ByteBlasterII[LPT1],点击“Close”返回下载界面,可看到下载线已经被添加(下图)。(2)将ByteBlasterII下载线一头与PC连接,另一头插入到JTAG口或EPCS4的下载口。(3)FPGA核心板接上5V电源。(4)如果只是调试一下设计是否成功,可通过JTAG口把芯片的配置信息下载到FPGA芯片内,掉电后配置信息丢失。此时,下载界面的“Mode:”下拉列表应选择“JTAG”,并选择工程中.sof后缀的文件进行下载。(注意记得在“Program/Configure”那个方框那里打上“√”,其它“Verify”、“BlankCheck”等可根据需要选择。)(5)如果要下载到非易失Flash配置芯片(掉电后配置信息不丢失)里去,则将ByteBlasterII插到EPCS4芯片的下载口。并在下载界面的“Mode:”下拉列表应选择“ActiveSerialProgramming”,并选择工程中.pof后缀的文件进行下载。8、结果在本例的设计中,我们利用一个常开按钮(实验板上的KEY1)作为输入(常开时输入1,闭合时输入0),经过一个反向器后输出到核心板的第一个LED;因此按下(闭合)实验板上的KEY1,该LED灭。该设计非常简单,目的就是为了更容易理解FPGA的设计流程和QuartusII软件的基本用法。四、思考题在本实验基础上,进行修改,用三个按键控制两个LED,一个按键控制LED全亮、一个按键控制LED全灭,一个按键控制两个LED交替点亮。五、实验报告根据以上的实验内容写出实验报告,包括设计原程序,仿真波形图及思考题。实验二7段数码管实验一、实验目的•1.进一步了解FPGA的设计流程和加深对QuatusII的使用。•2.熟悉和了解动态扫描数码管的工作原理和程序设计方法。•3.加强和熟悉VHDL语言的设计方法和特点,学会掌握常用的计数器,译码器的设计,功能宏模块使用方法。二、实验原理•1.开发板使用的是一个4位联体的共阳极7段数码管,动态扫描显示接口是数码管应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每个显示器的公共极COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,使各个LED轮流点亮。在轮流点亮的过程中,只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。2.当同时使用多个7段数码管输出多个字符时,需要依次将各个显示字符的数据分别送到每个数码上并且使能。因此,需要扫描电路依次选择每个7段数码管,扫描电路实际上就是一个计数器,以计数的方式达到选择切换的功能。为了将扫描电路的计数器输出到7段数码管,还需将计数输出再经过一个译码电路,因为使用共阳7段数码管,所以数码管只有在高电平时才有动作。所以,需要一个BCD多路选择器选择字符到相应的数码管上显示。最后再设计一个3-7数码管译码电路就完成了。3.元件例化语句元件例化就是将预先定义好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。当前实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这块电路板上准备接受芯片的一个插座。4.管脚映射:根据实验箱,将连接对应的管脚。元件例化语句由两部分组成,前一部分是将一个现成的设计实体定义为一个元件的语句,第二部分则是此元件与当前设计实体中的连接说明,语句格式如下:•--元件定义语句•COMPONENT例化元件名IS•PORT(例化元件端口名表);•ENDCOMPONENT例化元件名;•--元件例化语句元件例化名:例化元件名PORTMAP([例化元件端口名=]连接实体端口名,…);元件定义语句和元件例化语句在元件例化中都是必须存在的。元件定义语句相当于对一个现成的设计实体进行封装,使其只留出外面的接口界面,就像一个集成芯片只留引脚在外面一样。元件例化语句是把实体实例化,语句中的元件例化名相当于电路板上的一个插座名,例化元件名是定义好的元件名。PORTMAP是端口映射的意思,将当前实体的端口名与定义好的元件的端口名对应起来。元件例化语句中所定义的例化元件的端口名与当前实体的端口名对应的表达方式有两种:(1)名字关联方式:将例化元件的端口名与实体端口名通过关联符号“=”一一对应联系起来的方式;(2)位置关联方式:按例化元件端口的定义顺序将例化元件的对应实体的端口名一一列出的一种关联方式。三、实验步骤及内容•1.该程序分为计数器模块、译码模块、多路选择器模块和一个4-7译码模块,分别用VHDL语言描述各个模块的功能。•2.设计主电路模块,将VHDL语言描述的各个模块用元件例化的方式连接起来。•3.设计计数时钟系统时钟为50MHz,太快,使人眼无法识别数码管的变化。因此要对50MHz进行分频,还需要设计一个分频器。四、整体结构原理图如下:四、实验要求1.准备试验前查阅本试验相关的信息。2.构思程序设计方法。3.编写VHDL代码同时做程序注释。4.编译代码,并仿真程序(用QuartusII),与预想结果进行比较,修改程序。5.下载到试验平台上,观察结果。6.教师检查后整理好设备离开实验场地。五、实验报告要求1.给出BCD七段共阴极译码器的源程序。2.用元件例化语句描述顶层原理图。3.总结调试代码过程中遇到的问题,如何解决。4.谈谈在VHDL中,元件例化语句的作用。实验三NIOSII开发流程实例--LED显示•一、实验目的•(1)掌握NiosII软核的定制流程。•(2)掌握NiosII软件开发流程。•(3)熟识NiosIIIDE开发环境的使用。•(4)掌握基本的软件调试方法。•(5)学会使用Cyclone内部的PLL的使用方法。•二、实验原理•在本实验中,我们用软件来控制核心板上的两个LED交替闪烁。•三、实验步骤1、新建工程。新建一个工程目录“sopc_led”,在此目录下建立一个名为“sopc_led”的QuartusII工程,并新建一个顶层图,保存于工程中。2、用SOPCBuilder定制NiosII处理器及其外设。打开Tools→SOPCBuilder,要求指定系统名字,本例中我们输入niosii_c。按OK进入SOPC定制界面选择Target,本例选择UnspecifiedBoard。选择时钟频率,Clock(MHz):本例选50.0。选择目标器件系列,TargetDeviceFamily:本例选Cyclone。在SOPC定制界面的左边,我们可以看到有很多功能模块,这些功能模块用户可以按照需要添加到所设计的系统中。首先,我们需要一个CPU,双击NiosIIProcessor–AlteraCorporation弹出AlteraNiosII对话框,我们选择一个经济型的CPU核,即NiosII/e,如下图所示:点击JTAGDebugModule标签页,选择第一级调试支持Level1,下图。点击Finish完成NiosIICPU的配置工作。项目中会增加一个niosII处理器,名字为cpu_0,如下图所示。双击On-ChipMemory(RAMorROM),(在AvalonModules-Memory-下),为系统添加RAM。MemoryType选择RAM;DataWidth选择32bits,TotalM

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功