VHDL语言编程一个注意点

本文通过一个VHDL状态机的例子,解释了在时钟边沿触发的进程中,信号值的变化会有一个周期的延迟。当时钟上升沿到来时,当前状态的更新会发生在下一个时钟周期,导致输出在第二个时钟周期后才会反映出状态变化。这与C语言的即时执行特性不同,强调了VHDL中信号的延迟特性和锁存行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一点需要注意,下面以一个状态机为例进行说明。

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_signed.all;

entity statem is   port (       

        clk   : in std_logic;    

        rst   : in std_logic;            

        selin : in std_logic;                    

        num   : out std_logic_vector (1 downto 0)                

     );  end statem;

architecture alg of statem is

  Type mystate is (st0,st1,st2,st3);

  signal current_state,next_state : mystate;

  begin  

  sync:process(clk,rst)   

      begin     

      if (rst = '1')then   

                current_state <= st0;     

      elsif (clk'event and clk = '1')then   

                current_state <= next_state;     

       end if;   

   end process sync;

   nex:pro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值