- 将大工程拆解为若干子程序;
- 编写子程序,分别仿真验证;
- 将子程序代码合并:①人为合并,将四个程序代码杂糅,创建新工程;②编写顶层代码,在顶层代码中调用子程序,归一使用。

顶层程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sum is --定义实体
port(
i_sys_clk:in std_logic;
i_sys_rst:in std_logic;
o_lamp_display_val:out std_logic_vector(9 downto 0);
o_guan_display_val:out std_logic_vector(6 downto 0)
);
end entity sum;
architecture behave5 of sum is--定义行为
--定义子部件
component fenpinqi is --蜂鸣器声明
generic(
sys_clk_fre_value:INTEGER:=50000000;--系统时钟50MHz
div_clk_fre_value:INTEGER:=12500000--4分频
);
port(
i_sys_clk:in STD_LOGIC;--系统时钟
i_sys_rst:in STD_LOGIC;--系统复位
o_div_clk:out STD_LOGIC--系统输出
);
end component;
component mod10counter is -- mod10声明
generic(
cnt_mod_value: integer:=10 --定义模值
);
port(
i_lamp_clk:in std_logic;--时钟频率 1Hz时钟
i_sys_rst:in std_logic;--复位
o_lamp_val:out std_logic_vector(3 downto 0)--输出为4维向量
);
end component;
component LEDcontrol is -- LED声明
port(
i_lamp_val:in std_logic_vector(3 downto 0);
i_sys_rst:in std_logic;
o_lamp_display_val:out std_logic_vector(9 downto 0)
);
end component;
component shumaguan is --数码管声明
port(
i_time_val:in std_logic_vector(3 downto 0);
i_sys_rst:in std_logic;
o_guan_display_val:out std_logic_vector(6 downto 0)
);
end component;
--定义中间变量
signal w_sys_rst:std_logic;--寄存复位信号
signal w_div_clk:std_logic;--寄存时钟信号
signal w_lamp_val:std_logic_vector(3 downto 0);
begin --定义管口map 端口映射
U1:fenpinqi port map( --组块 端口传递
i_sys_clk=>i_sys_clk, --分频器输入为系统时钟
i_sys_rst=>w_sys_rst, --寄存的复位
o_div_clk=>w_div_clk); --输出
U2:mod10counter port map(
i_lamp_clk=>w_div_clk,
i_sys_rst=>w_sys_rst,
o_lamp_val=>w_lamp_val);
U3:LEDcontrol port map(
i_lamp_val=>w_lamp_val,
i_sys_rst=>w_sys_rst,
o_lamp_display_val=>o_lamp_display_val);
U4:shumaguan port map(
i_time_val=>w_lamp_val,
i_sys_rst=>w_sys_rst,
o_guan_display_val=>o_guan_display_val);
end architecture behave5;
仿真波形
