Lab2实验报告.docx

上传人:b****6 文档编号:5987801 上传时间:2023-01-02 格式:DOCX 页数:16 大小:1,005.11KB
下载 相关 举报
Lab2实验报告.docx_第1页
第1页 / 共16页
Lab2实验报告.docx_第2页
第2页 / 共16页
Lab2实验报告.docx_第3页
第3页 / 共16页
Lab2实验报告.docx_第4页
第4页 / 共16页
Lab2实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Lab2实验报告.docx

《Lab2实验报告.docx》由会员分享,可在线阅读,更多相关《Lab2实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

Lab2实验报告.docx

Lab2实验报告

SJTU | F0905103

Lab2实验报告

王红宾5090519061

1实验概述

1.1实验名称

FPGA基础实验2:

4bitsbinarycounterwithtimedivider

1.2实验目的

1.掌握Xilinx逻辑设计工具ISE的设计流程;

2.掌握UCF(用户约束文件)的用法和作用;

3.初步掌握使用VerilogHDL硬件描述语言进行简单的逻辑设计;

4.熟悉XilinxSpartan3E实验板卡。

5.学习分频器的编写,了解同步信号的工作过程。

1.3实验范围

本次实验将覆盖以下范围

1.ISE的使用

2.iMPACT的使用

3.编辑UCF

4.Spartan3E实验板的使用

5.使用VerilogHDL进行逻辑设计

1.4注意事项

1.本实验的逻辑设计工具为XilinxISE11.1。

1.5实验要求

1.用Verilog实现一个简单的带同步复位的4位2进制计数器

2.使用某种仿真器对该计数器进行仿真,本例中采用XlinxISESimulator,也可使用ModelSim

3.为FPGA提供的高速时钟进行分频,为计数器提供慢速时钟。

4.将最终得到的解决方案使用XlinxISE11.1进行综合,并在实验板上得到预期结果。

2实验内容

2.1实验步骤

1.启动ISE11.1。

2.选择File>NewProject…出现NewProjectWizard。

3.ProjectName填写lab5,选择工程ProjectLocation,Top-levelSourceType选择HDL。

点击Next。

4.DeviceProperties中各属性填写如下:

ProductCategory:

ALL

Family:

Spartan3E

Device:

XC3S500E

Package:

FG320

Speed:

-4

SynthesisTool:

XST(VHDL/Verilog)

Simulator:

ISim(VHDL/Verilog),也可用Modelsim仿真。

PreferredLanguage:

Verilog

确认EnableEnhancedDesignSummary已勾选

下一步,添加要新建的源代码文件。

点击NewSource:

在对话框中选择VerilogMoudle类型文件,命名为counter,并勾选AddtoProject,如图:

下一步,添加输入输出端口(注意要设置Direction),如图:

下一步,查看信息无误后点击Finish完成新代码文件的创建。

此时界面回到NewProjectWizard。

在此,单击下一步,出现添加已有代码的窗口,可直接下一步跳过。

出现信息窗口,检查设置无误后点击Finish,如图:

5.如下修改counter.v的代码并保存,实现带同步复位的4Bits计数器,如图:

6.运行仿真器:

在Hierarchy中选中counter.v,菜单栏中选择Project->NewSource,选择VerilogTestFixture,输入文件名countert,点击Next,如图:

选择counter模块,Next直到点击Finish关闭对话框,如图:

在左上侧的Sourcesfor:

下拉菜单中选择BehavioralSimulation,然后修改新生成的countert模块的代码,使其如下图所示:

在Processes中右键点击SimulateBehavioralModel然后选中ProcessProperties,更改SimulationRunTime值为500ns,点击OK保存。

双击SimulateBehavioralModel即可得到如下仿真波形:

7.在SourceFor:

中选择implementation,双击打开counter.v。

由于板子晶振提供的时钟频率速度较高,需要对时钟进行分频,可通过TimerDivider模块来实现。

代码更改为如图并保存:

8.在Hierarchy窗口中选中counter.v,在Processes窗口UserConstraints下的展开项中双击CreatTimingConstraints,弹出窗口提示创建ucf文件,点Yes。

关闭TimingConstraints窗口,选中创建的counter.ucf,在Processes窗口双击EditConstraints(Text)打开文本编辑器

在该UCF文件中输入端口映射的配置,将输出映射至LED,如图:

9.保存后,在菜单栏中Process下点击ImplementTopModule,ISE会调用后台工具对工程进行综合和布线。

此过程较慢,请注意下方输出窗口中的返回信息。

如果成功完成,会有如下提示:

选中Hierarchy窗口的counter.v,在Processes窗口中选择Synthesize–XST下面的ViewRTLSchematic,右键或双击运行。

查看产生的模块图:

10.双击左侧GenerateProgrammingFile,系统会自动生成二进制bit流文件counter.bit:

11.将FPGA开发板接入计算机,双击ConfigureTargetDevice下的ManageConfigurationProject(iMPACT)。

会弹出如下图窗口:

等待一段时间,ISE将自动完成Synthesize,ImplementDesign和GenerateProgrammingFile。

等iMPACT软件启动后,双击BoundaryScan,在iMPACT右侧窗口右键选择:

InitializeChain。

会连续弹出三个对话框,第一个中选择刚刚生成的counter.bit文件,点击Open。

点击OK,出现如下视图:

后两个对话框选择Bypass或Cancel掉,继续点击OK。

出现图2-20这一步,点击No

12.在counter.bit的模块中右键Program,在ProgramProperties对话框直接点击OK。

等待屏幕出现蓝色ProgramSuccess的提示时,说明烧写成功。

2.2验证

FPGA开发板上4个LED,亮起代表该位为1,灭掉代表该位为0。

四位LED表示了4位二进制数字,通过其变化观察计数过程。

按下按钮中间的ENTER键,可以控制计数器同步复位。

3实验程序

moduletimerDivider(clockIn,clockOut);

inputclockIn;

outputclockOut;

regclockOut;

reg[24:

0]buffer;

always@(posedgeclockIn)

begin

buffer<=buffer+1;

clockOut<=&buffer;

end

endmodule

modulecounter(

mianClock,

reset,

count

);

inputmianClock;

inputreset;

output[3:

0]count;

reg[3:

0]count;

wireslowClock;

timerDividertd(.clockIn(mianClock),.clockOut(slowClock));

 

always@(posedgeslowClock)

begin

if(!

reset)

count<=4'b1111;

else

count<=count-1;

end

endmodule

 

modulecountert;

//Inputs

regmianClock;

regreset;

//Outputs

wirecount;

parameterDELY=20;

//InstantiatetheUnitUnderTest(UUT)

counteruut(

.mianClock(mianClock),

.reset(reset),

.count(count)

);

always#(DELY/2)mianClock=~mianClock;

initialbegin

//InitializeInputs

mianClock=0;

reset=0;

//Wait100nsforglobalresettofinish

#100;

//Addstimulushere

reset=1'b1;

#(DELY*10)reset=1'b0;

#(DELY)reset=1'b1;

 

end

endmodule

 

NET"mainClock"LOC="C9"|IOSTANDARD=LVCMOS33;

NET"count<3>"LOC="F11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;

NET"count<2>"LOC="E11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;

NET"count<1>"LOC="E12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;

NET"count<0>"LOC="F12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;

NET"reset"LOC="L13"|IOSTANDARD=LVTTL|PULLUP;

4实验结论

实验很顺利,成功实现了由程序控制LED灯有序亮灭。

实验中产生的模块图如下:

并通过修改实验程序实现了LED灯顺序和逆序的亮灭。

这个实验中学习了分频器的编写,了解了同步信号的工作过程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1