6时序电路设计

更新时间:2023-10-17 03:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Beijing Techshine Technology Co. TECHISHINE

实验二十 计数器

一 实验目的

1、 设计一个带使能输入、进位输出及同步清0的增1十进制计数器,波形图见图20-1 2、 设计一个带使能输入及同步清0的增1计数器,波形图见图20-2 3、 设计一个带使能输入及同步清0的增1/减1的8位计数器

4、 设计一个带使能输入及同步清0的并行加载通用(带有类属参数 )增1/减1计数器

二 实验内容

图20-1 计数器1波形图

图20-2 计数器2波形图

在用VHDL语言描述一个计数器时,如果使用了程序包ieee.std_logic_unsigned,则在描述计数器时就可以使用其中的函数“+”(递增计数)和“-”(递减计数)。假定设计对象是增1计数器并且计数器被说明为向量,则当所有位均为‘1’时,计数器的下一状态将自动变成‘0’。举例来说,假定计数器的值到达“111”是将停止,则在增1之前必须测试计数器的值。

如果计数器被说明为整数类型,则必须有上限值测试。否则,在计数顺值等于7,并且要执行增1操作时,模拟器将指出此时有错误发生。

下面的例子是一个3位增1/减1计数器:当输入信号UP等于1 时计数器增1;当输入信号UP等于0时计数器减1。 Library ieee;

Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity up_down is Port(clk,rst,en,up: in std_logic; Sum: out std_logic_vector(2 downto 0); Cout: out std_logic); End;

Architecture a of up_down is

Signal count: std_logic_vector(2 downto 0); Begin Process(clk,rst) Begin If rst=’0’ then Count<=(others=>’0’);

49

Beijing Techshine Technology Co. TECHISHINE

Elsif rising_edge(clk) then If en=’1’ then Case up is When ‘1’ => count<=count+1; When others =>count<=count-1; End case; End if; End if; End process; Sum<=count; Cout <=’1’ when en=’1’ and ((up=’1’ and count=7) or (up=’0’ and count=0)) else ‘0’; End;

参考以上实例完成实验目的中所要求的4个计数器的设计。

二、 实验连线

同前,输入时钟信号接时钟电路的相应输出(CLK0~CLK5),复位信号接拨码开关或按键,输出信号接发光二极管。

50

Beijing Techshine Technology Co. TECHISHINE

实验二十一 MOORE机

一 实验目的

1、 如图21-1所示的状态图和状态机框图,设计并实现一个output=state类型的状态机,写出其VHDL源代码(包括entity 和architecture),当信号RST=‘0’时,状态机应回到初始状态S0。要求调试通过。

2、 对于图21-2所示的状态图和状态机框图,输出信号是否存在“毛刺”没有要求,写出其VHDL源代码(包括entity和architecture)并画出结果电路图,要求调试通过。

3、 对于图21-2所示的状态图和状态机框图,写出其VHDL源代码(包括entity 和architecture)并画出结果电路图,要求调试通过。要求输出信号没有“毛刺”。

二 实验内容

图21-1 状态一

图21-2 状态二

下面我们以一个存储控制器状态机的设计过程来介绍Moore机的设计。

51

Beijing Techshine Technology Co. TECHISHINE

设计要求:设计一个存储控制器状态机。能够根据微处理器的读写周期,分别对存储器输出写使能WE和读使能OE信号。

工作过程:存储控制器的输入信号为微处理器的就绪READY及读写read_write信号。当上电复位后,或read有效时,存储控制器开始工作,并在下一个时钟周期判断本次作业任务是读存储器还是写存储器。判断的依据是,当read_write有效时为读操作,否则为写操作。也就是说非读即写。读操作时,OE信号有效,写操作时,WE信号有效。当READY信号有效时,表示读本次作业处理完成,并使控制器恢复到初始状态。

控制器真值表见表21-1,状态图见图21-3。

图21-3 存储器控制器状态图

状态 OE 空闲(IDLE) 判断(DECISION) 写(WRITE) 读(READ) 0 0 0 1 E 0 0 1 0 输出 W

表21-1 存储控制器真值表

程序源代码: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY moore IS

PORT(clk,ready,read_write: IN Std_Logic;

oe,we : OUT Std_Logic); END moore;

52

Beijing Techshine Technology Co. TECHISHINE

ARCHITECTURE state_machine OF Moore IS TYPE state_type IS (idle,decision,read,write); SIGNAL present_state,next_state: state_type; BEGIN

state_comb: PROCESS(present_state,ready,read_write) BEGIN

CASE present_state IS WHEN idle => oe<='0'; we<='0';

IF(ready='1') THEN

next_state<=decision; ELSE

next_state<=idle; END IF;

WHEN decision => oe<='0'; we<='0';

IF(read_write='1') THEN next_state<=read; ELSE

next_state<=write; END IF; WHEN read => oe<='1'; we<='0';

IF(ready='1') THEN next_state<=idle; ELSE

next_state<=read; END IF; WHEN write => oe<='0'; we<='1';

IF(ready='1') THEN next_state<=idle; ELSE

next_state<=write; END IF; END CASE;

END PROCESS state_comb;

state_clocked:PROCESS(clk)

53

Beijing Techshine Technology Co. TECHISHINE

实验二十三 串入/并出移位寄存器

一 实验目的

根据实验内容中介绍的4位串入/并出移位寄存器的设计方法,设计一个8位串入/并出移位寄存器。

二 实验内容

本实验通过一个4位串入/并出移位寄存器设计过程来介绍如何设计串入/并出移位寄存器。 所谓的串入/并出移位寄存器,即输入的数据是一个接着一个有序地进入,输出时则一起送出。 例程代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ;

USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY sipo IS PORT( D_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; D_OUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END sipo;

ARCHITECTURE a OF sipo IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

P1: PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q(0) <= D_IN; FOR I IN 1 TO 3 LOOP Q(I) <= Q(I-1); END LOOP; END IF;

END PROCESS P1; D_OUT <=Q ; END a;

仿真结果如图23-1所示:

59

Beijing Techshine Technology Co. TECHISHINE

图23-1 4位串入/并出移位寄存器仿真波形图

上图中输入的数据为“1010”、“0111”两组4位数据。因输入的数据是每次一位依序进入,故输入、输出信号之间有4个CLK时间的延迟。为了过滤中间没用的数据,只读取完整的存储数据,实用上可将取样脉冲的周期设定成CLK脉冲的四倍,也就是说,每经过4个CLK脉冲后再读取数据一次,便能每次读取都得到正确的数据。可见上图有效的输出是A 7。

三 实验连线

输入信号D-IN(代表一位的串行数据输入)和CLK(代表抽样时钟信号),CLK时钟信号接适配器板子上的时钟信号,频率建议取在1Hz左右,D-IN接拨码开关或按键;输出信号有D-OUT0~D-OUT3(代表4位并行数据输出),接发光二极管。

60

Beijing Techshine Technology Co. TECHISHINE

实验二十四 并入/串出移位寄存器

一 实验目的

根据实验内容中介绍的4位并入/串出移位寄存器的设计方法,设计一个8位并入/串出移位寄存器。 二 实验内容

本实验通过一个4位并入/串出移位寄存器设计过程来介绍如何设计并入/串出移位寄存器。 所谓的并入/串出移位寄存器,即输入的数据是整组一次进入,输出时则一个接着一个依序地送出。 例程代码: LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY piso IS PORT( DATA_IN :IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK :IN STD_LOGIC; nLOAD :IN STD_LOGIC; DATA_OUT :OUT STD_LOGIC); END piso;

ARCHITECTURE a OF piso IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(nLOAD,CLK) BEGIN IF nLOAD = '0' THEN Q <= DATA_IN; ELSIF CLK'EVENT AND CLK = '1' THEN q(1) <= Q(0) ; FOR I IN 1 TO 3 LOOP Q(I) <= Q(I-1); END LOOP; END IF; END PROCESS; PROCESS(nLOAD,CLK) BEGIN IF nLOAD = '0' THEN DATA_OUT <= '0'; ELSIF CLK'EVENT AND CLK = '1' THEN DATA_OUT <= Q(3); END IF;

61

Beijing Techshine Technology Co. TECHISHINE

END PROCESS; END a;

仿真结果如图22-1所示。

图22-1 4位并入/串出移位寄存器仿真波形图

在程序中,增加了一个nLOAD信号,当nLOAD为‘0’时,数据才读入,这个‘0’的作用即为“Start bit”。告诉电路现在准备开始读入数据。

在图中,输入的数据为“0100”、“1110”、“1100”。

三、实验连线

同前,输入时钟信号接时钟电路的相应输出(CLK0~CLK5),输入信号接拨码开关或按键,输出信号接发光二极管。

62

Beijing Techshine Technology Co. TECHISHINE

实验二十五 串入/串出移位寄存器

一 实验目的

根据实验内容中介绍的4位串入/串出移位寄存器的设计方法,设计一个8位串入/串出移位寄存器。

二 实验内容

在这里我们通过一个4位串入/串出移位寄存器设计过程来介绍如何设计串入/串出移位寄存器。

所谓的串入/串出移位寄存器,即输入的数据是一个接着一个依序地进入,输出时一个接着一个依序地送出。

例程代码如下: LIBRARY ieee;

USE ieee.std_logic_1164.ALL; ENTITY siso IS PORT( DATA_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; DATA_OUT :OUT STD_LOGIC); END siso ;

ARCHITECTURE a OF siso IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q(0) <= DATA_IN; FOR I IN 1 TO 3 LOOP Q(I) <= Q(I-1); END LOOP; END IF; END PROCESS; DATA_OUT <= Q(3); END a;

仿真结果如图25-1:

图25-1 4位串入/串出移位寄存器仿真波形图

63

Beijing Techshine Technology Co. TECHISHINE

因为一开始时寄存器内部存储的数据为“0000”,必须等这4个“0”逐一移出后,新的数据才能进入并存储,帮数据的输入和输出会存有4个位延迟时间的差异。DATA_IN表示输入的数据流,DATA_OUT为输出的数据流,Q显示的为寄存器目前存储的数据内容。

三 实验连线

输入信号有CLK(时钟信号)、DATA-IN(数据输入),CLK用适配器板子上的时钟端,接数字信号源的CLK5,频率调节到1Hz左右,DATA-IN接拨码开关;输出信号DATA-OUT接发光二极管。

64

Beijing Techshine Technology Co. TECHISHINE

实验二十六 并入/并出移位寄存器

一 实验目的

根据实验内容中介绍的4位并入/并出移位寄存器的设计方法,设计一个8位并入/并出移位寄存器。

二 实验内容

本实验通过一个4位并入/并出移位寄存器设计过程来介绍如何设计并入/并出移位寄存器。 所谓的并入/并出移位寄存器,即输入的数据是一起进入,输出时则一起送出。 例程代码: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity pipo is port ( data_in: in std_logic_vector(3 downto 0); clk : in std_logic; data_out:out std_logic_vector(3 downto 0) ); end pipo;

architecture pipo of pipo is

signal q:std_logic_vector(3 downto 0); begin

process(clk) begin if clk'event and clk='1' then q<=data_in; data_out<=q; end if; end process; end pipo;

仿真结果如图26-1:

图26-1 4位并入/并出移位寄存器仿真波形图

程序中的并入/并出实际上是采用总线或排线的方式。而串行输入/输出则只有一条线相连接,

65

Beijing Techshine Technology Co. TECHISHINE

故需一个一个数据分别处理,串行的方式虽然硬件结构较为简单及经济,但相对的处理速度比较慢,尤其当位数大到某程度时,时间延迟会变得很明显。

三 实验连线

输入信号有clk(时钟信号)、data_in0~data_in3(4位数据输入),其中clk用适配器板子上的时钟端,接数字信号源的CLK0或CLK1等,频率可调节的高一些,data_in0~data_in3接拨码开关;输出信号data_out0~data_out3(4位数据输出)接发光二极管。

66

Beijing Techshine Technology Co. TECHISHINE

实验二十七 多功能寄存器

一 实验目的

设计并实现一个串/并进、串出移位寄存器。 二 实验内容

串/并进、串出移位寄存器在TTL手册中是74166芯片,其功能图如图27-1所示。 其中 :A~H:8位并行数据输入端 CLRN:异步清零端 SER:串行数据输入端 CLK:同步时钟输入端 CLKIH:时钟信号禁示端 STLD:移位/装载控制端 QH:串行数据输出端

通过查询74166的真值表可知: 图27-1 功能图 CLK=0时,输出为0;

CLKIH=1时,不管时钟如何变化,输出不变化。

STLD=1时,移位状态,在时钟上升沿时刻,向右移一位,SER串入的数据移入Q。 STLD=0时,加载状态,8位输入数据输入数据就能装到Q0~Q7寄存器。 波形仿真图如下图27-2和27-3:

图27-2 串行数据输入时的仿真图

67

Beijing Techshine Technology Co. TECHISHINE

图27-3 并行数据输入时的仿真图

三 实验连线

输入信号有CLK(同步时钟信号)、CLK1H(时钟信号禁示端)、CLRN(异步清零)、STLD(信号读取控制端)、SER(串行数据输入端)、A~H(8位并行数据输入端),CLK信号用适配器板子上的时钟端接数字信号源的CLK5,频率可以适当调节的低一些,大概在1Hz左右,CLK1H接低电平,CLRN接高电平,SER和A~H接拨码开关,STLD接拨码开关,观察图27-2串行数据输入时的仿真图和27-3 并行数据输入时的仿真图的波形,拨动拨码开关,观察现象。输出信号QH接发光二极管。

观察串行数据输入时,CLK、CLK1H、CLRN按照以上所述接线,STLD接高电平,拨动SER,观察QH的输出。

观察并行数据输入时,CLK、CLK1H、CLRN接线方式不变,按照需要拨动A~H,确定并行输入数据,将STLD接高电平,然后给一个低电平的脉冲(即忽然向下拨动,马上又拨回高电平),观察QH的输出。

68

Beijing Techshine Technology Co. TECHISHINE

置位法分别完成3~9、3~F 的顺序计数; 用八位数码管显示四个计数状态。

T35_6.gdf 原理图示

说明:

计数时钟频率 CLK< 0.5Hz, 扫描时钟频率 CKDSP> 40Hz;

这是按0,2,5,3,4,6,1变化的七进制计数器;图中包括两个独立的实现方法,一种为异步清零, 一种为同步清零,两种方法同时显示;

t5_6.gdf 用74LS161计数器加译码的方法实现异步清零七进制计数器的设计; 同时用状态机的方法实现同步清零七进制计数器的设计;

89

本文来源:https://www.bwwdw.com/article/a52f.html

Top