gencontrol.vhd

来自「高速任意波形产生器控制模块 控制NCO,FIFO」· VHDL 代码 · 共 82 行

VHD
82
字号
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity gencontrol is
port(clk_250,ctrl_en,locked_in,valid_in:in std_logic;
     ncoen,ncoreset_n,ffen:out std_logic);
end;

architecture one of gencontrol is
  type states is(st0,st1,st2,st3,st4);
  signal currentstate,nextstate:states;

begin

switchtonextstate:process(clk_250)
begin
  if clk_250'event and clk_250='1' then
    currentstate<=nextstate;
  end if;
end process switchtonextstate;

changestatemode:process(currentstate)
begin
  case currentstate is
    when st0=>ncoen<='0';
              ncoreset_n<='0';
              ffen<='0';
              if ctrl_en='1' then
                nextstate<=st1;
              else
                nextstate<=st0;
              end if;
    when st1=>ncoen<='0';
              ncoreset_n<='1';
              ffen<='0';
              if ctrl_en='1' then
                if locked_in='1' then
                  nextstate<=st2;
                else
                  nextstate<=st1;
                end if;
              else
                nextstate<=st0;
              end if;
    when st2=>ncoen<='1';
              ncoreset_n<='1';
              ffen<='0';
              if ctrl_en='1' then
                if valid_in='1' then
                  nextstate<=st3;
                else
                  nextstate<=st2;
                end if;
              else
                nextstate<=st0;
              end if;
    when st3=>ncoen<='1';
              ncoreset_n<='1';
              ffen<='1';
              if ctrl_en='1' then
                if valid_in='0' then
                  nextstate<=st4;
                else
                  nextstate<=st3;
                end if;
              else
                nextstate<=st0;
              end if;
    when st4=>ncoen<='0';
              ncoreset_n<='1';
              ffen<='0';
              if ctrl_en='0' then
                nextstate<=st0;
              else
                nextstate<=st4;
              end if;
    when others=>nextstate<=st0;
  end case;
end process changestatemode;

end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?