当前位置:文档之家› 四位二进制减法计数器

四位二进制减法计数器

成绩评定表课程设计任务书摘要Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Multisim是Interactive Image Technologies (Electronics Workbench)公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。

它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。

Multisim为用户提供了丰富的元器件,并以开放的形式管理元器件,使得用户能够自己添加所需要的元器件。

本次数电课程设计使用Quartus II仿真环境以及VHDL下载和Multisim 仿真环境来编译实现四位二进制同步减法计数器。

在Multisim中选用四个JK 触发器来实现四位二进制减法计数器。

运用卡诺图求解时序方程。

逻辑电路图中,四个小红灯即为显示器,从右到左显示时序图中的十二种状态,其中,灯亮表示“1”,灭表示“0”,从而达到计数目的。

关键字:VHDL硬件描述语言、四位二进制减计数器、QUARTUSⅡ、Multisim、目录一.课程设计目的 (1)二.课设题目实现框图 (1)三.实现过程 (1)(一)VHDL的编译和仿真 (1)1.建立工程 (1)2.VHDL源程序 (4)3.编译及仿真过程................................................................... (6)4.引脚锁定及下载 (9)5.仿真结果分析................................................................... (11)(二)电路设计................................................................... . (11)1求驱动方程................................................................... .. (12)2.基于Multisim的设计电路图 (15)3.逻辑分析仪显示的波形 (15)4.仿结果分析 (16)四.设计体会 (16)五.参考文献................................................................... . (17)一、课程设计目的1.了解同步减计数器的工作原理和逻辑功能;2.学会用VHDL语言对计数器进行编译和仿真;3.掌握QuartusII的使用方法;4.掌握Multisim的使用方法。

二、课程设计实现框图状态图1111 1110 1101 1100 1011 10100000 0001 0010 0011 0111 1001(缺少0100,0101,0110,1000)三、实现过程(一)VHDL的编译和仿真1.建立工程创建一个工程,具体操作过程如下:(1)点击File –> New Project Wizard创建一个新工程,如图1;图1(2)点击Next,为工程选择存储目录、工程名称、顶层实体名等,并点击Next,若目录不存在,系统可能提示创建新目录,如图2所示,点击“是”按钮创建新目录;图2(3)系统提示是否需要加入文件,在此不添加任何文件,如图3;图3(4)点击Next,进入设备选择对话框,如图4,这里选中实验箱的核心芯片CYCLONE系列FPGA产品EP1C6Q240C8;图4(5)点击Next,系统显示如图5,提示是否需要其他EDA工具,这里不选任何其他工具;图5(6)点击Next后,系统提示创建工程的各属性总结,若没有错误,点击Finish,工程创建向导将生成一个工程,,在窗口左侧显示出设备型号和该工程的基本信息等。

2.VHDL源程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isport(CP,r:in std_logic;q:out std_logic_vector(3 downto 0));end count10;architecture behavioral of count10 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="1001" thencount<="0111";else count<=count-1;if count="0111" thencount<="0011";else count<=count-1;if count="0000" thencount<="1111";else count<=count-1;end if;end if;end if;end if;end process;q<=count;end behavioral ;3.编译和仿真过程(1)点击File->New创建一个设计文件,选择设计文件的类型为VHDL File,如图6;图6(2)在编辑窗口中编辑程序,如图7;图7(3)输入程序后,存盘;(4)点击Processing->Start Compilation编译该文件,系统将开始编译,结束后,给出提示信息和编译结果,如图8所示:图8(5)建立时序仿真文件,选择“Vector Waveform File”,如图9;图9(6)出现的界面中,在Name空白处击右键,Insert→Insert Node or Bus,单击,单击,再单击→OK→OK,并对其进行仿真,如图10所示;图10 (7)仿真结果如图11:图11(8)仿真后存盘。

4.引脚的锁定及下载各引脚的锁定如表1所示:信号名称引脚cp28q3114q2115q1116q0117r58表1引脚的锁定和下载分别如图12和图13所示:图12图135.仿真结果分析结果分析:由仿真波形图可以清晰的看出减法计数器的工作过程,由1111起依 次递减,最后减至0000后再由1111起进行下一个周期的循环,其中缺少0100,0101,0110,1000两个状态。

当复位键复位后,回到1111重新开始循环。

2. Multism 实现过程1·求驱动方程相关结构示意框图和状态转换图见上(二)所示步骤。

选择四个时钟脉冲下降沿触发的JK 触发器,因要使用同步电路,所以时钟方程应该为CP CP CP CP CP ====3210(1)求状态方程由所示状态图可直接画出如图 2.1所示电路次态13+n Q 12+n Q 11+n Q 10+n Q 的卡诺图,再分解开便可以得到如图2.2所示各触发器的卡诺图。

要的逻辑门外,没有专门的运算电路;计算结果由电路中的各个触发器记忆和表示;计数器计满之后自动归零,若再输入CP 脉冲又会从零开始计数,在CP 脉冲作用下,它总是周而复始循环工作的。

b.Q13n的卡诺图:c.`12+n Q 的卡诺图:d.Q 11+n 的卡诺图:e.Q 10+n 的卡诺图:(2)状态方程n n n n n n n Q Q Q Q Q Q Q 13230113++=+n n n n n n n n n n Q Q Q Q Q Q Q Q Q Q 12301301212++=+ n n n n n n n n Q Q Q Q Q Q Q Q 023010111++=+ nn n n n n Q Q Q Q Q Q 1232301n 0Q ++=+(3)驱动方程JK 触发器的特性方程n n n Q K Q J Q +=+1将状态方程与特性方程比较,可得驱动方程,如下:=3J n 0n 1Q Q nn n Q Q Q K 0123= ()n n n Q Q Q J 3012+= ()n n n Q Q Q K 0132+=nn n Q Q Q J 2301+= n Q 01K =1J 0= nn n n n Q Q Q Q Q K 123230+=2.基于Multisim的设计电路图根据上面计算出的结果的不同J和K值选择不同的元件进行电路的连接。

电路图3.逻辑分析仪显示的波形逻辑分析仪显示的波形如图15所示:4.仿真结果分析结果分析:由图15可以清楚地看到在一个周期内,由大到小,依次完成了减计数器的功能。

由于缺省了0100,0101,0110、1000这两个状态,波形仿真中状态发生了跳变,即由1001跳变到0111,由0111跳到0010,完成一个周期计数后,下一周期继续从1111开始,不断循环往复。

四、设计体会在本次数字电路课程设计中,我受益匪浅。

我原本对二进制加法计数器这一节学习不是很透彻,对于相关设计过程和分析方法并不大熟练。

在同学和老师的讲解下,最终还算顺利完成。

这对我以后学习相关的课程以及进行更高层次的数字电路设计都奠定了不错的基础。

在设计过程中,出现了各种各样的问题,有些是单一原因引起的,有的是综合原因引起的,这些都很考验我的毅力与坚持。

但是我掌握了研究这类问题的方法,即问题解决的过程就是要从问题所表现出来的情况出发,通过反复推敲,作出相应判断,逐步找出问题的症结所在,从而一举击破。

对于数字电路设计,尤其在使用Multism进行逻辑电路的连接与分析时,这种分析解决问题的能力就更为重要。

要在复杂的电子器件和密密麻麻的连线中找出头绪来,并不是一件很容易的事情。

往往要从新再来一次,但是这样的问题就出在计算上,尤其是在化简卡诺图时,务必小心谨慎,一个字符写错或者漏掉一些信息,相应得出的驱动方程就会有天壤之别,自然逻辑电路就不能实现最初的设计功能。

而且在连线的过程中一定要仔细的找准位置,一旦出错需要删除某些线的时候一定要删准确。

因此,我把这次课程设计看成一次综合学习的机会。

在学习过《数字电路技术基础简明教程》之后,我已经算是掌握了一定的数字电路设计的基础以及相应的分析方法、实践能力以及自学能力。

相关主题