VHDL:行为计数器
此示例实现了具备负载、清理和上数/下数功能的行为计数器。它为经过特定设备架构优化,因此性能可能会有所不同。英特尔® FPGA 推荐使用 lpm_counter 函数来实现计数器(参见 VHDL:下数计数器)。此示例用于展示无需 LPM 的计数器实现。
有关在您的项目中使用此示例的更多信息,请访问:
counters.vhd
ENTITY counters IS PORT( d : IN INTEGER RANGE 0 TO 255; clk : IN BIT; clear : IN BIT; load : IN BIT; up_down : IN BIT; qd : OUT INTEGER RANGE 0 TO 255); END counters; ARCHITECTURE a OF counters IS BEGIN -- An up/down counter PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; VARIABLE direction : INTEGER; BEGIN IF (up_down = '1') THEN --Generate up/down counter direction := 1; ELSE direction := -1; END IF; IF (clk'EVENT AND clk = '1') THEN IF (load = '1') THEN --Generate loadable cnt := d; --counter. 删除这些 ELSE --行以提升性能 cnt := cnt + direction; END IF; --The following lines will produce a synchronous --clear on the counter IF (clear = '0') THEN cnt := 0; END IF; END IF; qd <= cnt; --Generate outputs END PROCESS; END a;