VHDL大作业西电电子所(宋万杰)一.交通控制器二.彩灯控制器三.自动售邮票机四.8位二进制乘法电路五.量程自动转换的数字式频率计六.游戏电路-模拟掷骰子七.游戏电路-模拟乒乓球比赛八.多功能数字钟九.全自动电梯控制电路十一.自选题目十.基于FPGA的乐曲自动演奏器设计一.交通控制器课题内容1.设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的持续时间分别是40、5和45秒。当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。交通控制系统的示意,流程图RA,RBs=1?YA,RBRA,RBGA,RBT=40?yesnonos=1?T=5?RA,GBRA,RByesnonos=1?T=40?yesyesyesnonoRA,YBRA,RBs=1?T=5?yesyesyesnono绿黄红绿黄红东西南北交通控制系统示意图设计提示:时钟用可预置减法计数器实现二.彩灯控制器1.设计要求设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。控制器应有两种控制方式:◆规则变化。变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。彩灯变化方向有单向移动,双向移动,跳跃移动等。如图所示。◆随机变化。变化花样相同,但节拍及花样的转换都随机出现。2.设计提示▲灯光移动用移位寄存器实现。各种花样,有的可以存于寄存器中,使用时并行置人移位寄存器,有的可以利用环形计数器或扭环计数器实现。▲节拍信号可选用实验板上的振荡器,花样控制信号可用4位计数器控制,1位控制节拍,另3位控制花样。▲随机信号可以用长度大于是15的伪随机序列信号发生器或用高速时钟驱动上述4位计数器得到。三.自动售邮票机1.设计要求◆机器有一个投币孔,每次只能投入一枚硬币。机器能自动识别硬币金额,最大为1元,最小为1角。购票者可选择的邮票面值有1元和5角两种,每次售出1枚邮票。◆购票时先选择邮票面值后投币,当投入的硬币总额达到或超过邮票面值时,机器应发出指示并拒收继续投入的硬币。◆购票者投币后,按动确认键,机器将发出邮票和零硬币,若所投金额不足则发出“欠资”指示。在欠资情况下,购票者可以继续投币购票,也可按取消键,则机器将退出所投入的全部金额。◆购票者投入硬币以后,如未按确认键而按取消键,机器也将退出所投入的全部金额。◆找零或退币时,按由大到小原则处理,即总金额超过1元时,应找出1元硬币金额低于1元但超过5角时,应找出5角硬币,不足5角时,方才找出1角的硬币。2.设计提示◆投入的硬币识别装置牵涉到传感器,在没有传感器的情况下,要求用3个按键代表3种硬币输入(1元,5角和1角)。每按一键,表示投入一枚硬币。◆邮票面值(1元,5角)也各用一个按键代表,按动某个键,表示选购某种面值的邮票同时可安排两只发光二极管指示所选的面值。◆确认,取消各用一个按键输入。◆投入的总金额用两只数码管显示。其显示的数字应随着硬币的投入或找出而变化。◆机器应有两个输出孔(这里用两个发光二极管代表),一个输出邮票,一个输出找回的硬币。找回的硬币按由大到小原则逐个输出,每输出一枚,数码管上的数字就减去相应的数。找零的过程可用一个按键控制,每按一次键,输出一枚硬币,直到计数器上显示数字为零。(也可只安排一个输出孔,邮票和硬币皆由此孔输出)。▲欠资信号和拒收信号可用发光二极管或其它方法表示,两种信号应有所区别。▲以上各项操作都可以用声音辅助指示,例如欠资和拒收,出票和出硬币等。确认取消找零拒收欠资邮票找零邮票面值1元5角1角1元5角投币孔自动售邮票机示意图四.8位二进制乘法电路1.设计要求8位二进制乘法采用移位相加的方法。即用乘数的各位数码,从低位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次(由乘数最低位与被乘数相乘)得到的部分积右移一位并与第二次得到的部分积相加,将加得的和右移一位再与第三次得到的部分积相加,再将相加的结果右移一位与第四次得到的部分积相加。直到所有的部分积都被加过一次。例如:被乘数(M7M6M5M4M3M2M1M0)和乘数(N7N6N5N4N3N2N1N0)分别为11010101和10010011,其计算过程如下:11010101×1001001111010101N0与被乘数相乘的部分积,部分积右移一位11010101N1与被乘数相乘的部分积+1101010110011111111001111111两个部分积之和,部分积之和右移一位+00000000N2与被乘数相乘的部分积0100111111101001111111与前面部分积之和相加,部分积之和右移一+00000000N4与被乘数相乘的部分积······N7与被乘数相乘的部分积+11010101111101001001111与前面部分积之和相加011110100100111右移一位得到最后的积按照这种算法,可以得到下图所示之框图和简单流程图。图中Y寄存器存放被乘数M,B寄存器存放乘数N,A累加器存放部分积。A和Y中的数据在加法器中相加后送入A中,而A和B相级联又构成了一个16bit的移位寄存器,当它工作于移位模式时,可以实现数据的右移。由于乘数的每一位不是0就是1,对应的部分积不是0就是被乘数本身,所以实际作部分积相加这一步时,只要根据乘数的对应位判断:如该位为1,则将累加器中的数据加上被乘数再移位;如该位为0时,就不加被乘数而直接移位。运算时首先将累加器A清零,并将被乘数M和乘数N分别存入寄存器Y和B,然后依据寄存器B中最右一位B0(数据N0)确定第一个部分积。将此部分积送入A累加器以后,将A连同寄存器B右移一位,部分积的最低位被移进寄存器B的最左位,乘数的最低位N0被移出寄存器B,而乘数的次低位N1被移至寄存器B的B0位。第二次仍然依据B0位的数据(N1)来确定第二个部分积,将部分积与累加器中的数据相加后右移一位,N1又被移出寄存器,数据N2被移到B0位置。。。。。这样,经过8次部分积相加位的操作,完成1次乘法运算,乘数N恰好被移出寄存器B,寄存器B中保存的就是运算积的低8位数据。移位相加的次数应用一个计数器来控制,每移位一次,计数器计一个数。当计数器计得8个数时,发出一个信号,使电路停止操作,并输出运算结果(流程图是按减法计数器设计的,也可使用加法计数器)。累加器B寄存器加法器控制器Y寄存器C计数器乘数N积P被乘数M开始累加器A清除,寄存器B置乘数N寄存器Y置被乘数M计数器C置数字8A与Y.B0相加送A,计数器C减1,B分别右移1位,A0移到B7。运算结束,输出积PC=0?YESNO(A)电路框图(B)简单流程图乘法器的电路框图和流程图2.设计提示▲因受输出输入端口的限制,乘数和被乘数需分两拍依次送人,输出的高8位和低8位也可分两拍显示。▲加法器可使用宏,一个8位加法器将占有8个GLB,而一4位加法器宏只占2个GLB,因此在不考虑运算速度的情况下,宜采用2个4位的加法器。▲累加器在执行右移功能时,可采用下图电路,这样不仅可以节省资源,还因为相加和移位操作在同一拍进行,提高了运算速度。A7A6A5A4A3A2A1A0B7加法运算Y7Y6Y5Y4Y3Y2Y1Y0累加器移位方式示意图五.量程自动转换的数字式频率计1.设计要求设计一个3位十进制数字式频率计,其测量范围为1MHz。量程分10kHz,100kHz和1MHz三档(最大读数分别为9.99kHz,99.9kHz,999kHz)被测信号应是一符合CMOS电路要求的脉冲或正弦波。量程自动转换规则如下:◆当读数大于999时,频率计处于超量程状态。此时显示器发出溢出指示(最高位显示F,其余各位不显示数字),下一次测量时,量程自动增大一档。◆当读数小于000时,频率计处于欠量程状态。下次测量时,量程减小一档。显示方式如下:★采用记忆显示方式,即计数过程中不显示数据,待计数过程结束后,显示计数结果,并将此显示结果保持到下一次计数结束。显示时间应不小于1秒。★小数点位置随量程变更自动移位。2.设计提示▲测频原理如图所示,其中时基信号应为0.1s、0.01s、和0.001s(对应于10kHz、100kHz、和1MHz量程)。▲每次测量时,用由时基信号产生的闸门信号启动计数器对输入的脉冲信号计数,闸门信号结束即将计数结果送入锁存器,然后将计数器清零,准备下一次计数。▲如被测波形不好,可以通过施密特电路整形。施密特电路可按图设计。显示电路锁存器计数器闸门被测信号测频原理译码电路整形闸门控制信号被测信号闸门信号存储信号显示信号清零信号频率计工作波形图六.游戏电路-模拟掷骰子1.设计要求本游戏电路可供二人游戏。游戏者每按动一次按键可得到(1~6)范围内的两个数,并按下列规则决定胜负。◆第一场比赛,游戏者每人各按一次按键,所得二数之和为7和11者胜,若无人取胜,则进行第二场比赛。◆第二场比赛,游戏者每人各按一次按键,所得二数之和与第一场比赛相同者获胜,所得二数之和为7或11者负,若无人获胜或负,则重复进行,直到出现胜者为止。2.设计提示▲掷骰子读数的产生电路,可以用两个能由1计到6的六进制计数器构成,并接成级联形式(6-1)用高速时钟驱动,以保证在按动按键时,两计数器的读数是随机的。该二读数还应锁存并用数码管显示。▲两个计数器读数之和应显示并存储,以便与第二场比赛结果相比较。按键显示系统可以设计成两套,游戏者每人一套,控制电路是公共的,也可设计成一套系统,游戏者轮流按同一键游戏。控制器在收到两个游戏者所按数据方才允许下一场比赛。▲比赛结果可以用发光二极管或数码管指示,并可伴有声音效果。七.游戏电路-模拟乒乓球比赛1.设计要求本游戏电路可供二人游戏。◆左、右双方各持一按键作为“球拍”,实验板上一行16只发光二极管为乒乓球台,其中那只发光的发光二极管代表乒乓球所在位置。◆左、右双方均可发球。发球时,球应在球台发球方的端点保持不动,“挥拍”时球才可逐步左移或右移,若“击球”键恰好在“球”到达对方端点时按下,则发出短促的击球声,“球”即向相反方向移动,若按键偏早或偏晚,击球无效,无击球声发出,球将继续向前运行直至出界,(即亮点消失)。记分板上给胜球者加1分。◆球速度分4级或2级。比赛规则可自定,胜负应有指示。2.设计提示▲球速变化的实现球的运动用双向移位寄存器实现,球速即移位寄存器时钟速率,若将外部送入的时钟信号经4分频后作为移位寄存器时钟,并设置4种外时钟速率(可使用底板上的时钟,也可设计4个振荡器实现),则“球”在移位寄存器当中的每一位上将停留4个外时钟节拍,若击球脉冲与第一节拍同步,则回球速度最高,与第4节拍同步,则回球速度最低。▲击球输入应采取同步化处理,使之成为与外时钟同步,宽度为外时钟周期的脉冲。八.多功能数字钟1.设计要求在实时钟电路设计的基础上增加以下功能。◆正常模式,增加上,下午显示。◆手动校准电路。按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。◆整点报时,仿中央人民广播电台整点报时信号,从59分50秒起每隔2秒发出一次低音“嘟”信号(信号鸣叫持续时间1S,间隙时间1S)连续5次,到达整点(00分00秒时),发一次高音“哒”信号(信号持续时间1秒)。◆闹时功能,按动方式键,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时,校分方式进行预置,预置后回到正常模式。当计时计至预置的时间时,扬声器发出闹铃信号,时间为半分钟,闹铃信号可以用开关“止闹”,按下此开关后,闹铃声立刻中止,正常情况下应将此开关释放,否则无闹时作用。◆秒表功能。