软件:Quartus
语言:VHDL
代码功能:
步长可变加减计数器
加减步长可变,模为100,即比如步长为3,加到99后不清零 而是2;步长为3,减到0后不清零 而是97。
用vhdl代码
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --计数器 ENTITY?counter?IS ???PORT?( ??????clk????????:?IN?STD_LOGIC;--时钟 ??????rst_n??????:?IN?STD_LOGIC;--复位,低电平复位 ??????add_sub????:?IN?STD_LOGIC;--加减控制,高电平加,低电平减 ??????step???????:?IN?STD_LOGIC_VECTOR(6?DOWNTO?0);--计数步进 ??????count_out??:?OUT?STD_LOGIC_VECTOR(6?DOWNTO?0)--计数器输出 ???); END?counter; ARCHITECTURE?RTL?OF?counter?IS ??? ???SIGNAL?count?:?STD_LOGIC_VECTOR(6?DOWNTO?0);--定义信号 BEGIN ???PROCESS?(clk,?rst_n) ???BEGIN ??????IF?((NOT(rst_n))?=?'1')?THEN--复位,低电平复位 ?????????count?<=?"0000000"; ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(add_sub?=?'1')?THEN--加减控制,高电平加 ????????????IF?((count??+?step?)?>?99?)?THEN--判断相加后大于99 ???????????????count?<=?(count?+?step)?-?"1100100";--输出为相加后减去100 ????????????ELSE ???????????????count?<=?count?+?step;--相加不大于99可以正常相加 ????????????END?IF; ?????????ELSE--低电平减 ????????????IF?(count?<?step)?THEN--判断count?<?step ???????????????count?<=?(count?+?"1100100")?-?step;--输出将计数器加上100后再减去step ????????????ELSE ???????????????count?<=?count?-?step;--count大于等于step可以直接相减 ????????????END?IF;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1227
阅读全文