1、Lab2实验报告SJTU|F0905103Lab2实验报告王红宾 50905190611实验概述1.1实验名称FPGA基础实验2:4 bits binary counter with time divider1.2 实验目的1掌握Xilinx逻辑设计工具ISE的设计流程; 2掌握UCF(用户约束文件)的用法和作用; 3初步掌握使用VerilogHDL硬件描述语言进行简单的逻辑设计;4熟悉Xilinx Spartan 3E实验板卡。5学习分频器的编写,了解同步信号的工作过程。1.3实验范围本次实验将覆盖以下范围 1ISE的使用2iMPACT的使用3编辑UCF 4Spartan 3E实验板的使用5
2、使用VerilogHDL进行逻辑设计1.4注意事项1. 本实验的逻辑设计工具为Xilinx ISE11.1。1.5实验要求1用Verilog实现一个简单的带同步复位的4位2进制计数器2使用某种仿真器对该计数器进行仿真,本例中采用Xlinx ISE Simulator,也可使用ModelSim3为FPGA提供的高速时钟进行分频,为计数器提供慢速时钟。4将最终得到的解决方案使用Xlinx ISE 11.1进行综合,并在实验板上得到预期结果。2实验内容 2.1实验步骤1 启动ISE 11.1。2 选择File New Project 出现New Project Wizard。3 Project Na
3、me填写lab5,选择工程Project Location,Top-level Source Type选择HDL。点击Next。4. Device Properties 中各属性填写如下: Product Category: ALL Family: Spartan3E Device: XC3S500E Package: FG320 Speed: -4 Synthesis Tool: XST(VHDL/Verilog)Simulator: ISim (VHDL/Verilog) ,也可用Modelsim仿真。Preferred Language: Verilog 确认Enable Enhance
4、d Design Summary 已勾选 下一步,添加要新建的源代码文件。点击NewSource:在对话框中选择Verilog Moudle类型文件,命名为counter,并勾选Add to Project,如图:下一步,添加输入输出端口(注意要设置Direction),如图:下一步,查看信息无误后点击Finish完成新代码文件的创建。此时界面回到New Project Wizard。在此,单击下一步,出现添加已有代码的窗口,可直接下一步跳过。出现信息窗口,检查设置无误后点击Finish,如图:5.如下修改counter.v的代码并保存,实现带同步复位的4 Bits计数器,如图:6.运行仿真器
5、:在Hierarchy中选中counter.v,菜单栏中选择Project- New Source,选择Verilog Test Fixture,输入文件名countert,点击Next,如图:选择 counter模块,Next直到点击 Finish关闭对话框,如图 :在左上侧的Sources for:下拉菜单中选择Behavioral Simulation,然后修改新生成的countert模块的代码,使其如下图所示:在Processes中右键点击Simulate Behavioral Model然后选中Process Properties,更改Simulation Run Time值为500
6、ns,点击OK保存。双击Simulate Behavioral Model即可得到如下仿真波形:7. 在Source For:中选择implementation,双击打开counter.v。由于板子晶振提供的时钟频率速度较高,需要对时钟进行分频,可通过TimerDivider模块来实现。代码更改为如图并保存:8. 在Hierarchy窗口中选中 counter.v,在Processes 窗口 User Constraints 下的展开项中双击Creat Timing Constraints,弹出窗口提示创建 ucf 文件,点Yes。关闭Timing Constraints窗口,选中创建的cou
7、nter.ucf,在 Processes 窗口双击 Edit Constraints (Text) 打开文本编辑器在该UCF文件中输入端口映射的配置,将输出映射至LED,如图:9. 保存后,在菜单栏中Process下点击Implement Top Module,ISE会调用后台工具对工程进行综合和布线。此过程较慢,请注意下方输出窗口中的返回信息。如果成功完成,会有如下提示:选中Hierarchy窗口的 counter.v,在 Processes窗口中选择 Synthesize XST下面的 View RTL Schematic,右键或双击运行。查看产生的模块图:10. 双击左侧Generate
8、 Programming File,系统会自动生成二进制bit流文件counter.bit:11. 将 FPGA 开发板接入计算机,双击Configure Target Device 下的Manage Configuration Project(iMPACT)。会弹出如下图窗口:等待一段 时间,ISE将自动完成 Synthesize,Implement Design和 Generate Programming File。等 iMPACT软件启动后,双击 Boundary Scan ,在 iMPACT右侧窗口右键选择:Initialize Chain。会连续弹出三个对话框,第一个中选择刚刚生成的
9、 counter.bit文件,点击 Open。点击OK,出现如下视图:后两个对话框选择 Bypass或Cancel掉,继续点击 OK。出现图2-20这一步,点击No12.在 counter.bit的模块中右键 Program,在 Program Properties对话框直接点击 OK。等待屏幕出现蓝色Program Success的提示时,说明烧写成功。2.2验证FPGA开发板上 4个 LED,亮起代表该位为 1,灭掉代表该位为 0。四位 LED表示了 4位二进制数字,通过其变化观察计数过程。按下按钮中间的 ENTER键,可以控制计数器同步复位。3实验程序module timerDivide
10、r(clockIn, clockOut);input clockIn;output clockOut;reg clockOut;reg24:0 buffer;always(posedge clockIn)beginbuffer=buffer+1;clockOut=&buffer;endendmodulemodule counter(mianClock,reset,count);input mianClock;input reset;output3:0 count;reg3:0 count;wire slowClock;timerDivider td(.clockIn(mianClock), .
11、clockOut(slowClock);always (posedge slowClock)beginif (!reset)count=4b1111;elsecount=count-1;endendmodulemodule countert;/ Inputsreg mianClock;reg reset;/ Outputswire count;parameter DELY=20;/ Instantiate the Unit Under Test (UUT)counter uut (.mianClock(mianClock),.reset(reset),.count(count);always
12、#(DELY/2) mianClock=mianClock;initial begin/ Initialize InputsmianClock = 0;reset = 0;/ Wait 100 ns for global reset to finish#100;/ Add stimulus herereset=1b1;#(DELY*10) reset=1b0;#(DELY) reset=1b1;endendmoduleNET mainClock LOC=C9 | IOSTANDARD = LVCMOS33;NET count LOC=F11 | IOSTANDARD = LVTTL |SLEW
13、=SLOW |DRIVE=8;NET count LOC=E11 | IOSTANDARD = LVTTL |SLEW=SLOW |DRIVE=8;NET count LOC=E12 | IOSTANDARD = LVTTL |SLEW=SLOW |DRIVE=8;NET count LOC=F12 | IOSTANDARD = LVTTL |SLEW=SLOW |DRIVE=8;NET reset LOC = L13 | IOSTANDARD =LVTTL | PULLUP;4实验结论实验很顺利,成功实现了由程序控制LED灯有序亮灭。实验中产生的模块图如下:并通过修改实验程序实现了LED灯顺序和逆序的亮灭。这个实验中学习了分频器的编写,了解了同步信号的工作过程。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1