实验七设计基本触发器

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

实验七设计基本触发器一、实验准备

该实验不需要使用七个模块组中的功能单元,所以拨码开关状态;拨码开关MODEL_SEL5-8全置于“OFF状态,以使用JTAG下载方式,这里用户可根据自己所用的下载线来选择适当的下载方式。矚慫润厲钐瘗睞枥庑赖賃軔朧。

二、实验目的

熟悉利用Quartusll开发数字电路的基本流程和Quartusll软件的相关操作,

介绍Quartusll的软件,掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,下载等基本操作。

了解VHDL或原理图设计方法与定制IP模块的思想。

掌握基本触发器的设计思路及工作原理

三、实验原理

通过开关分别输入单bit的数据,并用开关作为控制信号,实现置位和复位。将

T触发器的结果分别在2个LED上显示。聞創沟燴鐺險爱氇谴净祸測樅。

四、实验内容

1、用VHDL语言设计D触发器和T触发器;注意时钟要用到分频电路。

2、用Quartusll软件进行编译,仿真,下载到实验平台进行验证。

五、设计原理框图

六、引脚分配情况

D A21

CLK P25

CLR F6

P SET B21

QT AA11

Q AC10

MODEL SEL1-3 均置于“OFF

D触发器和

Q,QT 为D 触发器和T 触发器的输出信号,分别对应平台上的 LED0和LED7。CLR,PSET 为高电平清零和置位信号, CLK 为时钟信号。残骛楼諍锩瀨濟溆塹籟婭骤東。

七、结果分析

波形仿真

如上所述,Q,QT 作为D 触发器和T 触发器的输出信号,分别对应平台

CLR,PSET 为高电平清零和置位信号, CLK 为时 这里简单列出波形图, 实际可以自己加上其他的

八、VHDL 源程序代码

--D flip flop

library IEEE;

use IEEE.std_logic_1164.all;

ENTITY DFFL OP IS

PORT ( D: in STD_LOGIC;

CLK,CLR, PSET: in STD_LOGIC;-- 时钟,清零,置位

Q: out STD LOGIC --输出

);

END DFFL OP;

ARCHITECTURE FFA OF DFFL OP IS

BEGIN

P ROCESS(CLK ,P SET,CLR) BEGIN

Q<='1';

ELSIF CLR='1' THEN Q<='0';

ELSIF CLK'EVENT AND CLK='1' THEN

Name CLK CLR £ FS ET G QT Value a 11.£5 ] B

B B

B

B

B

]ps ISO. 0 ILS 11.25 ns

-J ______________

-rLZFLZFLFLJnLJn_J^

4S0 0 ns

从上图可以看出, 上的LED0和LED7,正确对应了结果。 钟信

号,都实现了相应的功能, 限于篇幅, 信号进行仿真。酽锕极額閉镇桧猪訣锥顧荭钯。 --输入

IF P SET='1' THEN --异步置位

--异步7冃零

Q<=D;

END IF;

END PROCESS;

END FFA;

--- T flip flop

LIBRARY IEEE;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY TFFLOP IS

PORT (

T: in STD_LOGIC; -- 输入

CLK: in STD_LOGIC; --- 时钟

QT: OUT STD_LOGIC -输出

);

END TFFLOP;

ARCHITECTURE FFB OF TFFLOP IS

SIGNAL Q_S:STD_LOGIC;

BEGIN

PROCESS(CLK,T)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF T='1' THEN

Q_S<=NOT Q_S;

ELSE

Q_S<=Q_S;

END IF;

END IF;

QT<=Q_S;

END PROCESS;

END FFB;

-- 分频电路,平台提供的频率为50MHZ, 进行分频,便于观察!library IEEE; use IEEE.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity dividef is

port (

CLK : in std_logic;

CLK_D: out std_logic

); end entity;

architecture DIVIDE_

arch of dividef is

signal COUNT :

std_logic_vector (18 downto 0 ); begin

PROCESS(CLK)

BEGIN

if clk'event and clk='1' then

IF COUNT<"1111111111111111111" then

COUNT<=COUNT+1;

ELSE COUNT<="0000000000000000000";

END IF;

END IF;

END PROCESS;

PROCESS(COUNT)

BEGIN

IF COUNT="1111111111111111111" THEN

CLK_D<='1';

ELSE CLK_D<='0';

END IF;

END PROCESS;

end architecture;

---此处附上JK 触发器的代码,实现步骤相同,可进行参考library IEEE;

use IEEE.std_logic_1164.all;

ENTITY JKFF IS

PORT (

J,K: in STD_LOGIC; CLK,CLR,PSET: in

STD_LOGIC;

Q,QB: out STD_LOGIC

);

END JKFF;

ARCHITECTURE FFC OF JKFF IS

SIGNAL Q_S,QB_S:STD_LOGIC;

BEGIN

相关文档
最新文档