0
리셋 가능 및 동기 데이터로드가있는 플립 플롭을 만들려고했습니다. 그것은 VHDL 시뮬레이션에서 잘 작동하지만 내가 ISE에서 합성 할 때 그것은 나에게 다음과 같은 오류가 있습니다 : 나는 순서로이 오류를 해결할 수있는 방법플립 플롭은 클록 에지 조건이 아닐 때까지 값을 보유하지 않습니다.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity D_FF is
port (D: in std_logic;
clk: in std_logic;
reset_enable: in std_logic;
reset: in std_logic;
Q: out std_logic:='0'
);
end D_FF;
architecture a1 of D_FF is
begin
proc: process (D,clk,reset,reset_enable)
begin
if (reset_enable='1') then
if (reset='1') then
q<='0';
end if;
end if;
if (clk'event and clk='1') then -- Line 24
q<=d;
end if;
end process proc;
end a1;
: 코드를 여기에
Line 24: statement is not synthesizable since it does not hold its value under NOT(clock-edge) condition
입니다 코드를 합성 가능하게 만들고 내가 작성한 코드와 동등한 코드를 만들 수 있습니까?
내 두 경우 순서 논리 번 래치 다른 레지스터를 설명 q''할당 문. 비동기 부분 인'if' reset_condition ...과'elsif'clock_event_condition ....이있는 if 문으로 그들을 결합하십시오. 자일링스는 합성 사용자 가이드에 비동기식 리셋/세트 코딩 예제를 표시하지 않습니다. 일부 최적화 유형을 차단하는 용도로 사용되지 않습니다. 또한 IEEE Std 1076.6-2004 VHDL 레지스터 전송 레벨 (RTL) 합성을위한 IEEE 표준 (철회)을 참조하십시오. 민감도 목록에 D가 필요하지 않습니다. – user1155120
클럭 프로세스는 https://stackoverflow.com/a/34067908/4090959와 같이 보입니다. 또한'ieee.std_logic_arith.all; 또는'use ieee.std_logic_unsigned.all;'을 사용하지 마십시오. –
무엇이'reset_enable'입니까? 비동기 도메인에 논리를 추가하면 타이밍 클로저 문제가 발생할 수 있으므로 사용하지 않는 것이 좋습니다. – JHBonarius