软件: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
阅读全文
848