成绩评定表课程设计任务书摘要Quartus II是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Multisim是Interactive Image Technologies (Electronics Workbench)公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。
它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。
Multisim为用户提供了丰富的元器件,并以开放的形式管理元器件,使得用户能够自己添加所需要的元器件。
在QuartusII8.1软件中,建立名为wq的工程,用四位二进制减法计数器的VHDL语言实现了四位二进制减法计数器的仿真波形图,同时进行相关操作,锁定了所需管脚,将其下载到实验箱。
在Multisim软件中,通过选用四个时钟脉冲下降沿触发的JK触发器和同步电路,画出其时序图,卡诺图,建立相关方程,做出相关计算,完成四位二进制减法计数器(缺1001,1010)的驱动方程。
在Multisim软件里画出了四位二进制减法计数器的逻辑电路图。
分析由红绿灯的亮灭顺序及状态,和逻辑分析仪里出现波形图,证明四位二进制减法计数器设计成功。
关键字:VHDL语言;四位二进制减计数器;QUARTUSⅡ;Multisim目录1.课程设计目的 (1)2.设计框图 (1)3.实现过程 (2)3.1Q UARTUSⅡ实现过程 (2)3.1.1建立工程 (2)3.1.2VHDL源程序 (4)3.1.3波形仿真 (5)3.1.4引脚锁定与下载 (7)3.1.5仿真结果分析 (9)3.2MULTISIM实现过程 (9)3.2.1求驱动方程 (9)3.2.2画逻辑电路图 (11)3.2.3逻辑分析仪的仿真 (12)3.2.4结果分析 (13)4.总结 (14)5.参考文献 (15)1.课程设计目的1.了解四位二进制减法计数器的工作原理和逻辑功能;2.学会用VHDL语言对计数器进行编译和仿真;3.掌握QuartusII的使用方法;4.掌握Multisim的使用方法。
2.设计框图状态转换图是描述时序电路的一种方法,具有形象直观的特点,即其把所用触发器的状态转换关系及转换条件用几何图形表示出来,十分清新,便于查看。
在本课程设计中,四位二进制同步减法计数器用四个CP下降沿触发的JK 触发器实现,其中有相应的跳变,即跳过了1001 1010两个状态,这在状态转换图中可以清晰地显示出来。
具体结构示意框图和状态转换图如下:1111 1110 1101 1100 1011 1000 01110000 0001 0010 0011 0100 01010110(缺1001,1010)B:状态转换图3.实现过程3.1. QuartusⅡ实现过程3.1.1建立工程(1)点击File–> New Project Wizard创建一个新工程。
点击Next,为工程选择存储目录、工程名称、顶层实体名等,并点击Next,若目录不存在,系统可能提示创建新目录,如图1所示,点击“是”按钮创建新目录;图1 选择存储目录、工程名称、顶层实体名(2)系统提示是否需要加入文件,在此不添加任何文件,如图2;图2 是否添加文件(3)点击Next,进入设备选择对话框,如图3,这里选中实验箱的核心芯片CYCLONE系列FPGA产品EP1C6Q240C8;图3设备选择(4)点击Next,系统显示如图4,提示是否需要其他EDA工具,这里不选任何其他工具;图4 是否需要其他EDA工具(5)点击Next后,系统提示创建工程的各属性总结,若没有错误,点击Finish,工程创建向导将生成一个工程,在窗口左侧显示出设备型号和该工程的基本信息等;图5 创建工程的各属性总结3.1.2 VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity wq isport(CP,r:in std_logic;q:out std_logic_vector(3 downto 0));end wq;architecture behavioral of wq issignal count:std_logic_vector(3 downto 0);beginprocess(cp,r)beginif r='0' then count<="1111";elsif cp'event and cp='1' thenif count="1011" thencount<="1000";else count<=count-1;if count="0000"thencount<="1111";else count<=count-1;end if;end if;end if;end process;q<=count;end behavioral ;3.1.3 波形仿真(1)点击File->New创建一个设计文件,选择设计文件的类型为VHDL File,如图6;图6 创建设计文件(2)在编辑窗口中编辑程序,并存盘,如图7;图7 编辑程序(3)点击Processing->Start Compilation编译该文件,系统将开始编译,结束后,给出提示信息和编译结果,如图8所示;图8 编译(5)建立时序仿真文件,选择“Vector Waveform File”,如图9;图9 建立时序仿真文件(6)出现的界面中,在Name空白处击右键,Insert→Insert Node or Bus,单击,单击,再单击→OK→OK,并对其进行仿真,如图10所示;(7)仿真结果,如图11所示;图11 仿真结果(8)仿真后存盘3.1.4引脚锁定与下载各引脚的锁定如表1所示:表1 锁引脚 引脚的锁定和下载分别如图12和图13所示:图12 锁引脚图13 下载3.1.5 仿真结果分析仿真波形图可以看出减法计数器的工作过程:由1111起依次递减,最后减至0000后再由1111起进行下一个周期的循环,其中缺少1001,1010两个状态。
当复位键复位后,回到1111重新开始循环。
3.2 Multism 实现过程3.2.1求驱动方程选择四个时钟脉冲下降沿触发的JK 触发器,因要使用同步电路,所以时钟方程应该为CP CP CP CP CP ====3210(1)求状态方程由所示状态图可直接画出如表2所示电路次态13+n Q 12+n Q 11+n Q 10+n Q 的卡诺图,再分解开便可以得到如表3 (a) (b) (c) (d)所示各触发器的卡诺图。
表2 次态13+n Q 12+n Q 11+n Q 10+n Q 的卡诺图由上述卡诺图可求出1+n 1+n 1+n 1+n 表3 (a) 13+n Q 的卡诺图表3(b) 12+n Q 的卡诺图表3(c )11+n Q 的卡诺图表3(d ) 10+n Q 的卡诺图根据卡诺图进行相应化简即得到状态方程,如下:n n n n n n n n n n n n n n n n n n n n n n n n QQQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q 0101n 201301110121n 20n 212012313n 2313=++=++=++=++++(2)求驱动方程由于JK 触发器的特性方程为n n n Q K Q J Q +=+1用状态方程与特性方程做比较,可得对应驱动方程,如下:1100011010120121230123========K J Q Q K Q J Q Q K Q Q J Q Q K Q Q Q J nn nn n n n n n n n n3.2.2画逻辑电路图根据所选用的触发器和时钟方程、输出方程、驱动方程,便可以画出如图14所示的逻辑电路图图14 逻辑电路图3.2.3逻辑分析仪的仿真逻辑分析仪显示的波形如图15所示:图15 逻辑分析仪波形检查电路能否自启动:把无效状态1001和1010带入输出方程和和状态方程进行计算,结果如下:0000100110101/0/−−−→−−−−→−由此可见,在CP 操作下都能回到有效状态,即电路能够自启动。
3.2.4结果分析Multism 是一种虚拟仪器,可以用来验证电路的设计的正确性。
根据相关计算,得出时序电路的时钟方程、状态方程、驱动方程,从而选择合适触发器来连接实现。
本设计中,选用四个时钟脉冲下降沿触发的JK 触发器来实现四位二进制减法计数器。
逻辑电路图中,四个小红灯即为显示器,灯亮表示“1”,灭表示“0”,从而达到计数目的。
由于其中缺了1001,1010 两种状态,所以在计数过程中会发生跳变,即先从1011跳到1000,再由0000直接跳回到1111,周而复始。
逻辑分析仪类似于Quartus Ⅱ环境下的波形仿真,是对计数器的另一种直观的描述。
其中,高电平表示“1”,低电平表示“0”,也可以对计数器的功能进行测试及检验。
4.总结在本次数字电路课程设计中,我花了较多的时间查阅资料,进行反复练习,使我对二进制减法计数器掌握得更加熟练。
这对我以后学习相关的课程以及进行更高层次的数字电路设计都奠定了不错的基础。
在设计过程中,出现了各种各样的问题,有些是单一原因引起的,有的是综合原因引起的,这些都很考验我的毅力与坚持。
但是我掌握了研究这类问题的方法,即问题解决的过程就是要从问题所表现出来的情况出发,通过反复推敲,作出相应判断,逐步找出问题的症结所在,从而一举击破。
对于数字电路设计,尤其在使用Multism进行逻辑电路的连接与分析时,这种分析解决问题的能力就更为重要。
要在复杂的电子器件和密密麻麻的连线中找出头绪来,并不是一件很容易的事情。
往往要重新再来一次,但是这样的问题就出在计算上,尤其是在化简卡诺图时,务必小心谨慎,一个字符写错或者漏掉一些信息,就会导致驱动方程错误,逻辑电路就不能实现最初的设计功能。
在学习过《数字电路技术基础简明教程》之后,我已经算是掌握了一定的数字电路设计的基础以及相应的分析方法、实践能力以及自学能力。
虽然遇到了不少问题,但是在向老师和同学请教的学习过程中,我又改正了不少错误的认识,对数字电路的设计与分析方法的掌握也有了一定的提高,我相信这些知识与经验对以后的学习会有极大的帮助。