用vhdl编写的各种功能的计数器代码

上传人:ji****n 文档编号:45217712 上传时间:2018-06-15 格式:DOC 页数:8 大小:42.50KB
返回 下载 相关 举报
用vhdl编写的各种功能的计数器代码_第1页
第1页 / 共8页
用vhdl编写的各种功能的计数器代码_第2页
第2页 / 共8页
用vhdl编写的各种功能的计数器代码_第3页
第3页 / 共8页
用vhdl编写的各种功能的计数器代码_第4页
第4页 / 共8页
用vhdl编写的各种功能的计数器代码_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《用vhdl编写的各种功能的计数器代码》由会员分享,可在线阅读,更多相关《用vhdl编写的各种功能的计数器代码(8页珍藏版)》请在金锄头文库上搜索。

1、Library IEEE ; use IEEE.std_logic_1164.all ; use IEEE.std_logic_arith.all ;ENTITY counters ISPORT ( d: IN INTEGER RANGE 0 TO 255; clk: IN BIT; clear: IN BIT; ld: IN BIT; enable: IN BIT; up_down : IN BIT; qa: OUT INTEGER RANGE 0 TO 255; qb: OUT INTEGER RANGE 0 TO 255; qc: OUT INTEGER RANGE 0 TO 255;

2、qd: OUT INTEGER RANGE 0 TO 255; qe: OUT INTEGER RANGE 0 TO 255; qf: OUT INTEGER RANGE 0 TO 255; qg: OUT INTEGER RANGE 0 TO 255; qh: OUT INTEGER RANGE 0 TO 255; qi: OUT INTEGER RANGE 0 TO 255; qj: OUT INTEGER RANGE 0 TO 255; qk: OUT INTEGER RANGE 0 TO 255; ql: OUT INTEGER RANGE 0 TO 255; qm: OUT INTE

3、GER RANGE 0 TO 255; qn: OUT INTEGER RANGE 0 TO 255 );END counters;ARCHITECTURE a OF counters IS BEGIN - An enable counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk = 1) THEN IF enable = 1 THEN cnt := cnt + 1; END IF; END IF;qa= cnt;END PROCESS;- A synchronous load

4、 counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk = 1) THEN IF ld = 0 THEN cnt := d; ELSE cnt := cnt + 1; END IF; END IF;qb=cnt; END PROCESS;- A synchronous clear counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk = 1) THEN IF c

5、lear = 0 THEN cnt := 0; ELSE cnt := cnt + 1; END IF; END IF;qc=cnt;END PROCESS;- An up/down counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; BEGIN IF (up_down = 1) THEN direction := 1; ELSEdirection := -1; END IF;IF (clkEVENT AND clk = 1) THEN cnt := cnt + dire

6、ction; END IF;qd=cnt;END PROCESS;- A synchronous load enable counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk = 1) THEN IF ld = 0 THEN cnt := d; ELSE IF enable = 1 THEN cnt := cnt + 1; END IF; END IF; END IF;qe=cnt;END PROCESS;- An enable up/down counter PROCESS

7、(clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; BEGIN IF (up_down = 1) THEN direction := 1; ELSE direction := -1; END IF;IF (clkEVENT AND clk = 1) THEN IF enable = 1 THEN cnt := cnt + direction; END IF;END IF;qf=cnt;END PROCESS;- A synchronous clear enable counter PROCESS (cl

8、k) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk = 1) THEN IF clear = 0 THEN cnt := 0; ELSE IF enable = 1 THEN cnt := cnt + 1; END IF; END IF; END IF;qg=cnt;END PROCESS;- A synchronous load clear counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND clk

9、= 1) THEN IF clear = 0 THEN cnt := 0; ELSE IF ld = 0 THEN cnt := d; ELSE cnt := cnt + 1; END IF; END IF; END IF;qh=cnt;END PROCESS;- A synchronous load up/down counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; BEGIN IF (up_down = 1) THEN direction := 1; ELSE dir

10、ection := -1; END IF;IF (clkEVENT AND clk = 1) THEN IF ld = 0 THEN cnt := d; ELSE cnt := cnt + direction; END IF; END IF;qi=cnt;END PROCESS;- A synchronous load enable up/down counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; BEGIN IF (up_down = 1) THEN directio

11、n := 1; ELSE direction := -1; END IF;IF (clkEVENT AND clk = 1) THEN IF ld = 0 THEN cnt := d; ELSE IF enable = 1 THEN cnt := cnt + direction; END IF; END IF; END IF;qj=cnt;END PROCESS;- A synchronous clear load enable counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; BEGIN IF (clkEVENT AND c

12、lk = 1) THEN IF clear = 0 THEN cnt := 0; ELSE IF ld = 0 THEN cnt := d; ELSE IF enable = 1 THEN cnt := cnt + 1; END IF; END IF; END IF; END IF;qk=cnt;END PROCESS;- A synchronous clear up/down counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; BEGIN IF (up_down = 1

13、) THEN direction := 1; ELSE direction := -1; END IF;IF (clkEVENT AND clk = 1) THEN IF clear = 0 THEN cnt := 0; ELSE cnt := cnt + direction; END IF; END IF;ql=cnt;END PROCESS;- A synchronous clear enable up/down counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; VARIABLEdirection : INTEGER; B

14、EGIN IF (up_down = 1) THEN direction := 1; ELSE direction := -1; END IF;IF (clkEVENT AND clk = 1) THEN IF clear = 0 THEN cnt := 0; ELSE IF enable = 1 THEN cnt := cnt + direction; END IF; END IF; END IF;qm =cnt;END PROCESS;- A modulus 200 up counter PROCESS (clk) VARIABLEcnt: INTEGER RANGE 0 TO 255; CONSTANT modulus : INTEGER := 200; BEGIN IF (clkEVENT AND clk = 1) THEN IF cnt = modulus THEN cnt := 0; ELSE cnt := cnt + 1; END IF; END IF;qn=cnt;END PROCESS; END a;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号