程序的脉冲分配器部分采用状态机的方法编写。状态机是纯硬件数字系统中的顺序控制电路,在状态机的运行方式上类似于控制灵活方便的CPU,而在运行速度和工作可靠性方面都优于CPU。
状态机部分的VHDL代码如下:
PROCESS(C_ST,EN,N1,BCLK)
BEGIN
IF RISING_EDGE(BCLK) THEN C_ST<=N_ST;
IF EN='1' THEN
CASE C_ST IS
WHEN ST0=> IF N1="00000000" THEN
N_ST<=ST1; ELSE N_ST<=ST7;END IF;
CON_OUT<="1000";
WHEN ST1=> IF N1="00000000" THEN
N_ST<=ST2; ELSE N_ST<=ST0;END IF;
CON_OUT<="1100";
WHEN ST2=> IF N1="00000000" THEN
N_ST<=ST3;ELSE N_ST<=ST1;END IF;
CON_OUT<="0100";
WHEN ST3=> IF N1="00000000" THEN
N_ST<=ST4;ELSE N_ST<=ST2;END IF;
CON_OUT<;"0110";
WHEN ST4=> IF N1="00000000" THEN
N_ST<=ST5;ELSE N_ST<=ST3;END IF;
CON_OUT<="0010";
WHEN ST5=> IF N1="00000000" THEN
N_ST<=ST6; ELSE N_ST<=ST4;END IF;
CON_OUT<="0011";
WHEN ST6=> IF N1="00000000" THEN
N_ST<=ST7;ELSE N_ST<=ST5;END IF;
CON_OUT<="0001";
WHEN ST7=> IF N1="00000000" THEN
N_ST<=ST0; ELSE N_ST<=ST6;END IF;
CON_OUT<="1001";
WHEN OTHERS=> N_ST<=ST0;
CON_OUT<="0000";
END CASE;
END IF;
END IF;
END PROGESS;
2.4 结论