회원가입 ID/PW 찾기
AA

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

 

entity clk_60count is
port(clk : in std_logic;
        sec0 : out std_logic_vector(6 downto 0);
        sec1 : out std_logic_vector(6 downto 0));
end clk_60count;

 

architecture sample of clk_60count is
signal count : integer range 0 to 1000000;
signal one : std_logic_vector(3 downto 0);
signal ten : std_logic_vector(3 downto 0);

 

component segment
port(sw : in std_logic_vector(3 downto 0);
        seg : out std_logic_vector(6 downto 0));
end component;

 

for v0,v1 : segment use entity work. segment(sample);

 

begin
    p1 : process(clk)
    begin
        if(clk'event and clk = '1') then
            if(count = 1000000) then
                count <= 0;
            else
                count <= count + 1;
            end if;
        end if;
    end process;
 
 p2 : process(clk)
 begin
  if(clk'event and clk = '1') then
   if(count = 1000000) then
    count <= 0;
   else
    count <= count + 1;
   end if;
  end if;
 end process;
 
 p3 : process(clk)
 begin
  if(clk'event and clk = '1') then
   if(count = 1000000) then
    if(one = "1001") then
     if(ten = "0101") then
      ten <= "0000";
     else
      ten <= ten + 1;
     end if;
    end if;
   end if;
  end if;
 end process;
 
 v0 : segment port map(one,sec0);
 v1 : segment port map(ten,sec1);
 
end sample;

 

60초를 구현하는 소스라더군요. 컴포넌트로 세그먼트를 외부에서 불러올려고 하는데

 

세그먼트는 이렇게 불러와봤는데요.

 

전혀 반응이 없습니다.

 

library ieee;
use ieee.std_logic_1164.all;

entity segment is
port( sw : in std_logic_vector(3 downto 0);
   seg : out std_logic_vector(6 downto 0));
end segment;

architecture sample of segment is
 function dis_7_seg(x : std_logic_vector(3 downto 0)) return std_logic_vector is
  variable seg_decoder : std_logic_vector(6 downto 0);
 begin
  case x is
   when "0000" => seg_decoder := "0111111" ;
   when "0001" => seg_decoder := "0000110" ;
   when "0010" => seg_decoder := "1011011" ;
   when "0011" => seg_decoder := "1001111" ;
   when "0100" => seg_decoder := "1100110" ;
   when "0101" => seg_decoder := "1101101" ;
   when "0110" => seg_decoder := "1111101" ;
   when "0111" => seg_decoder := "0100111" ;
   when "1000" => seg_decoder := "1111111" ;
   when "1001" => seg_decoder := "1100111" ;
   when others => seg_decoder := "0000000" ;
  end case;
 return (seg_decoder);
 end dis_7_seg;
begin
 seg <= dis_7_seg(sw);
end sample;

 

뭐가 뭔지 이해도 잘 안되네요.

 

혹시 책이나,, 레포트 (유료) 괜찮은거 이해잘되는 것 있으면 추천부탁드립니다. 

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
  • 최대다수의 최대행복은 도덕과 입법의 초석이다.
    - 벤담
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.