如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
计算机系统结构实验报告(实验二)实验名称:FPGA基础实验2:4bitsbinarycounterwithtimedivider一、实验环境ISE11.1环境XilinxSpartan3E实验板二、实验说明1.实验目的(1)除了使用与(实验一)同样的实验环境外,此次实验是第一次用到了ISE中的仿真模块(实验实际要求实用后仿真)。(2)另外此实验还要学习分频器的编写,了解同步型号的工作过程。2.实验描述(步骤)A.4位二进制计数器(1)新建工程新建一个工程(在File->NewProject里),然后对他的各种属性进行设置,一遍很好的实现工程,同时也可定义出模块端口(2)编写Verilog代码计数器4位二进制计数器应有两个输入端口(mainClock,reset)和一个4位的输出端口([3:0]count)。mainClock端口用于输入时钟频率,使count按此时钟频率计数;reset端口用于清零计数器,使count的所有输出端口全部复位。具体的实现代码如下(省去了端口定义部分):always@(posedgemainClock)beginif(!reset)count<=4'b1111;elsecount<=count-1;end对上述计数器可用ISE进行仿真,并观察结果(仿真过程在稍后说明)。然而,在实验板上,有板子晶振提供的时钟频率速度较高。因此,需要对时钟频率进行分频。分频器分频器仅有一个输入端口和一个输出端口,分别对应于输入的原晶振提供的时钟和分频后输出的时钟。分频器的实现是使用一个临时变量来减缓输入频率(代码如下)。reg[24:0]buffer;always@(posedgeclockIn)beginbuffer<=buffer+1;clockOut<=&buffer;end注:编写分频器模块后,需在计数器模块中调用分频器使mianClock频率变慢(成为新的slowClock),调用方法如下:timerDividertd(.clockIn(mainClock),.clockOut(slowClock));(3)观察顶层图使用Synthesize–XST下的ViewRTLSchematic观察顶层图。可观察到:时钟频率由分频器处理后导入计数器;reset端口直接输入计数器;然后计数器输出一个4位的计数。(4)管脚锁定这一步是编写UCF(UserConstraintFile)文件,主要是通过UserConstraints中的I/OPinPlanning(planAhead)–Pre-Synthesis自动生成UCF文件,并对其进行编辑。(5)下载到开发板下载到开发板用的是iMPACT软件。初始化链后,用之前生成的.bit文件配置xc3s500e即可下载到板上。三、实验结果预期效果就是实验板上的右边四个LED灯,会处于计数状态(明暗状态对应数码0或1,4个LED灯对应4位二进制数码)。当拨动最右边的开关,四个LED灯会被全部复位,之后又处于计数状态。四、心得体会实验中出现的问题:仿真出现的问题在编写完了分频器后进行仿真得不到结果。原因估计主要是因为时钟频率被减缓,用测试未加分频器之前的测试程序仿真计数器是没有意义的了。另外,实验仅做前仿真是不够的,应做做后仿真。