안녕하세요. Arty Z10, 과 Zybo Z10 은 같은 Zynq 칩을 기반으로 합니다. 따라서 불가능 하지 않다고 판단이 됩니다. 해당 ‘설계독학의 임베디드 리눅스 & FPGA: 반도체 설계 완성편' 강의의 제작 당시 Zybo 를 사용했었고, 파란님이 Arty 를 갖고 있지는 않아요. 그래서, 모든 보드에 대해서 지원을 해드리는 것은 어려운 문제라는 생각이 드네요. 이 부분은 감안을 하셔서 수강여부를 판단해 주시면 감사하겠습니다. 감사합니다!
안녕하세요, 반갑습니다. 질문해주신 내용을 보니 파이프라인을 적용하기 전과 후의 개념에서 "왜 이전 상태에서는 Clock Speed(주기)가 25일 때 감당이 안 되는가?"에 대해 헷갈리시는 것 같네요. 차분하게 핵심만 짚어서 설명해 드릴게요. 결론부터 말씀드리면, 데이터가 가야 하는 길(Path)의 실제 물리적인 시간 과 우리가 강제로 인가하는 클럭의 주기(Clock Period)를 비교해 보시면 바로 이해가 가실 겁니다. 1. 파이프라인 적용 전 (왼쪽 그림) 실제 데이터가 통과해야 하는 시간 (Worst Path): 입력 $X$에서 출력 $P(X)$까지 가려면 가장 긴 경로를 거쳐야 합니다. 위쪽 길은 $15 + 25 = 40$이고, 아래쪽 길은 $20 + 25 = 45$이죠. 즉, 물리적으로 아무리 빨라도 데이터가 끝까지 도달하는 데 최소 45 라는 시간이 필요합니다. 인가하고자 하는 클럭 주기 ($t_{CLK}$): 우리가 시스템에 25 라는 주기를 가진 클럭을 주었다고 가정해 봅시다. 여기서 모순이 발생합니다. 클럭 주기가 25라는 것은, 매 25마다 새로운 데이터를 받아들이고 처리해서 내보내겠다는 뜻입니다. 하지만 실제 회로(Combinational Logic)는 결과를 내는 데 45가 걸립니다. 25라는 시간이 흘렀을 때, 데이터는 아직 목적지에 도달하지 못하고 길 중간(대략 25 위치)에 머물러 있겠죠? 이 상태에서 다음 클럭 엣지가 쳐버리면 제대로 된 데이터를 캡처하지 못하므로 Timing Violation 이 발생하는 것입니다. 즉, 파이프라인 레지스터가 없는 상태에서는 반드시 가장 느린 경로인 45보다 클럭 주기가 길어야만($t_{CLK} \ge 45$) 정상 동작합니다. 2. 파이프라인 적용 후 (오른쪽 그림) 경로의 분할: 중간에 레지스터를 콕 집어넣어 주면서, 이제 데이터가 한 번에 가야 하는 길이 두 단계로 쪼개졌습니다. Stage 1: 입력에서 중간 레지스터까지 (최대 20) Stage 2: 중간 레지스터에서 출력 레지스터까지 (최대 25) 클럭 주기 ($t_{CLK} = 25$): 이제 각 Stage에서 가장 긴 시간은 25입니다. 클럭 주기를 25로 주더라도, Stage 1(20 소요)과 Stage 2(25 소요) 모두 클럭 주기인 25 이내에 데이터 도달을 완료할 수 있습니다. 따라서 이때는 Violation 없이 정상적으로 동작하게 되는 것이죠. (전체 처리 시간인 Latency는 50으로 늘어나지만, 더 빠른 클럭을 쓸 수 있게 됩니다.) 요약하자면, 레지스터가 없을 때는 처음부터 끝까지 한 번에 가야 해서 45가 필요 한데, 클럭 주기를 25로 줘버리니 시간이 부족해서 터지는(Violation) 상황이라고 이해하시면 됩니다. 즐공하세요!!
안녕하세요. 🙂 결론부터 말씀드리면, 작성해주신 내용이 정확히 맞습니다. 완벽하게 이해하고 계십니다. UART(Universal Asynchronous Receiver-Transmitter)의 역할 UART는 두 하드웨어 장치 간에 데이터를 직렬(Serial)로 주고받기 위한 표준 통신 방식입니다. 우리가 사용하는 Zynq 보드 환경에서는 주로 보드의 PS(Processing System)와 호스트 PC 간에 텍스트나 데이터를 주고받는 통로 역할을 합니다. 4장의 경우: C 코드로 작성한 printf 문자열을 PC 화면(Vitis Serial Terminal)에 출력하거나, PC에서 입력한 값( scanf )을 보드로 전달해야 했기 때문에 UART 통신이 필수적이었습니다. 5장의 경우: 보드 내부의 HW/SW 동작만으로 LED를 제어하고 눈으로 점멸 상태만 확인하는 실습이었으므로, PC 쪽으로 데이터를 보낼 필요가 없었습니다. 따라서 UART를 비활성화해도 실습에 전혀 문제가 없었던 것입니다. UART는 터미널이 필요할 때만 사용하는가? 현재 진행하시는 강의와 같은 기초 개발/디버깅 환경에서는 "동작 상태 확인을 위한 로그(printf) 출력 및 명령어 입력" 목적이 가장 크기 때문에, 말씀하신 대로 시리얼 터미널을 사용할 때 주로 활성화합니다. 하지만 그 외에도 실무에서는 PC뿐만 아니라 블루투스 모듈, GPS 센서, 또는 다른 외부 마이크로컨트롤러(MCU) 등 UART 통신 인터페이스를 지원하는 다양한 외부 장치와 데이터를 주고받을 때 범용적으로 아주 많이 사용 됩니다. RX/TX 두 선만 가지고 통신할 수 있는 저속의 통신 방법이고요. 저희가 사용해본 UART 는 하나의 예라고 생각하시면 될 것 같아요. 즐공하세요.
안녕하세요 수강 감사드립니다. https://wikidocs.net/277541 다음링크에서 설치 관련 내용을 찾아보실 수 있는데요. 강의 업로드 시점과 촬영 시점의 갭이 있고, 영상에서 사용한 버전을 사용하셔도 강의를 따라오시는데 문제없다고 판단이 되는데요. 툴 버전이 중요한 요소는 아니라고 판단되는데, 급하시다면 다음링크를 통해서 2022.2 를 설치해주시면 감사하겠습니다. https://www.xilinx.com/support/download.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html 여기에 보시면 2022.2 를 설치하실 수 있습니다. 물론!! 피드백 해주신 최신 툴 설치는 지금 저도 해보려고 하고있고요. 다음주 주말쯤에 올려보도록 하겠습니다. 감사합니다. 즐공하세요!
안녕하세요 🙂 보드도 인플레이션이 와버려서 많이 비싸더라고요 ㅠ 당연히 가능하고요. 두 보드들의 차이는 resource 차이인데요. 그 말인 즉슨 연산 로직을 가볍게 하면 들어간다는 뜻입니다. 정확도 보다는 경험에 초점을 두신다면, 보드의 차이로 인해서 얻으실 수 있는 경험에는 큰 차이 없어보여요. 즐공하세요 🙂