VHDL学习笔记——顶层程序编写

这篇博客介绍了如何将大工程分解为多个子程序进行VHDL编程。首先,通过创建分频器、模10计数器、LED控制器和数码管显示等子模块,然后分别进行仿真验证。接着,通过编写顶层代码并在其中调用这些子程序实现系统的集成。最终,展示了顶层程序的结构和仿真波形,证实了设计的正确性。
摘要由CSDN通过智能技术生成
  1. 将大工程拆解为若干子程序;
  2. 编写子程序,分别仿真验证;
  3. 将子程序代码合并:①人为合并,将四个程序代码杂糅,创建新工程;②编写顶层代码,在顶层代码中调用子程序,归一使用。

在这里插入图片描述

顶层程序
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;

仿真波形

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值