名称:电子表设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
电子表设计
要求
1) 其显示时间范围是00:00 :00~23:59:59。
2) 时钟具有清零功能。
3) 时钟具有暂停计时。
4) 时钟具有调节时间功能。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 要求
1) 其显示时间范围是00:00 :00~23:59:59。
2) 时钟具有清零功能。
3) 时钟具有暂停计时。
4) 时钟具有调节时间功能。
设计流程图:
2. 工程文件
3. 程序文件
代码
4. 程序编译
5. RTL图
6. 仿真图
整体仿真图
60进制模块仿真图
24进制模块仿真图
显示模块仿真
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --24进制计数器 ENTITY wy_counter_24 IS PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC;--复位清零 set_key : IN STD_LOGIC;--校时 cnt_ten : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--计数值十位 cnt_one : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--计数值个位 ); END wy_counter_24; ARCHITECTURE behave OF wy_counter_24 IS SIGNAL clk_cnt : STD_LOGIC:='0'; SIGNAL cnt_ten_buf : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数值十位 SIGNAL cnt_one_buf : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数值个位 BEGIN --输出 cnt_ten <= cnt_ten_buf; cnt_one <= cnt_one_buf; clk_cnt<=clk OR set_key;--校时和时钟或运算,即校时也可以控制时间 PROCESS (clk_cnt,reset) begin IF(reset='1')THEN cnt_ten_buf <= "0000"; cnt_one_buf <= "0000"; ELSIF (clk_cnt'EVENT AND clk_cnt = '1') THEN--正常计时 IF (cnt_ten_buf = "0010" AND cnt_one_buf = "0011") THEN--23时后变为00 cnt_ten_buf <= "0000"; cnt_one_buf <= "0000"; ELSIF (cnt_ten_buf = "0000" AND cnt_one_buf = "1001") THEN--09变为10 cnt_ten_buf <= "0001"; cnt_one_buf <= "0000"; ELSIF (cnt_ten_buf = "0001" AND cnt_one_buf = "1001") THEN--19变为20 cnt_ten_buf <= "0010"; cnt_one_buf <= "0000"; ELSE--个位累加 cnt_ten_buf <= cnt_ten_buf; cnt_one_buf <= cnt_one_buf + "0001"; END IF; END IF; END PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1250
阅读全文
605