VHDL60进制计数器加法器设计实验

发布时间:2024-11-04

VHDL60进制计数器加法器设计实验

实验四、计数器设计实验

1、实验目的

1)学习计数器不同设计方法。

2)学习掌握VHDL中不同输出类型在具体应用时的区别(OUT、INOUT、BUFFER)。

3)学习掌握时序电路仿真方法。

2、实验内容

1)采用VHDL设计方法,设计一个60进制计数器,采用BCD码输出。

2)给出上述设计的仿真结果。

3、实验设备

1)清华同方PⅣ 2.4G\256M60G

2)ISE 6.2i—Windows软件系统

4、实验步骤

1)创建工程

2)VHDL输入

3)检查语法

4)建立测试激励波形进行仿真

5、实验程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNT IS

PORT( CLK,EN,CR :IN STD_LOGIC;

VHDL60进制计数器加法器设计实验

LD :IN STD_LOGIC;

D :IN STD_LOGIC_VECTOR(7 DOWNTO 0); CO :OUT STD_LOGIC;

Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COUNT;

ARCHITECTURE A OF COUNT IS

SIGNAL QN :STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

CO<='1' WHEN(QN=X"59" AND EN='1')

ELSE'0';

PROCESS(CLK,CR)

BEGIN

IF(CR='0')THEN

QN<=X"00";

ELSE

IF(CLK'EVENT AND CLK='1') THEN

IF (LD='0') THEN

QN<=D;

ELSIF(EN='1') THEN

IF QN(3 DOWNTO 0)=9 THEN

QN(3 DOWNTO 0)<="0000";

IF QN(7 DOWNTO 4)=5 THEN

QN(7 DOWNTO 4)<="0000";

ELSE

QN(7 DOWNTO 4)<= QN(7 DOWNTO 4)+1;

END IF;

ELSE

QN(3 DOWNTO 0)<= QN(3 DOWNTO 0)+1;

END IF ;

END IF;

END IF ;

END IF;

END PROCESS;

Q<=QN;

END A;

6、仿真结果

VHDL60进制计数器加法器设计实验

1)测试激励波形

2)仿真结果

VHDL60进制计数器加法器设计实验

从仿真结果来看输出q从00000000逐渐加1变化到01011001,然后又变回到00000000,由此可以看出上述电路完成了六十进制计数器的功能。

VHDL60进制计数器加法器设计实验

实验七、加法器设计实验

1、实验目的

1)学习了解加法器工作原理。

2)学习用VHDL语言设计全加器的设计方法。

3)学习使用元件例化的方法设计多位加法器。

2、实验原理

两个n位二进制数相加的过程,是从最低有效位开始相加,形成和数并传送进位最后得到结果。最低位只有加数和被加数相加,这种两个一位数相加称为半加;完成加数、被加数、低位的进位数三个一位数相加称为全加。实现半加运算的电路称为半加器,实现全加运算的电路称为全加器。

全加器(Full Adder)的真值表如下表所示,其中Ci是低位进位,Ci+1是向高位的进位。

全 加 器 的 真 值 表

VHDL60进制计数器加法器设计实验

全加器(Full Adder)的逻辑图请参考下图。

全加器的逻辑图

由全加器的真值表可写出 Si、Ci+1 的逻辑表达式:

Si=Ai+Bi+Ci

Ci+1=AiBi+Ci(Ai+Bi)

3、实验内容

1)用VHDL语言设计全加器。

2)用元件例化方法设计一个四位二进制加法器。

4、实验设备

1)清华同方PⅣ 2.4G\256M60G

2)ISE 6.2i—Windows软件系统

5、实验步骤

1)创建工程

2)VHDL输入

3)检查语法

4)建立测试激励波形进行仿真

6、实验程序

VHDL60进制计数器加法器设计实验

1)全加器源程序

library IEEE;

use IEEE.std_logic_1164.all;

entity adder is

port (a : in std_logic;

b : in std_logic;

cin : in std_logic;

sum : out std_logic;

cout : out std_logic);

end adder;

architecture Behavioral of adder is

begin

sum <= (a xor b) xor cin;

cout <= (a and b) or (cin and a) or (cin and b); end Behavioral;

2)四位二进制加法器源程序

library IEEE;

use IEEE.std_logic_1164.all;

entity adderN is

generic(N : integer := 4);

port (a : in std_logic_vector(N downto 1); b : in std_logic_vector(N downto 1); cin : in std_logic;

sum : out std_logic_vector(N downto 1); cout : out std_logic);

end adderN;

architecture structural of adderN is

component adder

port (a : in std_logic;

b : in std_logic;

cin : in std_logic;

sum : out std_logic;

cout : out std_logic);

end component;

signal carry : std_logic_vector(0 to N); begin

carry(0) <= cin;

cout <= carry(N);

-- instantiate a single-bit adder N times gen: for I in 1 to N generate

add: adder port map(

a => a(I),

VHDL60进制计数器加法器设计实验

b => b(I),

cin => carry(I - 1), sum => sum(I),

cout => carry(I)); end generate;

end structural;

7、仿真结果

1)测试激励波形

2)仿真结果

VHDL60进制计数器加法器设计实验

从仿真结果来看,源程序正确的完成了四位二进制加法器的功能。

VHDL60进制计数器加法器设计实验.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219