用元件例化完成数码扫描显示电路设计源程序
出处:工大1号 发布于:2007-04-29 11:04:21
--************************************************--
--***********十进制计数器(count10.vhd)************--
--************************************************--
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--************************************************--
ENTITY COUNT10 IS
PORT(CLK,CLR,ENA:IN STD_LOGIC;
QOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COUNT10;
--************************************************--
ARCHITECTURE BEHAV OF COUNT10 IS
BEGIN
PROCESS(CLK,CLR,ENA)
VARIABLE TMP:INTEGER RANGE 0 TO 10;
BEGIN
IF CLR='1' THEN
TMP:=0;
ELSIF CLK'EVENT AND CLK='1' THEN
IF ENA='1' THEN
TMP:=TMP+1;
IF TMP=10 THEN
TMP:=0;
END IF;
END IF;
END IF;
QOUT<=CONV_STD_LOGIC_VECTOR(TMP,4);
END PROCESS;
END BEHAV;
==================================
--************************************************--
--**********扫描信号发生器(count8.vhd)**********--
--************************************************--
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--************************************************--
ENTITY COUNT8 IS
PORT(CLK:IN STD_LOGIC;
QOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END COUNT8;
--************************************************--
ARCHITECTURE BEHAV OF COUNT8 IS
signal TMP:INTEGER RANGE 0 TO 10;
BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
TMP<=TMP+1;
IF TMP=8 THEN
TMP<=0;
END IF;
END IF;
QOUT<=CONV_STD_LOGIC_VECTOR(TMP,3);
END PROCESS;
END BEHAV;
================================
--************************************************--
--************七段译码器(deLED.vhd)*************--
--************************************************--
library ieee;
use ieee.std_logic_1164.all;
--************************************************--
entity deled is
port(
datain:in std_logic_vector(3 downto 0);
qout:out std_logic_vector(6 downto 0)
);
end deled;
--************************************************--
architecture func of deled is
begin
process(datain)
begin
if datain= "0000" then qout<="1111110";
elsif datain= "0001" then qout<="0110000";
elsif datain= "0010" then qout<="1101101";
elsif datain= "0011" then qout<="1111001";
elsif datain= "0100" then qout<="0110011";
elsif datain= "0101" then qout<="1011011";
elsif datain= "0110" then qout<="1011111";
elsif datain= "0111" then qout<="1110000";
elsif datain= "1000" then qout<="1111111";
elsif datain= "1001" then qout<="1111011";
else null;
end if;
end process;
end func;
--====================================
--===========顶层文件描述=============
--====================================
--************************************************--
--***********scan.vhd************--
--************************************************--
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--************************************************--
ENTITY SCAN IS
PORT(CLKK,CLK_SEL,CLRR,ENAA:IN STD_LOGIC;
SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
QOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END SCAN;
--************************************************--
ARCHITECTURE BEHAV OF SCAN IS
--************************************************--
--***************定义个元件*******************--
COMPONENT COUNT10 --定义个元件:十进制计数器的调用;
PORT(CLK,CLR,ENA:IN STD_LOGIC;
QOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END COMPONENT;
--************************************************--
--***************定义第二个元件*******************--
COMPONENT COUNT8 --定义第二个元件:扫描信号发生器的调用;
PORT(CLK:IN STD_LOGIC;
QOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END COMPONENT;
--************************************************--
--***************定义第三个元件*******************--
COMPONENT DELED --定义第三个元件:七段通用译码器的调用;
port(
datain:in std_logic_vector(3 downto 0);
qout:out std_logic_vector(6 downto 0)
);
END COMPONENT;
--************************************************--
--*******************定义信号*********************--
SIGNAL S1:STD_LOGIC_VECTOR(3 DOWNTO 0);
--************************************************--
--****************元件例化体开始******************--
BEGIN
U1:COUNT10 PORT MAP(CLKK,CLRR,ENAA,S1); --例化个元件;
U2:DELED PORT MAP(S1,QOUT); --例化第二个元件;
U3:COUNT8 PORT MAP(CLK_SEL,SELOUT); --例化第三个元件;
END BEHAV;
--************************************************--
--*****************程序结束××*******************--
--************************************************--
上一篇:大功率稳压逆变电源的设计与制作
下一篇:锁相环 CD4046 原理及应用
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 电源设计故障防护:现代保护 IC 的简单解决方案2025/8/5 16:10:25
- 电源噪声的来源与应对策略2025/8/4 16:31:13
- 直流可编程电源串联或并联连接的优势2025/8/4 16:25:37
- 解析 BUCK 电路:负载电流增大时电感纹波电流的变化2025/7/31 15:59:18
- 深度解析 DC-DC 电源 PCB 设计关键要点2025/7/30 16:50:03