안녕하세요. 검토하신 부분이 맞는 것 같습니다. Zybo Z7는 UART가 PS 블록에 연결되어, PL에 연결된 UART가 없는 것 같습니다. PL쪽에서는 아래의 Pmod USBUART를 연결해, 구현이 가능한 것으로 보입니다. Pmod USBUART https://digilent.com/reference/pmod/pmodusbuart/reference-manual?srsltid=AfmBOoo3sSSpn0Hw8AjLEfcdSs6Gr13MYHBjTx_9C_9iaDLfJcOVLAAf 참고 블로그 https://blackonyxkr.tistory.com/43
안녕하세요. 본 강의는 system-verilog 기반으로 하고 있습니다. 해당 코드를 AI를 이용해서 VHDL로 변환 후, 약간만 수정하면, VHDL 코드도 생성하실 수 있을 것 같습니다. 강의 마지막에 제가 생성한 uart_tx.vhd 파일을 추가시켜 놓겠습니다. 시뮬레이션 해서, 기존 uart_tx.sv 파일과 비교해보시면 좋겠습니다. 감사합니다.
먼저, 프레임을 정의해야 합니다. 예를 들어, Start Byte(1), Command(1), Address(1), Length(1), Data[0]... Data[Length-1], CheckSum(1), EndByte(1)가 될 수 있습니다. 특정 Address에서 데이터를 읽거나 쓸 때 사용합니다. UART에서 수신 된 데이터에서 Start Byte를 찾습니다. parameter START_BYTE = 8'h7B; always @(posedge clk) begin case (state) IDLE: begin if (rx_data == START_BYTE) state 이후, 설계한 프로토콜에 따라서, Command, Address, Length, Data 값을 각 변수에 저장합니다. parameter START_BYTE = 8'h7B; parameter END_BYTE = 8'h7D; typedef enum logic [2:0] { IDLE, CMD, ADDR, LEN, DATA, CHKSUM, END } state_t; state_t state; reg [7:0] length; reg [7:0] data_index; reg [15:0] checksum_calc; reg [7:0] checksum_recv; always @(posedge clk or posedge reset) begin if (reset) begin state 마지막으로, Checksum을 확인 뒤, 이상이 없다면, 수신한 Command값과 Address, Data에 따라 내부 Register를 설정하거나, 메모리에 데이터를 저장할 수 있습니다. 위 예시 코드를 참조하면, 도움이 될 것 같습니다.
제가 질문을 잘 이해하지 못해서요. Windows가 아닌 리눅스를 사용한다는 뜻인가요? WSL(Windows Subsystem for Linux) 같은? Vivado 실행 메모리가 부족하다는 뜻인가요? 아니면, 특정 디바이스(virtex같은) 사용에 실행 메모리가 부족한 것인가요?