四位二进制减计数器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩评定表

课程设计任务书

摘要

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

0111

0000 0001 0010 0011 0100 01010110

(缺1001,1010)

B:状态转换图

四位二进制同步减法计数器

CP

输入减法计数脉冲

C 输出进位信号

A :结构示意框图

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 is

port(CP,r:in std_logic;

q:out std_logic_vector(3 downto 0));

end wq;

architecture behavioral of wq is

signal 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="1011" then

count<="1000";

else count<=count-1;

if count="0000"then

count<="1111";

相关文档
最新文档