게시글
질문&답변
CPU강의 관련하여 질문드립니다.
안녕하세요, 답변 남겨드립니다.1. 혹시 어떤 강의 몇분쯤일까요? 제가 잘못 설명드린거일수도 있어서, 잘못 설명드린거면 정정드리겠습니다.2."Read"와 "Write"는 일반적으로 메모리에서 데이터를 읽거나 쓰는 행위를 설명하는 용어입니다. 반면, "Load"와 "Store"는 CPU와 메모리 간의 데이터 전송을 더 구체적으로 설명하는 용어입니다.Load: 메모리에서 데이터를 CPU의 레지스터로 가져오는 작업입니다.Store: CPU의 레지스터에서 데이터를 메모리에 저장하는 작업입니다. 따라서, "Load"와 "Store"는 CPU의 관점에서 메모리와의 데이터 전송을 강조하는 용어이며, "Read"와 "Write"는 더 일반적인 데이터 접근을 나타냅니다.3. 맞습니다. 설계 프로젝트에서 언급된 "store"와 "write back"은 저장하는 장소가 다릅니다.Store: 메모리에 데이터를 저장하는 작업으로, 일반적으로 데이터 메모리(data memory)에 해당합니다.Write Back: CPU의 레지스터 파일(register file)에 데이터를 저장하는 작업입니다. 따라서, "store"는 메모리에 데이터를 저장하는 것이고, "write back"은 CPU 내부의 레지스터에 데이터를 저장하는 것으로 이해하시면 됩니다.
- 0
- 2
- 43
질문&답변
메모리 제품 검증에서 FPGA 활용
안녕하세요, 메모리사업부 회로설계 직무에 적혀져있습니다!https://media-cdn.linkareer.com/activity_manager/applications/427578위 링크 한 번 확인해보시면 되겠습니다.Requirements 반도체 기본 동작원리, 전자회로이론 등 반도체 회로설계에 필요한 역량 보유자 프로그래밍 언어 (C, C++, Verilog/VHDL, Python 등) 역량 보유자 FPGA/ASIC 설계 및 검증 (Vivado, Quartus, Design Compiler 등) 역량 보유자 Pluses 직무와 연관된 경험 보유자 (프로젝트, 논문, 특허, 경진대회) 반도체 개발 관련 Tool (SPICE Simulation, Schematic Editor, Layout Editor, Trace32, Power Supply, Logic/Protocol Analyzer, FPGA 등) 역량 보유자 프로그래밍 언어 (C++, System Verilog, Python, VBA 등) 역량 보유자
- 0
- 2
- 39
질문&답변
SRAM 시뮬레이션 결과가 이상해서 질문드립니다.
네 안녕하세요, 답변 남겨드립니다.din dout을 wdata rdata으로 바꾸신듯 한데요, reg [WIDTH-1:0] din; wire [WIDTH-1:0] dout;TB를 보시면 stimulus를 위와 같은 신호로 주고있어서wdata rdata 신호에 입력이 안들어가고 있을 것 같네요!
- 0
- 2
- 55
질문&답변
buffer에 관하여 질문드립니다.
1. 첫 번째 경우: ```verilog wire not_in; assign out = ~not_in; assign not_in = ~in; ``` 여기서 not_in은 in의 인버터를 통해 생성됩니다. 즉, not_in은 in의 반전된 값입니다. 그리고 out은 not_in의 반전된 값이므로, 최종적으로 out은 in의 값을 그대로 출력하게 됩니다. 이 경우, not_in은 인버터 역할을 하고 있으며, out은 in의 값을 출력하는 구조입니다.2. 두 번째 경우: ```verilog wire not_in; assign out = not_in; assign not_in = in; ``` 이 경우에는 not_in이 in의 값을 그대로 전달합니다. 따라서 out은 not_in의 값을 그대로 출력하게 되며, 이는 in의 값과 동일합니다. 이 경우에는 인버터가 없고, 단순히 버퍼 역할을 하는 것입니다.결론적으로, 첫 번째 경우는 인버터가 포함된 구조이고, 두 번째 경우는 버퍼 역할을 하는 구조입니다. 따라서 첫 번째 경우의 not_in은 인버터로 볼 수 있지만, 두 번째 경우의 not_in은 버퍼로 볼 수 있습니다. 그런데 실제로 인버터 2개를 취하면 이론적으로는 버퍼 역할을 한다고 생각이 들겠지만, 합성하는 툴에 따라서 그냥 원 신호 그대로 합성을 할 수도 있습니다.왜냐하면 논리적으로 결과값이 같이 때문에 가장 gate 수가 적은 쪽으로 합성하려고 할 것이기 때문입니다. 이와같이 기능 단위에서만 합성하게 되면 그렇지만나중에 타이밍적인 이슈 때문에 의도적으로 버퍼를 넣는 것이라면PI라는 직무에서 합성을 할 때 버퍼를 추가적으로 넣는 작업을 해서 타이밍 이슈를 해결하게 됩니다.
- 0
- 2
- 50
질문&답변
강의 중 질문 있습니다!
네 안녕하세요, 답변 남겨드립니다XOR gate는 기호를 보시면 딱히 입력에 인버터를 취하지 않고 있기 때문에별도의 입력 인버터는 필요 없습니다.https://ko.wikipedia.org/wiki/XOR_%EA%B2%8C%EC%9D%B4%ED%8A%B8그래서 8개만 가지고서도 쉽게 구현이 가능한 gate가 됩니다.
- 0
- 2
- 58
질문&답변
async fifo 질문있습니다!
네 안녕하세요, 답변 남겨드립니다.말씀하신것처럼 passing short 문제가 일어날 수 있고,이를 방지하기 위해 기본적으로 싱크로나이저를 적용하게 되는데 이는 말씀하신 것처럼 register의 형태로 구현됩니다.따라서 올바른 방식이며, 작성하신 코드도 기능적으로 정상동작 한다면타이밍적인 이슈가 없을 것으로 보입니다.
- 1
- 2
- 87
질문&답변
QDR에 대한 질문
네 안녕하세요, 답변 남겨드립니다.DDR2와 GDDR5에서의 QDR(Quad Data Rate) 개념은 용어는 같지만, 적용 방식과 맥락에서 차이가 있습니다.DDR2의 QDRDDR(Double Data Rate) 메모리는 클럭의 상승 및 하강 엣지에서 데이터를 전송하여 데이터 전송 속도를 두 배로 증가시킵니다. DDR2는 이러한 DDR 기술을 기반으로 하여 성능을 향상시킨 것입니다. DDR2에서 QDR이라는 용어는 일반적으로 사용되지 않지만, DDR 기술의 발전으로 인해 데이터 전송 속도가 증가한 것은 사실입니다.GDDR5의 QDRGDDR5부터 적용된 QDR 기술은 시스템 클록(CK)과 데이터 클록(WCK)을 별도로 사용하여 데이터 전송 속도를 더욱 높이는 방식입니다. GDDR5는 시스템 클록의 두 배 속도로 데이터 클록을 설정하여, 클록 주기를 4배로 높이는 방식으로 작동합니다. 이로 인해 GDDR5는 데이터 전송 속도를 크게 향상시킬 수 있습니다. 결론적으로, DDR2에서의 QDR 개념은 DDR 기술의 발전을 의미하는 반면, GDDR5에서의 QDR은 시스템 클록과 데이터 클록을 별도로 사용하여 데이터 전송 속도를 극대화하는 구체적인 기술을 의미합니다. 따라서 두 기술은 같은 이름을 사용하지만, 실제로는 서로 다른 방식으로 작동하며, 각각의 메모리 기술의 특성과 요구 사항에 맞춰 설계되었습니다.
- 1
- 2
- 133
질문&답변
TPSRAM 질문있습니다!
네 안녕하세요, 답변 남겨드립니다.1. https://www.inflearn.com/community/questions/1363460/tpsram-%EA%B5%AC%EC%A1%B0-%EA%B4%80%EB%A0%A8%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4이 질문과 답변 한 번 읽어보시면 이해가 되실겁니다!2. SRAM에서와 달리 ra(read address)에서 rd(read data)가 나오기까지 1클럭이 늦게 나오는 이유는 맞습니다. TPSRAM은 일반적으로 데이터의 안정성을 높이기 위해 플립플롭(Flip-Flop)을 사용하여 데이터를 버퍼링합니다. 이로 인해 읽기 동작이 1클럭 지연되는 것입니다. 즉, ra에서 rd가 나오기까지의 지연은 플립플롭을 거치는 과정에서 발생하는 것입니다.이러한 구조는 TPSRAM이 여러 포트를 통해 동시에 접근할 수 있도록 하면서도 데이터의 일관성을 유지하는 데 도움을 줍니다.
- 1
- 2
- 90
질문&답변
Wrapper 사용하는 이유에 대해 궁금합니다.
네 안녕하세요, 답변 남겨드립니다.말씀하신것도 맞습니다. Wrapper를 사용하는 이유는 여러 가지가 있지만, 주로 다음과 같은 이유들 때문입니다:1. 코드의 간결성: Wrapper를 사용하면 인스턴스화 코드가 분리되어 있어, 코드의 가독성이 높아집니다. 이를 통해 복잡한 객체 생성 과정을 간단하게 관리할 수 있습니다.2. 유지보수 용이성: Wrapper를 통해 인스턴스화 관련 코드를 한 곳에서 관리할 수 있으므로, 나중에 수정이 필요할 때 해당 Wrapper의 정의 부분만 수정하면 됩니다. 이는 코드의 다른 부분에 영향을 주지 않고도 변경할 수 있게 해줍니다.3. 재사용성: Wrapper를 사용하면 동일한 인스턴스를 여러 곳에서 재사용할 수 있습니다. 이를 통해 코드 중복을 줄이고, 일관성을 유지할 수 있습니다.4. 의존성 관리: Wrapper를 통해 의존성을 명확하게 관리할 수 있습니다. 필요한 의존성을 Wrapper에서 정의하고, 이를 통해 인스턴스를 생성하면, 의존성 변경 시 Wrapper만 수정하면 되므로 관리가 용이합니다.5. 테스트 용이성: Wrapper를 사용하면 테스트할 때 Mock 객체를 쉽게 주입할 수 있어, 단위 테스트를 수행하기가 더 수월해집니다.결론적으로, Wrapper를 사용하면 코드의 유지보수성과 가독성을 높이고, 의존성 관리와 테스트를 용이하게 할 수 있습니다.
- 1
- 1
- 148
질문&답변
V3 613mV 결정
제가 해당 시뮬을 돌릴 때 BJT를 다른 공정 파라미터를 사용해서 동일한 10uA임에도 불구하고 저는 613mV가 떳네요!10uA로 한 이유는 그것이 PMOS의 동작점을 잡을 때 적절한 전류이기 때문입니다!이에 대한 것은 네이버 카페에서 설명해둔 영상을 녹화하여 수강생 분들께 제공드리고 있습니다.그리고 두번째 질문은일단 예를 들어 저항값을 sweep하여 전압값을 확인할 수 있는 방법이 있긴 한데,https://www.youtube.com/watch?v=ZCMxT0EKF7M일단 임시로는 이 영상을 참고해보신다면 이해는 되실겁니다!말씀하신 기능에 대해서는 라이브 방송을 통해 한번 더 다뤄드릴 수 있도록 하겠습니다.혹시 네이버카페에 가입하여 등급업 하셨을까요?https://cafe.naver.com/samcoach위 카페에서 등급업 후, 과제 질문 게시판에 동일한 질문 남겨주시면 제가 한번 더 확인하여 방송으로 알려드리고 녹화본 전달드리겠습니다.!
- 1
- 2
- 109