게시글
질문&답변
2024.11.29
SRAM 시뮬레이션 결과가 이상해서 질문드립니다.
네 안녕하세요, 답변 남겨드립니다.din dout을 wdata rdata으로 바꾸신듯 한데요, reg [WIDTH-1:0] din; wire [WIDTH-1:0] dout;TB를 보시면 stimulus를 위와 같은 신호로 주고있어서wdata rdata 신호에 입력이 안들어가고 있을 것 같네요!
- 0
- 2
- 21
질문&답변
2024.11.23
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
- 21
질문&답변
2024.11.23
강의 중 질문 있습니다!
네 안녕하세요, 답변 남겨드립니다XOR gate는 기호를 보시면 딱히 입력에 인버터를 취하지 않고 있기 때문에별도의 입력 인버터는 필요 없습니다.https://ko.wikipedia.org/wiki/XOR_%EA%B2%8C%EC%9D%B4%ED%8A%B8그래서 8개만 가지고서도 쉽게 구현이 가능한 gate가 됩니다.
- 0
- 2
- 44
질문&답변
2024.11.23
async fifo 질문있습니다!
네 안녕하세요, 답변 남겨드립니다.말씀하신것처럼 passing short 문제가 일어날 수 있고,이를 방지하기 위해 기본적으로 싱크로나이저를 적용하게 되는데 이는 말씀하신 것처럼 register의 형태로 구현됩니다.따라서 올바른 방식이며, 작성하신 코드도 기능적으로 정상동작 한다면타이밍적인 이슈가 없을 것으로 보입니다.
- 1
- 2
- 58
질문&답변
2024.10.17
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
- 95
질문&답변
2024.10.17
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
- 71
질문&답변
2024.09.05
Wrapper 사용하는 이유에 대해 궁금합니다.
네 안녕하세요, 답변 남겨드립니다.말씀하신것도 맞습니다. Wrapper를 사용하는 이유는 여러 가지가 있지만, 주로 다음과 같은 이유들 때문입니다:1. 코드의 간결성: Wrapper를 사용하면 인스턴스화 코드가 분리되어 있어, 코드의 가독성이 높아집니다. 이를 통해 복잡한 객체 생성 과정을 간단하게 관리할 수 있습니다.2. 유지보수 용이성: Wrapper를 통해 인스턴스화 관련 코드를 한 곳에서 관리할 수 있으므로, 나중에 수정이 필요할 때 해당 Wrapper의 정의 부분만 수정하면 됩니다. 이는 코드의 다른 부분에 영향을 주지 않고도 변경할 수 있게 해줍니다.3. 재사용성: Wrapper를 사용하면 동일한 인스턴스를 여러 곳에서 재사용할 수 있습니다. 이를 통해 코드 중복을 줄이고, 일관성을 유지할 수 있습니다.4. 의존성 관리: Wrapper를 통해 의존성을 명확하게 관리할 수 있습니다. 필요한 의존성을 Wrapper에서 정의하고, 이를 통해 인스턴스를 생성하면, 의존성 변경 시 Wrapper만 수정하면 되므로 관리가 용이합니다.5. 테스트 용이성: Wrapper를 사용하면 테스트할 때 Mock 객체를 쉽게 주입할 수 있어, 단위 테스트를 수행하기가 더 수월해집니다.결론적으로, Wrapper를 사용하면 코드의 유지보수성과 가독성을 높이고, 의존성 관리와 테스트를 용이하게 할 수 있습니다.
- 1
- 1
- 116
질문&답변
2024.09.03
V3 613mV 결정
제가 해당 시뮬을 돌릴 때 BJT를 다른 공정 파라미터를 사용해서 동일한 10uA임에도 불구하고 저는 613mV가 떳네요!10uA로 한 이유는 그것이 PMOS의 동작점을 잡을 때 적절한 전류이기 때문입니다!이에 대한 것은 네이버 카페에서 설명해둔 영상을 녹화하여 수강생 분들께 제공드리고 있습니다.그리고 두번째 질문은일단 예를 들어 저항값을 sweep하여 전압값을 확인할 수 있는 방법이 있긴 한데,https://www.youtube.com/watch?v=ZCMxT0EKF7M일단 임시로는 이 영상을 참고해보신다면 이해는 되실겁니다!말씀하신 기능에 대해서는 라이브 방송을 통해 한번 더 다뤄드릴 수 있도록 하겠습니다.혹시 네이버카페에 가입하여 등급업 하셨을까요?https://cafe.naver.com/samcoach위 카페에서 등급업 후, 과제 질문 게시판에 동일한 질문 남겨주시면 제가 한번 더 확인하여 방송으로 알려드리고 녹화본 전달드리겠습니다.!
- 1
- 2
- 100
질문&답변
2024.08.29
MEM/WB 질문 있습니다
안녕하세요! 답변 남겨드립니다!ALU 연산 결과와 Data Memory 접근 타이밍1. ALU 연산 결과: EX/MEM 레지스터에서 ALU의 결과는 다음 사이클에 MEM/WB 레지스터로 이동합니다. 이 부분은 맞습니다.2. Data Memory 접근: Data Memory에서 값을 가져오는 경우, EX/MEM 레지스터에서 주소를 받고, 다음 사이클에 Data Memory에서 값을 읽어옵니다. 이 값은 그 다음 사이클에 MEM/WB 레지스터로 이동합니다. 따라서, Data Memory에서 값을 읽는 경우는 다음과 같은 사이클이 소모됩니다: - 1 사이클: EX/MEM에서 주소를 Data Memory에 전달 - 2 사이클: Data Memory에서 값이 출력 - 3 사이클: 출력된 값이 MEM/WB 레지스터로 이동이 경우, Data Load를 수행할 때는 총 3 사이클이 소모됩니다. 따라서, ALU 연산 결과와 Data Memory 접근을 합치면, Data Load 명령은 총 5 사이클이 소모됩니다 (ALU 연산 1 사이클 + Data Memory 접근 3 사이클 + MEM/WB로의 이동 1 사이클). 사이클 소모의 차이- Instruction 별 사이클 소모 차이: 맞습니다. 각 명령어의 특성에 따라 소모되는 사이클 수가 다를 수 있습니다. 예를 들어, ALU 연산은 5 사이클이 소모되지만, Data Load는 5 사이클이 소모되며, Store 명령은 Data Memory에 값을 쓰는 과정이 포함되므로 추가적인 사이클이 필요할 수 있습니다.결론적으로, Data Load 명령은 5 사이클이 소모되며, 각 명령어에 따라 소모되는 사이클 수는 다를 수 있습니다.
- 0
- 1
- 72
질문&답변
2024.08.26
TPSRAM 구조 관련하여 질문 있습니다!
네 안녕하세요, 답변 남겨드립니다.말씀하신 상황을 생각해보면M5가 열려있는 상태에서 M6가 열려있고, RBL = High인 경우를 말씀해주시는 걸까요? 만약 그렇게 되면 M5와 M6의 Ron 저항이 매우 작아서 leakage가 VDD to GND로 세는 상황이긴합니다!
- 1
- 1
- 63