版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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_PINS"ASINPUTTRI-STATED"
set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF
set_location_assignmentPIN_2-toled1
set_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例化元件名ISPORT(例化元件端口名表);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,TotalMemorySize可以选择4Kbytes,如下图所示:
按Finish确认,返回SOPCBuilder界面,下图。
双击PIO(在ParallelI/O)(在AvalonModules->Other下),为系统添加输出到LED的输出接口。Width选择2bits,如下图所示:
然后点击Finish,返回SOPCBuilder界面,下图所示。
然后,选择System->Auto-AssignBaseAddresses,让系统自动分配基地址。如下图所示。
然后,选择Sysetm->Auto-AssignIRQs,让系统自动分配中断,如下图所示。
点击NiosIIMore“cpu_0”settings选项卡,进行处理器设定。在该例中,无需做任何更改;ResetAddress、ExceptiongAddress、BreakLocation默认值如图所示。
点击SystemGeneration选项卡,进行最后的设定并生成系统。选中HDL.GeneratesystemmodulelogicinVerilog,如果需要仿真,也请选中Simulation.CreateModelSim(tm)projectfiles,然后点击Generate,执行系统生成的任务,如图所示。
然后,耐心地等待系统的生成。一般没有问题的话,可以看到系统提示:SUCCESS:SYSTEMGENERATIONCOMPLETED.如果看到此信息,系统被正确生成了。如果失败,请返回并检查、修改。系统成功生成如图所示。然后点击Exit退出SOPCBuilder。
4、在QuartusII工程中添加上述niosII系统。
类似往QuartusII工程添加功能模块,将所定制的NiosII软核CPU添加到本例工程中,即双击工程顶层图空白处,弹出Symbol对话框,在Project下面可以找到刚才建立的niosii_c模块(下图)。
5、添加PLL模块。
从QuatusII的库中添加一个锁相环(PLL)模块,以将外部时钟倍频后输送给CPU。
6、添加其它元件模块
本例分别添加clk和reset输入、led[1..0]输出。并相互连接。如图所示。
7、设置编译选项
建立并运行tcl脚本语言定义管脚。
对于EP1C12核心板,tcl管脚配置文件为:
#Setup.tcl
#SetuppinsettingforEP1C12mainboard
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASINPUTTRI-STATED"
set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF
set_location_assignmentPIN_28-toclk
set_location_assignmentPIN_159-toreset
set_location_assignmentPIN_1-toled\[0\]
set_location_assignmentPIN_2-toled\[1\]
8、编译该工程并通过Flash下载口下载到EPCS4芯片中注意是下载到EPCS4芯片,目的是在FPGA芯片中建立硬件系统,为后来的软件调试做好准备9、设计该工程的软件
在SOPCBuilder中,打开Tools→SOPCBuilder,运行NiosIDE,如图所示。
在NiosIIIDE中,选择File->New->Project,开启NewProject对话框,选择C/C++Application,然后选择Next,进入下一步,在模板中选择HelloLED。点击“SOPCBuilderSystem”右边的“Browse”按钮打开目录对话框,从该工程目录下找到“niosii_c.ptf”,因为NiosIIIDE必须从这个文件获取该系统的相关信息。按Finish,即建立一个名为Hello_LED_0的模板。打开项目中的文件:hello_led.c,根据需要进行修改,在本例中,我们模板的程序改写为以下内容:intalt_main(void){alt_u8led=0x2;volatileinti;while(1)
{
for(i=0;i<300000;i++);
led=0x1;
*(unsignedint*)PIO_0_BASE=led;
for(i=0;i<300000;i++);
led=0x2;
*(unsignedint*)PIO_0_BASE=led;
}
return0;
}
10、编译设置编译之前我们先对项目进行一些设置,以使编译器编译出更高效、占用空间更小的代码。右键点击hello_led_0工程名称,在弹出的菜单中选择“Properties”,点击后打开工程属性(Propertiesforhello_led_0)对话框,在“ConfigurationSettings”点击“General”页面,选择“”在“OptimizationLevel”中选择“Optimizesize(-Os)”,点击OK退出对hello_led_0工程属性的设置。
然后,再设置hello_led_0_syslib[niosii_c]工程。右键点击hello_led_0_syslib[niosii_c]工程名称,在弹出的菜单中选择“Properties”。
点击后打开工程属性(Propertiesforhello_led_0_syslib)对话框,在“ConfigurationSettings”点击“General”页面,在“OptimizationLevel”中选择“Optimizesize(-Os)”。
然后,点击该对话框的“SystemLibrary”打开Systemlibrary属性页面,在“Maxfiledescriptors:”栏改为4,清除“Cleanexit(flushbuffers)”和“Linkwithprofilinglibrary”,选上“Reduceddevicedrivers”和“SmallClibrary”。点击OK完成设置。以上设置主要目的是为了优化程序,并减少程序占用内存空
间。
11、编译右键点击“hello_led_0”,在弹出的菜单中选择“BuildProject”。(为使编译过程更加顺利,此时最好关闭杀毒软件和其它占用电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度打胶工程物资采购合同
- 成都沙盘模型2024年度合作研发协议
- 2024年度建筑施工进度控制合同
- 二零二四年度电子产品制造与销售合同
- 二零二四年度茶园与茶叶博物馆建设捐赠合同
- 废品买卖合同3篇
- 2024年度技术开发合作合同技术成果归属及权益分配
- LED显示屏安装合同范文
- 二零二四年度窗帘设计著作权保护与授权合同
- 2024电商平台绿色环保与可持续发展协议
- 人教部编版六年级道德与法治上册第6课《人大代表为人民》精美课件
- 期末 (试题) -2024-2025学年外研版(三起)(2024)英语三年级上册
- 第五单元测试卷(单元测试)2024-2025学年统编版语文四年级上册
- 《金融科技概论(第二版)》高职全套教学课件
- 心衰健康宣教课件
- 药事管理学实践报告总结
- 2024年大学计算机基础考试题库附答案(完整版)
- (2024年)传染病培训课件
- 沙盘游戏大纲
- 餐厅小票打印模板
- 物理化学实验B智慧树知到课后章节答案2023年下北京科技大学
评论
0/150
提交评论