【VHDL】同步复位、置位的D触发器设计

题目描述:

用VHDL语言设计一个同步复位、置位的D触发器

 

原理:D触发器是能够存储1位二进制码的逻辑电路,它有两个互补输出端,其输出状态不仅与输入有关,而且还与原先的输出状态有关。触发器有两个稳定状态,用以表示逻辑状态“1”和“0”。在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态,它是一个具有记忆功能的二进制信息存储器件,是构成各种时序电路的最基本逻辑单元。

 

VHDL源代码:

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.std_logic_unsigned.all; 
entity trigger_d is 
  port(clk,d,sreset,sset:in std_logic; 
               q,qb:out std_logic); 
end entity; 
architecture art of trigger_d is 
  begin 
  process(clk,d,sreset,sset) 
    begin 
      if clk'event and clk='1' then 
          if sreset='1' then q<='0';qb<='1'; 
     elsif sset='1' then q<='1';qb<='0'; 
              else q<=d;qb<=not(d); 
          end if; 
      end if; 
  end process; 
end architecture art;

波形图如下:

原始波形图

 

 

 

 

功能仿真图

 

 

时序仿真图

 

VHDL语言设计同步复位的D触发器,可参考以下实现方法和代码示例: ### 实现思路 设计时需考虑时钟信号、数据输入、复位信号和信号。同步复位意味着复位操作在时钟信号的有效边沿(通常是上升沿)进行。在时钟上升沿,根据复位信号状态决定输出值。若复位信号有效,输出清零;若信号有效,输出为高电平;若两者都无效,则输出跟随数据输入。 ### 代码示例 ```vhdl library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity trigger_d is port( clk, d, sreset, sset: in std_logic; q, qb: out std_logic ); end entity; architecture art of trigger_d is begin process(clk, d, sreset, sset) begin if clk'event and clk = '1' then if sreset = '1' then q <= '0'; qb <= '1'; elsif sset = '1' then q <= '1'; qb <= '0'; else q <= d; qb <= not(d); end if; end if; end process; end architecture art; ``` ### 代码解释 - **库和包声明**:使用`ieee.std_logic_1164.all`包来处理标准逻辑类型,`ieee.std_logic_unsigned.all`包用于无符号数操作。 - **实体定义**:定义名为`trigger_d`的实体,包含时钟信号`clk`、数据输入`d`、同步复位信号`sreset`、同步信号`sset`,以及输出信号`q`和其反相输出`qb`。 - **结构体实现**:在`process`块中,根据时钟信号的上升沿触发操作。若`sreset`为高电平,`q`清零,`qb`高;若`sset`为高电平,`q`高,`qb`清零;其他情况,`q`跟随`d`,`qb`为`d`的反相。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值