UART가 FPGA에 구현되도록 Verilog 코드를 작성하고 있으며 첫 번째 바이트 이후에 START 비트의 비트로 동기화하는 데 문제가 있습니다.Verilog Falling Edge Detection
관리자가 내 수신 신호를 동기화하고 어떤 종류의 인터럽트를 내 FSM에 통신 수단으로 사용하여 시작을 인식하도록 제안했습니다.
내가 상승 에지 검출 기술에 대해 읽고, 나는 이런 식으로 뭔가 할 수있는 같은 느낌 :
나의 이해에서module StartDetectionUnit (
input clk, state, signal_in,
output trigger
);
reg signal_d;
always @(posedge clk)
begin
signal_d <= signal_in;
end
assign trigger = signal_in & (!signal_d);
endmodule
는이 같은 설명은 상승 에지를 검출을하지 하강 에지, RS-232 통신에서는 "START"가 로직 '0'입니다.
게다가 IDLE 상태 [000으로 하드 코드 됨]에서 플래그를 할당하고 싶지만 마지막 할당에서 미친 게이팅을 수행하는 것이 하드웨어가 아닌 것처럼 들립니다.
tldr 두 문제
감사 무리 FSM의 하나의 특정 상태에서 이렇게 비동기 입력 신호
- 내가 ' Verilog를 처음 사용하고 HDL을 처음 사용하는 경우
는 명확하게 : 는 "Signal_in"나는 시뮬레이션을하는 동안 내 USB - 투 - UART 브리지 또는 테스트 벤치에서 수신하고있는 비트입니다. 모듈 StartDetectionUnit ( 입력 clk, 상태, signal_in, 출력 트리거 ); reg signal_d; 항상 @ (posedge clk) 시작 signal_d <= signal_in; end assign trigger = (! signal_in) & signal_d & (! state); endmodule 필자는 이렇게 작성했으며, 처음 몇 번의 시뮬레이션을 반복하면 제대로 작동하는 것 같습니다. 작동해야하는 상태는 "000"으로 코딩되어 있습니다. –
비동기 외부 입력 신호를 시뮬레이션 할 수 없습니다. 그것은 항상 시뮬레이션에서 작동합니다. – FabienM
심지어 테스트 벤치를 통해? –