묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
[Ch.5] SRAM의 장점 관련 질문
안녕하세요! SRAM의 장점 중 Mux, Demux의 딜레이를 줄일 수 있다는 부분에 대해 질문 드립니다. (1) 제가 이해한 내용으로는, 데이터를 Read할 때 BL와 BLB을 모두 합친 16개의 signal을 보기 위해 MUX 16:1이 필요한 걸로 볼 수 있지만, Sense amp로 인해 1-stage를 줄일 수 있기 때문에 딜레이를 감소시킬 수 있는 것으로 이해했습니다. 이렇게 이해하는 것이 맞는지 궁금합니다.(2) Sense amp 없이도 BL 8개만 확인하여 출력을 얻어내는 방식을 사용할 수 있다고 생각했는데, 이러한 방식은 왜 사용하지 않는지 궁금합니다.항상 좋은 강의와 함께 질문글 읽어주셔서 감사합니다!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
과제3 질문
제가 포트에 대한 개념이 부족했었는데 아래에 정리한 글이 맞을까요?1. 칩 관점칩 포트: 칩 전체의 입출력을 위한 포트로, 외부와의 통신을 담당합니다.모듈 핀: 칩 내부의 특정 모듈에서 사용하는 개별적인 접점으로, 각 모듈의 기능을 수행하기 위한 신호를 전달합니다.2. 핀 묶음 관점포트: 여러 개의 핀을 묶어서 하나의 단위로 다루는 개념으로, 데이터 전송이나 제어 신호를 처리하는 역할을 합니다.핀: 포트의 구성 요소로, 개별적인 전기적 접점입니다.--> 싱글포트 sram : read, write중 하나를 할 수 있는 포트 1개가 존재(WE)--> 투포트 sram : read포트 1개, write포트 1개(we, wa, wd/ re, ra, rd)--> 듀얼포트 sram : read, write를 할 수 있는 포트가 2개씩(cs_a, addr_a, we_a, wd_a, rd_a / cs_b, addr_b, we_b, wd_b, rd_b)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
16강 질문
1) Area가 클수록 Cost가 비싸고 따라서 Area가 크면 용량이 작다고 설명하셨습니다.먼저 Area와 용량의 관계에서 "Area가 크다는 것은 각 메모리 Cell의 크기가 크다는 것이고 따라서 더 적은 수의 Cell을 넣을 수 있어 용량이 적음" 으로 이해했고, Area와 Cost의 관계는 Area가 클수록 공정에서 비용이 들어 Cost가 비싼것으로 이해했습니다 하지만 결론적으로 Area와 용량이 무조건적으로 반비례하는 것에 대한 이해가 잘 되지 않습니다. 2) 0이 저장된 상태에서 1을 WRITE→ 우측 인버터의 출력부분에 0이 저장되어 있을 때, 여기서 WL에 1을 주고 BL에 1을 주면 BL과 인버터가 short되면서 1과 0이 만나게 된다. 이때 BL의 신호 1은 우측 인버터 부분 신호 0이 있으므로 충전되지 않은(또는 매우 적게 충전된) Parastic Cap을 충전시키게 된다. 따라서 상태를 바꾸지 못 할수도 있는데, 이는 그저 BL의 신호 세기를 충분히 높혀주면 되는 부분이다. 라고 이해했는데 맞을까요??(pdf의 블로그에 들어가보니 접지로 BL의 신호가 흘러서 상태를 바꾸지 못할수도 있다고 되어있어서요 !!)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
ASIC에서 SRAM에 관한 질문입니다.
안녕하세요, 정성이 느껴지는 강의를 제공해 주심에 감사드립니다. 컴퓨터 구조의 메모리 계층 구조와 Verilog로 SRAM 모델링하기 강의에서 궁금증이 생겨 질문 드립니다. ASIC 칩을 찍어내는 상황이라는 가정을 하고, SRAM의 DEPTH를 2의 지수가 아닌 수(예를 들면 1021)로 지정하면, 실제 칩에는 DEPTH가 1021인 SRAM이 올라가나요? 아니면 1024짜리 SRAM이 올라가나요? 파운드리마다 다른가요? 실제 ASIC 칩에 DEPTH가 1021인 SRAM이 올라간다고 가정한다면, 주소의 bitwidth는 10-bit이므로 1022번이나 1023번 주소처럼 잘못된 주소에 접근할 가능성이 있습니다. 그렇기 때문에 이를 막는 로직이 추가로 필요할 것이라고 생각이 드는데, 이때 발생하는 overhead를 고려하는 것과 그냥 DEPTH가 1024인 SRAM을 올려버리는 것을 PPA 관점으로 비교할 수 있는 방법이 있을까요? 3.parameter로 선언된 변수를 비교 대상으로 삼아도 ASIC에서 아무 문제 없나요? 가령, if (addr > DEPTH) 처럼요!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
강의자료
수업하시는 ppt 자료는 혹시 어디서 확인 가능할까요 ?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
cache 코드 관련 추가 질문드립니다.
한 회차에서 많은 너무 많은 질문을 드리는 것 같네요... 한번에 질문 드려야 하는데 볼때마다 새롭게 궁금하는 점이 생겨 또 질문드립니다...always @(posedge clk, negedge rstn)if (!rstn) cc_re_d <= 0;else cc_re_d <= cc_re; 위 코드의 경우 Cache에 read enable 하는 변수에 해당하는 것 같습니다. cc_re와 cc_re_d를 별도로 변수를 초기화 하고, clk 신호에 맞게 동기화를 하는 이유를 잘모르겠습니다. (제가 생각한 내용은 cc_re의 경우 i_cpu_req 신호에 비동기로 값을 변경하고, 해당 값을 clk 동기화 신호에 맞게 cc_re_d에 넣게되면, clk 주기 사이에 cc_re의 값이 변경되어도 cc_re_d의 값은 clk가 주기가 오기전까지 값을 유지하게 되는 상황인데 굳이 cc_re의 경우에만(추가로는 mem_we_d도 마찬가지) 이런식으로 구성한 이유를 잘모르겠습니다.)+ 추가로 찾아보니 메타스테이블 상태를 방지하기 위함 -레벨 트리거(cc_re가 그대로 전달될 경우) 신호가 엣지 트리거(다른 always @문에 사용되는 구문들) 상태와 겹치는 상태에서 불안정한 신호를 전달하기 때문이라는데, (레벨 트리거 신호를 엣지 트리거 상태로 변경하기 위함인가요?) 이게 맞는 내용일까요? => 그렇다면 다른 레벨 트리거 변수들은 위와 같이 동기화 신호로 안바꿔주는 이유가 궁금합니다...)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
dual port ram 설계 코드 질문
module dpsram #( parameter DEPTH=8, parameter WIDTH=32, parameter DEPTH_LOG=$clog2(DEPTH) )( input clk, input [WIDTH-1:0] din_a, input [WIDTH-1:0] din_b, input [DEPTH_LOG-1:0] addr_a, input cs_a, input we_a, input [DEPTH_LOG-1:0] addr_b, input cs_b, input we_b, output reg [WIDTH-1:0] dout_a, output reg [WIDTH-1:0] dout_b ); reg [WIDTH-1:0] mem[DEPTH-1:0]; initial begin for(int i=0;i<DEPTH;i++) mem[i]=0; end always@(posedge clk) begin //write if(we_a && cs_a) mem[addr_a] <= din_a; if(we_b && cs_b) mem[addr_b] <= din_b; end always@(posedge clk) begin //read if(~we_a && cs_a) dout_a <= mem[addr_a]; if(~we_b && cs_b) dout_b <= mem[addr_b]; end endmodule위와같이 dpsram코드를 짰습니다. 예제 코드와는 다르게 저는 write와 read를 각각 나눠서 always block을 구성했는데 이렇게 짜면 다르게 동작하나요? RTL 뷰어로 보니 아래와 같이 복잡하게 나와서 질문드립니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
cache 코드 관련 질문드립니다!
always @(posedge i_clk, negedge i_rstn) begin if(!i_rstn) r_wb_mem <= 0; else if(w_cpu_we) r_wb_mem[w_cc_wa] <= 1; else if(w_mem_re) r_wb_mem[w_cc_wa] <= 0; else if(w_mem_we) r_wb_mem[w_cc_wa] <= i_cpu_write; end위 코드의 경우 별도의 설명이 없었던 것 같습니다.코드를 분석하는 중 궁금한 점이 몇가지 생겨서 질문 드립니다.cpu_we이 1인 경우 CPU에서 (읽기를 통해 값을 비교하여 바꾸는 작업이 아닌) 쓰기 작업에 대한 요청을 보냈기 때문에 Main Memory에 값을 쓰기 위한 wb이 반드시 1로 되는게 맞는건지 궁금합니다.mem_re가 1인 경우 wb이 0이 되는 것이 헷갈립니다. 제가 이해한 Write Back은 쓰기 Main Memory에 데이터를 저장하는 것이기 때문에 mem_re 즉, 읽기 요청이 왔을 때 쓰는 행위가 같이 일어나면 안되는 것이라서 그런것인지 궁금합니다. (추가로 다른 이유가 있는지 궁금합니다.)mem_we가 1인 경우 memory에 Data를 써야하기 때문에 i_cpu_wirte에 값을 전달 받는 것이 아니라 1이 되어야 하는게 아닌지 궁금합니다.(i_cpu_write가 0인데 mem_we가 1인 상태가 궁금합니다. => 그냥 메모리에 쓸 준비가 되어 있는 상태에서 i_cpu_write 요청이 들어오면 그때 wb을 1로 만들겠다는 의미가 맞는지 궁금합니다.)아직 해석이 완벽하지 않아 내용 정리 및 전달이 미흡한점 죄송합니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM 코드 Delay 관련
SRAM 코드의 경우 posedge에서 memory에 값을 넣는 동시에 ad, din 값을 하나씩 커지게 동작 시키면 기능 합성에는 문제가 되지 않지만, Delay가 적용되면 값이 흐트러 질 수 있는거 아닌가요?(예를 들면 negedge에 값을 넣어준다던가 해야하는게 아닌가요?)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
test bench 작성 후 RTL 시뮬레이션
강의에서 소개되는 FA_4bit를 RTL 시뮬레이션 해보려고 하였으나 위와 같은 오류창이 계속 뜹니다. tb명은 FA4bit으로 하였습니다. 해결할 방법이 있을까요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
DRAM Flow 관련 질문
Precharge 상태가 왜 VDD와 동일한지 궁금합니다. 제 생각에는 0.5Vcc를 유지해야 하는게 아닌가 싶어서 질문을 드립니다.20:04초 그림을 보게되면 Precharge 상태에서 BL이 VDD와 동일하게 차 있는 것을 볼 수 있는데 이렇게 되면 Charge Sharing이 일어나게 되면 캐패시터에 Write되지 않은 상태(0.5Vcc)에서 무조건 전압이 높아지고, 센스 앰플에 의해 1의 신호가 전달되면 캐패시터의 값이 Write가 일어나지 않았는데도 1의 값을 저장하게 되는게 아닌가 싶어 질문 남깁니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
섹션4 cache 메모리 강의 관련 질문
섹션4 cache memory강의 24:05에서 Line 0,1이 DRAMP에서 같은 memory를 받아온다면 Line의 개수가 2배로 늘거나 mapping 비율이 2배가 늘어나는 건가요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
섹션 4 강의 순서 문의
섹션4에서 대시보드에 있는 강의 순서랑 강의자료에 나와있는 순서랑 다른데, 어느 기준으로 진도를 따라가면 될까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
강의 자료의 FIFO 설계 변형 후 bandwidth 상승여부의 검토 요청입니다!
안녕하세요 맛비님갑자기 한 발상이 떠올라서 제 방식대로 FIFO를 만들어서(입출력포트는 동일) 챕터 6에 테스트벤치로 시뮬레이션을 돌려보았습니다.그 결과 피니쉬 타임이 기존 강의내용에서 2435ns 였는데 2305ns 줄어들었습니다.그리고 rtl.v.txt 파일도 문제없이 0부터 99 차례대로 출력됩니다. 이것이 데이터의 전송 bandwidth가 상승했다고 판단할 수 있을까요?파형에서는 제가 의도한대로 핸드쉐이크 과정이 일어납니다. 구성하신 테스트벤치에 대한 이해가 아직 부족해 확신이 안들어 질문드립니다..맛비님 수준의 현업자 입장에서 보았을때 저보다 훨씬 정확한 판단을 들을 수 있을거 같아 질문드립니다.질문 요약 : 챕터 6의 테스트벤치 기준 피니쉬 타임이 줄어들었고, result 텍스트파일이 강의때와 똑같이 나온다면 데이터 전송 bandwidth를 상승시켰다고 판단할 수 있는건지? 입니다.더욱이 만약 맞다면 이정도의 속도상승은 현업에서 어느정도의 영향인지도 알려주시면 감사하겠습니다…설계 선배님으로서 항상 존경하고 감사드립니다!이상입니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
맥북에서 실습
맥북에서 실습 안내는 따로 없나요?가상 머신 띄워서 돌려야만 할까요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
cadence 툴 사용
안녕하세요좋은 수업 잘 듣고 있습니다. 제가 지금 cadence virtuoso를 자유롭게 다룰 기회를 얻게 되었는데, 이 툴을 활용하여 본 강의를 더 발전적으로 들을 수 있는 방향이 있을까요?또 수업노트도 공유 가능한지 여쭙고 싶습니다 질문이 너무 추상적이라 죄송합니다
-
해결됨설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
AXI port 인식 관련
안녕하세요,AXI 포트를 작성할 때 보면m_axi_gmem_AWVALID, m_axi_gmem_AWREADY, m_axi_gmem_AWADDR, m_axi_gmem_AWID,위 처럼 되어 있는데 axi는 포트명을 지을 때 rule같은 것이 있나요?ip로 만들고 block design에서 run connection automation을 하면 axi끼리 자동으로 연결되잖아요? vivado가 위 포트들을 어떻게 인식하는건지 궁금합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
수강 기한 연장 문의 드립니다
안녕하세요 강사님, 수강기한이 얼마 안남았는데 수강 기한 연장을 할 수 있나요?좋은 강의 감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
WDATA latch / RESET state에 대한 질문 드립니다.
=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================안녕하세요. 맛비님.좋은 강의 감사합니다.궁금한게 있습니다.AWADDR의 경우 핸드쉐이크가 발생될 때 변경될 가능성이 있어서 래치를 한다라고 강의에서 들은 것 같은데요.WDATA도 같은 이유로 변경이 될 수 있을 것이라 보는데 왜 AWADDR만 래치를 하는 건가요?wstate와 rstate가 가지는 RESET 상태는 있으나 없으나 동작은 같을 것 같은데 왜 존재하는 것인가요?감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
38장2부 4k boundary
안녕하세요 다름이 아니라 이런식으로 4096이 넘어갈때만 4kboundary규칙을 적용하게 코드를 작성했는데 왜 강의에서 case5에서 transfer byte가 10240일때를 보면 4k바운더리 규칙이 적용되는 구간이 여러번 등장하게 되는데 그러면 8192인 값에서도 4k boundary 규칙이 적용된다는 것인데 왜 적용되는 지 모르겠습니다..!wire [12:0] addr_4k = 13'h1000; assign is_4k_boundary_burst = (last_addr_in_burst > addr_4k[12:AXI_DATA_SHIFT]);