묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨만들면서 쉽게 배우는 컴퓨터 구조
불 대수의 성질과 법칙(분배법칙 확인 요청)
안녕하세요. CS스터디4기 유일용이라고 합니다.불 대수의 성질과 법칙에서 AND 분배법칙이A(B+C) = (AB)+(BC)로 나오는데 A(B+C) = (AB) + (AC)가 맞는 것 같은데 확인 부탁드립니다.
-
미해결만들면서 쉽게 배우는 컴퓨터 구조
캐시메모리의 저장 위치
안녕하세요 강사님! 워밍업클럽4기 수강생 정예은 입니다. 캐시메모리는 CPU가 자주 사용하는 데이터를 RAM에서 미리 가져와서 저장하는 공간이라고 하셨는데, 그럼 이 캐시메모리는 CPU내부의 레지스터에 저장되는 걸까요 ??? 캐시메모리는 정확히 어디에 위치하는지 궁금해졌습니다 !
-
미해결만들면서 쉽게 배우는 컴퓨터 구조
컴퓨터 부팅에 필요한 BIOS란?
메인 메모리 중 하나인, ROM에 대해 설명해주셨는데요, ROM은 비휘발성 메모리로 컴퓨터부팅에 필요한 BIOS가 저장되어 있는 읽기전용 메모리라고 하셨습니다. 이때, BIOS는 어떤걸까요? BIOS에 대해 간략하게 알려주실 수 있나요?!
-
해결됨독하게 시작하는 C 프로그래밍
getchar()함수의 반환형에 대해 질문드립니다.
안녕하세요. 공부할 때 chat gpt를 자주 활용하고 있습니다. chat gpt에 따르면 getchar()함수를 반환하려면 char a; a = getchar();가 아니라int a;a = getchar();int형으로 반환을 받아야한다고 하더라구요.EOF를 구분하기 위해서라는데...그런데 예제들을 보면 char형으로 받는 예제들도 많아서 질문드립니다.감사합니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
I2C SLAVE
안녕하세요 삼코치님! I2C SLAVE 코드에서 질문이 있습니다.1. 데이터를 송수신 하는 아래 코드에는 시스템 클럭에 동기화된 SCL와 SDA를 사용했는데, Start와 Stop 조건 감지에는 SDA와 SCL 신호를 그대로 사용한 이유를 모르겠습니다. 또한 동기화하는 이유에 대해서도 명확히 모르겠습니다.2.데이터를 송수신하는 코드에서는 I2C 수신하는 부분은 Posedge를 사용하고, 마스터로 송신하는 부분은 Negedge를 사용했는데, 따로 이유가 있는지 궁금합니다.3.always 블럭 내부에서 blocking assignment를 사용했는데, 시스템 클럭과 동기화된 SCL을 클럭으로 사용한다면 Non-blocking으로 사용해야 하는 것 아닌가요?한 번에 많이 여쭤봐서 죄송합니다. 강의 잘 듣고 있습니다. 감사합니다!--------------------코드------------------------module I2C_SLAVE(CLCK, SCL, SDA);//I2Cinput CLCK;input SCL;inout SDA; //bidirectional portparameter slaveaddress = 7'b1110010;//Sample registers to send to requesting devicereg[2:0] valuecnt = 3'b011; //Count of bytes to be sent, send read value twice//Synch SCL edge to the CPLD clockreg [2:0] SCLSynch = 3'b000;always @(posedge CLCK)SCLSynch <= {SCLSynch[1:0], SCL}; wire SCL_posedge = (SCLSynch[2:1] == 2'b01);wire SCL_negedge = (SCLSynch[2:1] == 2'b10);//Synch SDA to the CPLD clockreg [2:0] SDASynch = 3'b000;always @(posedge CLCK)SDASynch <= {SDASynch[1:0], SDA}; wire SDA_synched = SDASynch[0] & SDASynch[1] & SDASynch[2];//Detect start and stopreg start = 1'b0;always @(negedge SDA)start = SCL; //reg stop = 1'b0;always @(posedge SDA)stop = SCL; ////Set cycle statereg incycle = 1'b0;always @(posedge start or posedge stop)if (start)beginif (incycle == 1'b0)incycle = 1'b1;endelse if (stop)beginif (incycle == 1'b1)incycle = 1'b0;end //Address and incomming data handlingreg[7:0] bitcount = 0;reg[6:0] address = 7'b0000000;reg[7:0] datain = 8'b00000000;reg rw = 1'b0;reg addressmatch = 1'b0;always @(posedge SCL_posedge or negedge incycle)if (~incycle)begin//Reset the bit counter at the end of a sequencebitcount = 0;endelsebegin //bitcount = bitcount + 1; //Get the addressif (bitcount < 8)address[7 - bitcount] = SDA_synched; if (bitcount == 8)beginrw = SDA_synched;addressmatch = (slaveaddress == address) ? 1'b1 : 1'b0;end if ((bitcount > 9) & (~rw))datain[17 - bitcount] = SDA_synched;end //ACK's and out going datareg sdadata = 1'bz;reg [2:0] currvalue = 0;always @(posedge SCL_negedge)//ACK'sif (((bitcount == 8) | ((bitcount == 17) & ~rw)) & (addressmatch))beginsdadata = 1'b0;currvalue = 0;end//Dataelse if ((bitcount >= 9) & (rw) & (addressmatch) & (currvalue < valuecnt))begin//Send Dataif (((bitcount - 9) - (currvalue * 9)) == 8)begin//Release SDA so master can ACK/NAKsdadata = 1'bz;currvalue = currvalue + 1;endelse sdadata = datain[7 - ((bitcount - 9) - (currvalue * 9))]; //Modify this to send actual data, currently echoing incomming data valuecnt timesend//Nothing (cause nothing tastes like fresca)else sdadata = 1'bz; assign SDA = sdadata;endmodule
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
과제3 시뮬레이션 관련 질문
안녕하세요 삼코치님!과제 3 하다가 계속 시뮬레이션 부분에서 tpsram 과 dpsram의 read data부분에서 오류가 생겨서 질문 드립니다. 두 소자 모두 Netlist viewer는 정상적으로 나오는 것을 확인하였고, 삼코치님이 올려주신 tb_tpsram.sv 파일을 이용하여 시뮬레이션을 진행하였는데 계속 문제가 생겨서 어디서 잘못된건지 감이 잡히지 않아 질문드립니다! module tpsram #( parameter DEPTH= 8, parameter WIDTH =32, parameter DEPTH_LOG = $clog2(DEPTH) ) ( input clk, input [WIDTH-1:0] wd, input [DEPTH_LOG -1:0] ra, input [DEPTH_LOG -1:0] wa, input we, input re, output reg [WIDTH-1:0] rd ); reg [WIDTH-1:0] mem[DEPTH-1:0]; initial begin for (int i=0;i<DEPTH;i++) mem[i] = 0; end always @(posedge clk) if (we) mem[wa] <= wd; always @(posedge clk) if (re) rd <= mem[ra]; endmodule module dpsram #( parameter DEPTH = 8, parameter WIDTH = 32, parameter DEPTH_LOG =$clog2(DEPTH) )( input clk, input we_a, input we_b, input [WIDTH-1:0] wd_a, input [WIDTH-1:0] wd_b, input cs_a, input cs_b, input [DEPTH_LOG-1:0] ad_a, input [DEPTH_LOG-1:0] ad_b, output reg [WIDTH-1:0] rd_a, output reg [WIDTH-1:0] rd_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) if(cs_a & we_a) mem[ad_a] <= wd_a; else if (cs_a) rd_a <= mem[ad_a]; always @(posedge clk) if(cs_b & we_b) mem[ad_b] <= wd_b; else if (cs_b) rd_b <= mem[ad_b]; endmodule 혹시 어디서 제가 실수를 한 걸 까요??
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
과제 기본 코드 위치 질문입니다
[과제3]을 진행하려 하는데 기본으로 주어진다는 기본 코드를 어디서 받을 수 있는지 모르겠습니다.교안, 네이버 카페, 카카오톡 오픈채팅방, 인프런 강의 내를 찾아봤는데 찾질 못해 질문 남깁니다. 답변 기다리겠습니다!
-
해결됨독하게 시작하는 C 프로그래밍
개발 환경 문의드립니다
안녕하세요. CS를 전공하고 있는 대학생입니다. 다음학기 들어야 할 코스와 선생님 강의의 커리큘럼이 겹치는 부분이 있어서,이 강의를 꼭 들으면서 예습을 하고 싶어서 수강 결제를 진행했으나 후에 강의가 윈도우 개발환경에 맞춰져있다는 설명을 보았습니다.맥북 유저이지만 대체할만한 강의를 찾지 못해서 되도록 이 강의를 수강하고 싶은데어느 정도 불편함을 감수하고서라도 이 강의를 수강하는 것에 대해 조언해 주실 수 있을까요? 감사합니다.
-
미해결만들면서 쉽게 배우는 컴퓨터 구조
logisim 설치 문제
안녕하세요. 영상보며 공부 잘 하고 있습니다. 다름이 아니라 logisim.jar 파일을 동영상대로 설치를 해도 압축파일로만 다운되고 이를 해제해봐도 jar파일이 나오지 않아서 그런데 혹시 어떻게하면 되는지 해결방법 알고 계신다면 알려주시면 정말 감사하겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
참조에 대해 헷갈리는 부분 질문합니다.
강의 내용에서 엑셀 비유하신 부분이 정리하자면, C5에 15가 저장되있고, D7에는 C5의 위치가 저장 되어있다. D7은 참조이다. C5는 참조의 대상이다. 인데, D7은 C5를 참조했다. 라고 표현해도 되는 건가요?참조는 D7이라고 했었는데,참조가 명사가 되었다가 동사가 되었다가 하니 헷갈리네요.
-
해결됨독하게 시작하는 C 프로그래밍
C프로그래밍 책 개정판 출판 계획
강사님 혹시 독하게 시작하는 C프로그래밍 책이 개정된다는 이야기가 있던데 개정판 혹시 언제쯤 나오나요? 나오면 구매하려고 합니다.
-
해결됨독하게 시작하는 C 프로그래밍
표준/입출력 필수실습문제 질문
안녕하세요. 이름 변수 선언을 할 때 int형으로 선언을 하면 실행은 되는데 하단에 경고문이 뜹니다. 경고 내용이 무엇인지 잘 이해할 수 없어 질문을 남깁니다. 꼭 char형으로 선언해야 하는 이유가 있을까요? int와 char는 서로 크기만 다른 정수형인걸로 알고 있는데 제가 잘못 이해한 부분이 있을까요? 감사합니다!
-
미해결개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
메모리맵 / 고립형 차이
메모리맵은메모리 자체에 일정부분이 IO장치에 할당되어있음 즉, 보드자체에 메모리의 일정부분의 버스가 IO장치와 물리적 연결되어있음고립형명령어만으로 어떤 버스를 타는지 결정됨 -> mov [100] -> 메모리의 100번지-> in [100] -> 100번 IO장치 이거맞나요?
-
해결됨독하게 시작하는 C 프로그래밍
독하게 시작하는 c프로그래밍 구입했는데..
이번에 c언어 공부를 시작하기 위해 독하게 시작하는 c프로그래밍 강의 구입했습니다. 근데 책이 절판이네요ㅜㅜ 책 볼수 있는 방법 있을까요??
-
해결됨독하게 시작하는 C 프로그래밍
.
.
-
미해결개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
마무리 - 확인 문제에 대해 질문있습니다.
안녕하세요. 03-2 마무리 확인 문제 1번에서 ④번 선지도 틀린 것 아닌가요?"명령어에 연산에 사용할 데이터를 직접 명시할 경우(= 즉시 주소 지정 방식) 표현할 수 있는 데이터의 크기는 연산코드의 크기만큼 작아집니다."라고 되어 있는데, 책의 예시로 연산 코드가 4비트여도 오퍼랜드 크기는 12가 될 수 있으므로, 표현할 수 있는 데이터의 크기(12비트)는 연산코드의 크기(4비트)만큼 작아지지 않습니다.따라서 표현할 수 있는 데이터의 크기는 연산코드의 크기에 따라 달라진다고 하는 게 맞지 않나요?
-
미해결개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
뮤텍스 락
뮤텍스 락으로 설명하신 내용은 스핀락 아닌가요?스핀락은 프로세스를 블로킹하지 않고 계속해서 CPU를 사용하여 busy-waiting이 일어나지만 뮤텍스 락은 대기 큐에서 블로킹 된 상태로 대기하여 busy-waiting이 일어나지 않는 걸로 알고 있습니다
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM 테스트벤치 작성할때 질문
테스트 벤치 작성할 때 time scale`를 작성하지 않아도 되는건가요?작성하지 않을 경우 자동으로 #5같은경우는 5ns로 처리되는건지 궁금합니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM write/read 질문입니다.
SRAM에 대한 내용에서 SRAM의 write 동작은 다음 cycle에 메모리에 값이 저장되고, read 동작은 다음 cycle이 아닌 해당 cycle에서 바로 읽어온다고 배웠던 것 같은데,SRAM 기본 모델링 코드로 시뮬레이션을 돌렸을 때 read 동작에서 다음 cycle에 dout에 값이 읽히는 걸 볼 수 있었습니다. cs==1 이면 dout에 '다음 cycle'에 값이 뜨는데, 이 동작은 SRAM 이론시간에 배웠던 "read 동작은 해당 사이클에 바로 읽을 수 있다"라는 내용과 다른 점이 무엇인지 궁금합니다. (물론 코드 상으로는 dout<= mem[ad] 로 작성했기때문에 당연히 그 다음 posedge clk에 값이 업데이트되는게 맞지만,SRAM 이론을 배울 때 들은 내용과 헷갈려서 질문 드립니다.)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
Schemetic과 gate logic의 성능차이
CHAPTER4의 Gate logic 내용에서 XOR 게이트를 설명하실 때gate로 표현한 논리회로에서는 worst path를 보면 cap이 더 많이 발생하여 speed도 늦고, power소모도 커진다고 하셨고 pmos와 nmos로 나타낸 회로처럼 설계하면 speed, power, area, cost 에서 더 좋은 결과를 낼 수 있다고 하셨는데 이 두 회로의 차이가 무엇인가요? 결국 둘 다 XOR을 나타내는 회로인 것 같은데 무슨 차이가 있는지 궁금합니다.