实验七设计基本触发器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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