×
嵌入式 > 技术百科 > 详情

用元件例化完成数码扫描显示电路设计源程序

发布时间:2024-06-26 发布时间:
|

1、本题目中将要用到的元件:

----

--十进制计数器(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 PROCESS.html" target="_blank" title="PROCESS">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 THEN

TMP<=TMP+1;

IF TMP=8 THEN

TMP<=0;

END IF;

END IF;

QOUT<=CONV_STD_LOGIC_VECTOR(TMP,3);

END PROCESS.html" target="_blank" title="PROCESS">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;

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 发生器的调用;

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;

----

--程序结束××--

----


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
看业界大佬们如何看待未来趋势!智能制造?健康医疗?新流通?