加法器课程设计四位二进制同步加法计数器.doc
成 绩 评 定 表学生姓名班级学号专 业课程设计题目四位二进制同步加法器(缺0000,0001,0100,0101)评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院专 业学生姓名班级学号课程设计题目四位二进制同步加法计数器(缺0000,0001,0100,0101)实践教学要求与任务:1.了解数字系统设计方法。2.熟悉ISE仿真环境及VHDL下载。3.熟悉Multisim仿真环境。4.设计实现四位二进制同步加法计数器(缺0000,0001,0100,0101)工作计划与进度安排:第一周:熟悉Multisim及Xilinx及Xilinx ISE环境,练习数字系统设计方法第二周:(1)在ISE环境中仿真实现四位二进制同步加法计数器(缺0000,0001,0100,0101)。 (2)在Multisim环境中仿真实现四位二进制同步加法计数器(缺0000,0001,0100,0101),并通过虚拟仪器验证其正确性。指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日目录一、课程设计目的1二、设计框图1三、实现过程11、Xilinx ISE10.1实现过程(VHDL)11、1、建立工程21、2、调试程序41、3、波形仿真51、4、引脚锁定与下载71、5、仿真结果分析102、Multisim10实现过程(电路设计)102、1、设计原理102、2、基于Multisim的设计电路132、3、虚拟观察的波形142、4、仿真结果分析14四、设计总结15五、参考文献15一. 课程设计的目的1.了解数字系统设计原理及方法。2.熟悉Xillinx ISE仿真环境及VHDL下载。3.熟悉Mutisim仿真环境。4.设计实现(四位二进制加法计数器(缺0000,0001,0100,0101)。二、设计框图四位二进制加法计数器 输入计数器脉冲CPC送给高位的进位信息由题目可知,无效状态为0000、0001、0100、0101根据二进制递增计数的规律,可看出状态图如图1所示。0010 0011 0110 0111 1000 1001 1111 1110 1101 1100 1011 1010图1 状态图三、实现过程1、Xilinx ISE10.1实现过程(VHDL)代码LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity count16 isPORT (cp,r:INSTD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end count16;ARCHITECTURE Behavioral OF count16 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='0' then count<="1111" elsiF cp'EVENT AND cp='1' THEN if count="1111" THEN count <="0010" ELSE count <= count +1; if count="0011" THEN count <="0110" ELSE count <= count +1; END IF;end if; END PROCESS; q<= count;end Behavioral;1、1、建立工程FileNew Project;Project Name:hll(例:hll); Project Location:工程保存的位置(例:F:0603060xhll);next>>next直至finish。1、2、调试程序右击xc95108-15pc84,选New Source,再选VHDL Module后,填加文件名(例:File name:hll)next( Port Name中随便填A)finish。写入程序,保存程序双击Implement Design(或右键Run),运行程序,调试成功显示如下:1、3、波形仿真回到vi.vhd界面,右键点击v1 - Behavioral(v1.vhd),选New SourceTest Bench WaveFormFile Name:t1( 测试波形文件名tt),next(连接v1) nextfinish左侧Sources for 栏内选择Behavioral Simulation,选择tt ,打开Processes下的Xilinx ISE Simulator如图点击Simulate Behavioral Model(或右键RUN)运行仿真波形,如下时序图1、4、引脚锁定与下载左上侧Source for选项中选择Synthesis/Implementation,左下侧ProcessesUser ConstraintsAssign Package Pins分配引脚:Cp-key1,r-sw1,q3-L1,q2-L2,q1-L3,q0-L4。点击保存,OK。回到ISE :ProcessesImplement DesignOptional Implementation Tools双击Lock Pins锁定引脚ProcessesImplement Design双击Generate Programming FileConfigure Device(iMPACT),默认JTAG,finishi,v1.jed Open右键点绿ProgaramOK,结束下载。(调试时sw向上是1;灯亮为1)1、5、仿真结果分析 因为我的题目是四位二进制减法计数器(0000,0001,0100,0101),所以计数器是从15直接跳变成2,再从3直接跳变成5,其余的数正常跳变,而根据波形仿真图可以十分清楚地看出波形跳变过程,符合开始的设计框图。2、Multisim10实现过程2、1、设计原理1. 选择触发器选用由于JK触发器功能齐全、使用灵活,在这里选用4个CP下降沿触发的边沿JK触发器。2. 求时钟方程、状态方程(1) 求时钟方程采用同步方案,故取CP0=CP1=CP2=CP3=CP。CP是整个要设计的时序电路的输入时钟脉冲。(2) 求状态方程由图1所示状态图可直接画出如图2所示电路次态的卡诺图,再分解开便可以得到如图2所示各触发器的卡诺图。 0001111000XXXX0010XXXX001101XXXX0110100001111111011110XXXX1111101001101011001011图2 次态的卡诺图0001111000X0X001X0101111X1101111(a) 0001111000X0X001X1011111X1100010(b) 0001111000X1X101X1011101X1100101(c) 0001111000X0X101X0011110X1101001(d)图3 各触发器的卡诺图(a) 的卡诺图(b)的卡诺图(c)的卡诺图(d)的卡诺图显然,由图3 所示各卡诺图便可很容易地得到 (1) 4. 求驱动方程JK触发器的特性方程为与特性方程做比较,可得 (2)2、2、基于Multisim的设计电路根据所选用的触发器和时钟方程、输出方程、驱动方程,便可以画出如图5所示的逻辑电路图。图4 逻辑电路图2、3、虚拟观察的波形图5 逻辑分析图检查电路能否自启动将无效状态0000、0001、0100、0101代入式(1)进行计算,结果如下:0000 00010010(有效状态)0100 01010110(有效状态)可见,所设计的时序电路能够自启动。2、4、仿真结果分析 我的题目是四位二进制加法计数器(缺0000,0001,0100,0101),在multisim中,计数器也是从15直接跳变成2,再从3直接跳变成5,其余的数正常跳变,小灯根据数字的变化有规律地亮灭,例如,当计数器加到1001是,会出现以下现象:从左数第一个和第四个小灯是亮的,而第二个和第三个小灯是灭的,以此类推。而当最后计数器加到1111时,要进行进位,变成0000,这个时候表示进位的绿灯会变亮。而且时序图会按照设计的那样进行,类似于ISE的仿真波形图。四、设计总结1.实验中遇到的问题:在用multisim做仿真波形图时,最开始检查的仿真结果是错的,波形不对。2.解决办法:为了解决问题,我又从画卡诺图开始重新算,一步一步检查,后来发现的卡诺图上的一个1忘记画圈了,结果就造成了少了一个项,波形图和我的题目的波形不符合。然后我重新求出驱动方程,也就是把加上一项,另外的驱动方程不用改,结果波形终于出来了。这个过程让我明白了做实验必须要认真完成每个步骤,往往一步错就会造成以后更大的错误,想一想如果辛辛苦苦花费好多时间精力做出来的成果却发现因为其中一个小小的步骤而与正确结果南辕北辙,那就太让人沮丧了。所以必须要做到步步认真,严谨。五.参考文献1余孟尝.数字电子技术基础简明教程.第三版.高等教育出版社,2006.72王东明 喻红婕 吴迪。数字逻辑与硬件描述语言实验指导书. 沈阳理工大学信息学院技术中心,2012.6