您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > FPGA逻辑设计实验
第7章FPGA逻辑设计实验本章的系列实验都是针对XilinxSpartan-3E开发板所设计的,随书光盘将给出各个实验的源程序。7.1实验一熟悉Xilinx开发工具7.1.1实验介绍本实验主要介绍Xilinx的开发工具——ISE的使用。7.1.2实验目标-了解FPGA的开发流程;-熟悉Spartan-3E开发套件的功能特点;-清楚PicoBlaze8位控制器的特性;7.1.3实验过程本实验包含五个主要的部分:使用ISE集成环境创建一个新的工程;添加设计文件到工程中;编译设计;仿真设计;实现设计。每个部分都有对应的详细步骤,并有图表辅助说明步骤的内容。读者可以按照详细步骤一步一步完成实验,也可以按照大的实验部分自行完成。7.1.4实验步骤首先,阅读PicoBlaze的说明文档,以便熟悉8位微控制器的体系结构和编译系统,可参考“..\KCPSM3\docs\”目录下的KCPSM3_manual.pdf文档。本系列实验将使用基于PicoBlaze处理器的设计,举例说明ISE设计流程及与其相关的各个重要工具。一、启动ISE创建一个新的工程1.选择“开始Æ程序ÆXilinxISE9.1i”或直接在桌面双击XilinxISE9.1i的图标,打开ISE9.1集成环境。2.在ISE中,选择菜单栏中的FileÆNewProject打开创建新工程界面,如错误!未找到引用源。1所示。图7.1创建新工程界面3.工程名称填写栏里输入Flow_Lab;工程存放位置,选择“…”按钮指定到下列目录之一,然后点击OK。•Verilogusers:c:\xup\fpgaflow\labs\verilog\lab1•VHDLusers:c:\xup\fpgaflow\labs\vhdl\lab14.点击Next,将出现器件和设计工具选择对话框(图7.2)。图7.2工程属性参数5.在图7.2中选择下列参数,并点击Next。•DeviceFamily(器件类别):Spartan3E•Device(器件型号):xc3s500E•Package(封装):fg320•SpeedGrade(速度等级):–4•SynthesisTool(综合工具):XST(VHDL/Verilog)•Simulator(仿真工具):ISESimulator(VHDL/Verilog)•PreferredLanguage(偏好语言):VerilogorVHDL(selectyourpreference)将会出现创建新文件的对话框(图7.3),在这个对话框里可以定义模块名称、端口来创建一个新的源HDL文件。本实验用到的所有源文件已被创建好了。图7.3创建新文件对话框6.点击Next,将会出现添加已有文件的对话框(图7.4)。图7.4添加已有文件对话框二、添加HDL源文件到工程1.点击AddSource浏览c:\xup\fpgaflow\KCPSM3\VHDLorVerilog目录。2.选择VHDL/Verilog文件kcpsm3_int_test和kcpsm3并点击Open。3.点击Next,然后点击Finish。将出现选择源文件类型对话框(图7.5)。图7.5选择源文件类型对话框4.点击OK,接受默认设置。注意:在分层显示列表中,你会发现名为int_test的模块带个红色问号标记。这个模块是个BlockRAM,包含PicoBlaze控制器的指令信息,将在随后的步骤中被添加。三、编译设计编写MY_AND2实体的VHDL代码。1.打开Windows搜索,在KCPSM3子目录(c:\xup\fpgaflow\KCPSM3\Assembler)里找到编译器(图7.6)。图7.6编译器目录内容2.使用诸如写字板这样的文本编辑器打开文件int_test.psm,查看代码,可参考PicoBlaze8-bitEmbeddedMicrocontrollerUserGuide或KCPSM3manual得到技术帮助。这些文档存放在Docs子目录。3.打开命令窗口(开始Æ程序Æ附件Æ命令提示符)。4.使用cd命令切换到Assembler目录(图7.7)。cdc:\xup\fpgaflow\KCPSM3\Assembler图7.7命令窗口新文件生成向导会按照用户输入的参数创建新文件,但是完成向导的操作后,对文件的全部后续修改都只能在HDL编辑器中修改。5.在命令提示符下输入以下命令,立即编译代码输出程序ROM文件。kcpsm3int_test.psm注意:在编译器子目录里,现在应该能看到几个以init_test*开头的文件,包括VHDL(int_test.vhd)和Verilog(int_test.v)程序ROM文件。6.在ISE集成环境里,打开ProjectÆAddCopyofSource并找到int_test.vhd或int_test.v文件(在c:\xup\fpgaflow\KCPSM3\Assembler路径)。(图7.8)图7.8添加int_testHDL程序ROM文件到工程7.点击Open,然后点击OK把INIT_TEST当作设计文件添加到工程。(图7.9)图7.9PicoBlaze设计的层次浏览窗口注意:顶层文件kcpsm3_int_test.vhd/v包含对int_test.vhd/v程序ROM文件的例化。添加完int_test.vhd/v之后,模块int_test上出现的红问号标记将会消失,因为这个模块不再是个黑盒子。四、仿真设计添加测试文件testbench.vhd/.v并阅读其代码。使用XilinxiSIM仿真工具完成行为级仿真并检查仿真结果。1.在ISE的Sources窗口,选择ProjectÆAddCopyofSource并找到c:\xup\fpgaflow\KCPSM3\vhdl(orverilog)目录。2.选择文件test_bench.vhd(ortestbench.v)并点击Open。3.选择SimulationOnly并点击OK,添加测试文件到工程。图7.10包含TestBench的层次浏览窗口4.选中testbench测试文件,在Processes窗口展开XilinxISESimulator仿真工具,右键点击SimulateBehavioralModel并选择属性Properties。5.SimulationRunTime选项下输入值25000并点击OK。图7.11图7.11iSIM行为级仿真属性6.双击SimulateBehavioralModel仿真设计。仿真结束后会出现两个窗口。一个窗口以波形方式显示仿真结果,另一个以HDL格式显示testbench文件。7.点击waveformtab查看仿真结果。缩放并仔细观察波形以确认模块仿真结果正确性。计数值中断程序启动中断向量中断确认产生中断图7.12中断服务程序写开始波形值波形开始图7.13输出波形注意:汇编目录下的int_test.log文件给出了每条指令的地址和译码。8.关闭simulatorwindows。点击Yes,确认退出仿真。五、实现设计实现设计,这个过程中将会生成一些报告。后面的实验将会详细查看其中一些报告。1.在Sources窗口中,选择Synthesis/Implementation,并选中顶层设计文件kcpsm3_int_test.vhd/v。图7.14所示:图7.14Sources窗口2.在Processes窗口双击ImplementDesign(图7.15)。ISE工具会运行所有需要的过程来实现设计,在实现之前首先运行综合。图7.15Processes窗口3.实现过程中点击ImplementDesign旁边的“+”展开实现步骤查看进展。每个阶段完成后,都会出现一个对应符号:•对号表示正确;•感叹号表示警告;•X表示错误。对于这个设计,在某些步骤可能会出现一个感叹号(警告),这里的警告是可以忽略的。4.在ISE集成环境的底部消息窗口阅读消息。5.实现结束后,在DesignSummary窗口查看设计的资源利用情况(图7.16)。图7.16设计概要7.1.5实验总结在本实验中,我们创建了一个简单的逻辑门模块,这个模块在上层的模块中被调用,模块之间通过信号相连。读者通过这个简单的实验,接触了使用VHDL编程的一些基本技术和方法,这些方法会在后续的工程中经常使用。7.2实验二结构体生成向导和PACE7.2.1实验介绍本实验主要介绍结构体生成向导和PACE的使用。7.2.2实验目标-使用结构生成向导配置一个DCM;-例化DCM;-使用PACE指定引脚位置;-实现设计并确认引脚分配生效;-下载并测试硬件设计。7.2.3实验过程本实验包含四个主要的部分:使用结构体生成向导配置一个DCM;例化DCM到VHDL/Verilog设计中;使用PACE指定引脚位置;实现、下载设计并最终通过硬件测试设计。7.2.4实验步骤一、使用结构体生成向导配置一个DCM打开已有工程,使用结构体生成向导配置一个DCM模块输出55MHz时钟。1.选择“开始→程序→XilinxISE9.1i→ProjectNavigator”,打开ISE9.1集成环境。2.在ISE中,选择菜单栏中的File→OpenProject。3.指定到以下目录并选择arwz_pace.ise。•Verilogusers:c:\xup\fpgaflow\labs\veriloglab2\arwz_pace•VHDLusers:c:\xup\fpgaflow\labs\vhdl\lab2\arwz_pace4.点击Open。5.在Processes窗口,双击CreateNewSource。如果没有看到CreateNewSource过程,请检查是否在Source窗口选择了一个HDL源文件。6.在新文件窗口,选择IP(CoreGen&ArchitectureWizard)并输入my_dcm作为文件名。7.点击Next。8.在选择Core类型窗口,展开FPGAFeaturesandDesignJClockingJSpartan-3E,Spartan-3A并选择SingleDCMSPv9.1i。(图7.17)图7.17结构体类型选择9.点击Next,然后点击Finish。10.在XilinxClockingWizard–GeneralSetup窗口,设置以下选项(图7.18):•CLK0,CLKFX和LOCKED选项框:选中•RST选项框:不选•InputClockFrequency(输入时钟频率):50MHz图7.18XilinxClockingWizard–GeneralSetup窗口注意:在时钟向导中定义一个时钟频率,向导便可知道DCM工作在高频或低频模式。基于输入频率,向导会计算出输出频率以确保输入输出频率在定义范围内。另外,如果使用CLKFX,输入频率将被用来计算在CLKFX上的输出频率并计算预计抖动。11.点击Next。12.在XilinxClockingWizard–ClockBuffers窗口(图7.19),接受默认选项并点击Next。图7.19XilinxClockingWizard–ClockBuffers窗口13.在XilinxClockingWizard–ClockingFrequencySynthesizer对话框(图7.20),输入55Mhz作为输出频率,点击Next然后点击Finish。图7.20定义DCM的输出频率注意:如果在设计层次中没有看到my_dcm.xaw,通过ProjectÆAddSource手动添加。新文件(my_dcm.xaw)将被当作源文件加进工程(图7.21)。被例化到HDL文件中之后,这个新文件才会出现在设计层次中。图7.21DCM出现在层次设计列表二、例化DCM上一步已经创建了所需的文件,因而现在就可以例化DCM。从例化模板中复制粘贴文本信息到uart_clock.vhd并连接信号。1.在Sources窗口,双击uart_clock.vhd打开文件内容。2.在Sources窗口选中my_dcm.xaw。3.在Pro
本文标题:FPGA逻辑设计实验
链接地址:https://www.777doc.com/doc-5016153 .html