내가 가지고있는 VHDL 디자인을 합성하려고하면 다소 이상한 경고가 나타납니다. 나는 테트리스를 구축하려고하고 그래서 내 모델 개체는 다음과 같은 유형의 정의가 :민감도 목록에있는 레코드 배열이 올바로 작동하지 않는 레코드
constant PAIR_WIDTH: natural := 6;
type pair_type is
record
x, y: signed(PAIR_WIDTH - 1 downto 0);
end record;
type tetromino_shape_type is array(0 to 3) of pair_type;
type tetromino_type is
record
shape: tetromino_shape_type;
color: std_logic_vector(3 downto 0);
end record;
이러한 형태의 구조는 나에게 4 개 블록의 위치를 나타 내기 위해 signed
4 쌍을 가진의 Tetromino 및 나타내고 std_logic_vector
을 제공합니다 이 블록은 테트밀 미를 그려야합니다. 여기서 유일하게 "이상한"것은 tetromino_type
이 레코드 (pair_type
)의 배열 (tetromino_shape_type
)을 가진 레코드라는 것입니다.
process(clk, rst)
begin
if (rst = '1') then
state_reg <= idle;
elsif (clk'event and clk = '1') then
current_pos_reg <= current_pos_next;
current_tetromino_reg <= current_tetromino_next;
end if;
end process;
그리고 다른 프로세스 : 그래서
signal current_pos_reg, current_pos_next: pair_type; -- position of the current tetromino in grid coordinates
signal current_tetromino_reg, current_tetromino_next: tetromino_type; -- current tetromino piece
, 나는 레지스터를 설정하는 과정을 만든 다음 상태 로직 :
process(current_pos_reg, current_tetromino_reg)
begin
--even just keeping the same state as before causes this issue I'm about to show
current_pos_next <= current_pos_reg;
current_tetromino_next <= current_tetromino_reg;
end process;
신시사이저 (자일링스 ISE (웹 패크가 아닌)) ES) 다음 나에게 다음과 같은 경고 제공 :
One or more signals are missing in the process sensitivity list. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification. The missing signals are:
<current_tetromino_reg.shape<0>.x>, <current_tetromino_reg.shape<0>.y>, <current_tetromino_reg.shape<1>.x>, <current_tetromino_reg.shape<1>.y>, <current_tetromino_reg.shape<2>.x>, <current_tetromino_reg.shape<2>.y>, <current_tetromino_reg.shape<3>.x>, <current_tetromino_reg.shape<3>.y>
어떤 이상한 이유를, 레코드의 배열 내에서 레코드의 회원이 감도 목록에 포함되지 않습니다. 나는 배열의 개인 std_logic
구성원이 포함되는 것과 같은 방식으로 포함되도록 기대했을 것입니다. 또한 오류가 눈에 띄지 않게 나타나는 것은 current_tetromino_reg.block
이며, 문제의 원인이되는 배열의 레코드 멤버 일뿐입니다.
내 질문 : 내가 잘못 뭐하는 거지
- ? 개인 회원을 민감한 목록에 추가 할 수는 있지만 지루한 것처럼 보입니다.
- 이것은 버그입니까? 나는 VHDL 전문가가 아니다. (나는 아직 언어에 대한 완전한 명령을 가지고 있지 않다.) 그러나 이것이 일어날 이유를 생각할 수 없다. 아마도 내가 인식하지 못하는 민감도 목록에 자동으로 포함되는 규칙에 대한 특정 예외가있을 수 있습니까?
이 질문을 참조 다른 레코드 유형의 레코드 유형 인 경우 XST 알려진 문제는 다음과 같습니다 http://stackoverflow.com/questions/ 15091766/how-to-fix-xilinx-ise-warning-about-sensitivity-list - 이것이 사소한 XST 단점일지도 모르는 것처럼 보입니다. – fru1tbat
단일 프로세스 상태 시스템을 사용하는 또 다른 이유! 다음 상태 로직을 상태 레지스터와 동일한 클록 된 프로세스에 넣기 만하면됩니다. –
@MartinThompson 2 세그먼트 디자인이 더 읽기 쉽다고 생각했습니다. 교수님이 생각하기를 바라는 것보다 덜 일반적입니까? (그들은 한 가지 과정에 모든 것을 집어 넣는 것에 대해 매우 부정적인 의견을 갖고있는 것처럼 보였습니다.) –