2012-02-14 2 views
2

나는 D 래치를 사용하여 VHDL로 D 플립 플롭을 구현하려고합니다. 하지만 시계에 오류가있는 것 같아요. 그게 뭔지 알아 내지 못합니다.D 플립 플롭 (VHDL)

다음은 내 D 래치 코드입니다.

Library ieee; 
Use ieee.std_logic_1164.all; 

entity d_latch is 
    port (c,d : in std_logic; 
     q,nq : out std_logic); 
end d_latch; 

architecture arch of d_latch is 

Signal qt, nqt: std_logic; 

begin 

    qt <= (d nand c) nand nqt; 
    nqt <= ((not d) nand c) nand qt; 

    q <= qt; 
    nq <= nqt; 

end arch; 

나는 그것을 테스트하고 그것을 작동하고, 여기 내 D 플립 플롭에 대한 코드입니다 : 오류

Library ieee; 
Use ieee.std_logic_1164.all; 

entity d_flipflop is 
    port (d,clock : in std_logic; 
     q,nq : out std_logic); 
end d_flipflop; 

architecture arch of d_flipflop is 

Component d_latch 
Port 
(
    d, clk: in std_logic; 
    q, nq : out std_logic 
); 
End Component ; 

Signal qt, nqt: std_logic; 

begin 

dl1: d_latch port map (
    d => d, 
    clk => not clock, 
    q => qt 
); 

dl2: d_latch port map (
    d => qt, 
    clk => clock, 
    q => q, 
    nq => nq 
); 

end arch; 

하고 여기에 있습니다 :

** Error: /home/devplayer/CSC343/Lab_2_Content/d_flipflop.vhd(25): (vcom-1436) Use of non globally static actual (prefix expression) of formal "clk" requires VHDL 2008. 

당신에게

답변

2
감사를

포트 할당에 전체 표현식을 사용할 수 없습니다. dl1 인스턴스의 포트에 할당 할 때 시계를 반전하는 대신 반전 된 시계를 만들어 다음과 같이 사용하십시오.

clockn <= not clock; 

dl1: d_latch port map (
    d => d, 
    clk => clockn, 
    q => qt 
); 
+0

감사합니다. – ratsimihah