预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PLD与数字系统设计实验报告实验二(B组):旋转开关一实验规定:运用Spartan-3StarterBoard实验板上旋转开关,设计一种通过旋转开关方向来控制LED灯依次点亮顺序实验,并且规定可以循环点亮。二实验原理及算法分析本次实验总体上来讲可以分为两大某些来思考:第一某些为由旋转旋钮方向决定LED灯点亮顺序,使实现旋钮向右旋转时LED灯向右点亮,旋钮向左旋转时LED灯向左点亮,这某些核心在于如何依照电路板引脚输入判断旋钮旋转方向;第二某些为通过旋转旋钮构建时钟来实现旋钮旋转一格时可循环地依次点亮一种LED灯,核心在于如何构建实验所需要时钟。1°旋钮方向下面这幅图取自《XilinxUG230Spartan-3EStarterKitBoardUserGuide》,是Spartan-3电路板上旋钮编码电路图:上页图所示是旋钮旋转中A、B两个引脚一种状态,实际中旋钮旋转一格使A和B与GND导通开关(分别记为K1、K2)状态变化(K1、K2)分别为:向右旋转时:(断开,断开)(闭合,断开)(闭合,闭合)(断开,闭合)(断开,断开)向左旋转时:(断开,断开)(断开,闭合)(闭合,闭合)(闭合,断开)(断开,断开)依照顾客手册中A、B两个引脚UCF文献所述:“NET"ROT_A"LOC="K18"|IOSTANDARD=LVTTL|PULLUP;NET"ROT_B"LOC="G18"|IOSTANDARD=LVTTL|PULLUP;”Vcco接高电平,当K1断开时,A输出为高电平,即输出为“1”;当K1闭合时,A输出为低电平,即输出为“0”。对B同理可得出相似成果。可得到旋钮旋转一格(A,B)状态变化如下:向右旋转时:(1,1)(0,1)(0,0)(0,1)(1,1)向左旋转是:(1,1)(1,0)(0,0)(0,1)(1,1)因而可以依照A、B两个引脚输入值变化来判断旋钮旋转方向,重要根据状态为状态2和状态4。下图为顾客手册中关于旋钮向右旋转时A、B引脚电平变化时序图,仅供参照(注:实际中通过实验测试A、B两个引脚初始态应当是高电平、高电平):由上图可以看出,引脚电平变化时会浮现抖动现象(事实上按键抖动是机械按键和旋钮普遍现象)。实验中所用电板时钟频率为50MHz,须使用分频减少频率获得新更大周期时钟来避免受到抖动影响。2°可循环地依次点亮LED灯为了得到可通过旋转旋钮构建可实现旋钮旋转一格时可循环地依次点亮一种LED灯按钮时钟CLK,可以令下一种LED灯亮动作发生在CLK上升沿,由1°中分析可知,旋钮旋转一格总共经历五个状态,可以设立CLK初始状态为“1”,当得到前三个状态时,变化CLK状态为“0”,当到达第四个状态时就可以对点亮LED灯方向做出判断,当到达某一格第五个状态(也可以当作是下一种第一种状态)时,变化CLK状态为“1”,这就得到了旋转一格控制LED点亮时钟过一种周期效果。依照顾客手册中LED灯UCF文献所述:NET"LED<7>"LOC="F9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;LED驱动强度为“8”,为高电平点亮。因此对LED灯可循环地依次点亮实现,可以通过控制8个LED灯电平来实现,这个比较简朴,代码实现见实验报告“三实验算法及核心代码实现”。三实验算法及核心代码实现1°分频CLK介于分频在实际应用中重要性,在此给出本次实验中用到分频实当代码:inputclk;integeri;regCLK;parametercount=10_0000;always@(posedgeclk)beginif(i==count)begini=0;CLK=~CLK;endelsei=i+1;endclk为电路板50MHz时钟,上面代码较好实现了50M/(50M/count)Hz频率时钟。通过合理调节CLK频率即可有效避免抖动影响,如上,实验所用count=10_0000。2°旋钮方向判断及得到依次点亮LED灯时钟clk0以{fir,sec}记录AB第二个和第四个状态值,据此作出判断根据,这里在clk0从“0”变到“1”放在第三个状态而不放在第四个状态可以避免order和clk0上升沿发生竞争:always@(posedgeCLK)begincase({ab,fir,sec})//第一种状况,向右旋转6'b11_00_00:clk0=1;6'b01_00_00:fir=2'b01;6'b00_01_00:clk0=0;6'b10_01_00:beginsec=2'b10;order=2'b01;//LED灯向右点亮end6'b11_01_10:beginfir=2'b00;sec=2'b00;clk0=1;end//第二种状况,向左旋转//6'b11_00_00:clk0=1;6'b10_00_00:f