VHDL同步复位(清零)与异步复位(清零)的简易区分

同步:必须要等待时钟信号的有效沿(上升或下降)时,再判断复位(清零)信号是否有效,两个必须保持同步才能保证复位(清零)。
异步:不管时钟信号状态如何,只要复位(清零)信号为有效,立即复位(清零)。

在同步时PROCESS敏感列表中只需要有时钟信号即可,然而在异步时则需要加上复位信号。
详情可以见VHDL代码。

下面以一个简单的计数器 为例实现同步和异步的功能:
输入端:时钟信号(CLK),复位端;
输出端:输出信号;

异步code:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
USE ieee.numeric_std.ALL;
ENTITY counter_test IS
PORT(
clk : IN std_logic;
Reset : IN std_logic;
Q : OUT std_logic_vector(3 downto 0)
);
END counter_test;

ARCHITECTURE TB OF counter_test IS 
signal Q1 :std_logic_vector(3 downto 0);
BEGIN
process(clk,reset)
 begin
if reset='1' then Q1<=(others=>'0');--复位为高电平有效
		elsif clk'event and clk='1' then Q1<=Q1+1;
			end if;
end process;
Q<=Q1;	
END TB;

在这里插入图片描述

同步code:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
USE ieee.numeric_std.ALL;
ENTITY counter_test IS
PORT(
clk : IN std_logic;
Reset : IN std_logic;
Q : OUT std_logic_vector(3 downto 0)
);
END counter_test;

ARCHITECTURE TB OF counter_test IS 
signal Q1 :std_logic_vector(3 downto 0);
BEGIN
process(clk,reset)
 begin
		   if clk'event and clk='1' then 
			if reset='1' then Q1<=(others=>'0');--复位为高电平有效
			else Q1<=Q1+1;
			end if;
			end if;
end process;
Q<=Q1;	
END TB;

在这里插入图片描述

test bench:

LIBRARY ieee;                                               
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY counter_test_vhd_tst IS
END counter_test_vhd_tst;
ARCHITECTURE counter_test_arch OF counter_test_vhd_tst IS                                                 
SIGNAL clk : STD_LOGIC:='0';
SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL Reset : STD_LOGIC:='0';
COMPONENT counter_test
	PORT (
	clk : IN STD_LOGIC;
	Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
	Reset : IN STD_LOGIC
	);
END COMPONENT;	
constant T: time := 10ns;
BEGIN
	i1 : counter_test
	PORT MAP (
	clk => clk,
	Q => Q,
	Reset => Reset
	);
clk_test : PROCESS
 BEGIN
 wait for T/2; 
clk <= not clk;
END PROCESS clk_test;
rst_test : PROCESS
 BEGIN
	reset<='0';
	wait for 32ns;
	reset<='1';
	wait for 15ns;
	reset<='0';
	wait for 45ns;
	wait;
 END PROCESS rst_test; 
END counter_test_arch;
  • 20
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

料子懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值