묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
2차원 배열 포인터 질문
int a[2][3] = { {1, 2, 3}, {4, 5, 6} }; int sum = (a+0) + (a+1) + (a+2);여기서 내가 모르겠는 부분은 a는 배열이기 때문에 a[0]이 a의 주소로 참조 되고 주소를 100이라고 가정한다면 a는 100의 값이 저장된다. 이때 *a는 왜 1이 아니고 *a는 100번지라는 주소를 가지는 건가요?? 1차원 배열 포인터는 주소의 위치 값을 말한다고 배웠는데 배열에서는 적용이 다른 거 같아서 헷갈리는데 2차원 배열의 특징으로 외워야 하는 건가요? GPT 설명 🔎 핵심: a, *a, a[0], &a[0][0] 모두 주소는 같아도 타입이 다르다표현의미타입주소값 예시a2차원 배열의 첫 번째 행의 주소int (*)[3]100*a첫 번째 행 a[0]int[3]100a[0]첫 번째 행int[3]100&a[0][0]첫 번째 요소의 주소 (즉, 1의 주소)int*100**aa[0][0] == 1int(값) 1즉 *a == a[0] == 주소, **a == a[0][0] == 값저는 a = 100 인데 *a도 100인게 이해가 안되요
-
해결됨만들면서 쉽게 배우는 컴퓨터 구조
4bit 2입력 mux 만들기
2입력 1비트 MUX를 기본 논리 게이트만으로 구현한 예시 외에도, 입력 비트가 1비트 이상일 때 역시 모든 MUX를 기본 게이트로만 구성해 보았습니다. 기본 게이트에서 MUX로 전환되는 과정을 정확히 이해하기 어려워 이렇게 구현했는데, 설계가 올바르게 되었는지 검토 부탁드립니다.
-
미해결개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
캐시 메모리
안녕하세요CPU와 RAM 사이에 캐시 메모리가 있다고 하셨는데, 그럼 CPU는 먼저 캐시 메모리에 제어 신호를 보내는 건가요? 맞다면 시스템 버스를 통해 제어신호를 보내는 건지도 궁금합니다!
-
미해결정보처리기능사 필기
정보처리기능사 실기 강의
선생님~ 정보처리기능사 필기 강의 잘 듣고 있는데요,이 시험 실기 강의는 인프런에는 없나요?선생님 실기강의는 어디서 들을 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
시작 프로젝트 설정
솔루션1개에 여러 개의 프로젝트가 있을 때 컴파일하고 싶은 프로젝트 우클릭후 시작 프로젝트로 설정이 안나와요.. 어떻게 해야하나요?
-
해결됨독하게 시작하는 C 프로그래밍
문자열 입/출력 맥북
Mac OS 기반 맥북으로 수강하고 있는 학생입니다.VS code가 강의하실 때의 윈도우 기반 vs code랑 사뭇 다르네요.. 처음에 VS code 설치 후 기본 설정과 단축키도 다르고 _getch()도 맥에서는 오류가 뜨고 여러모로 윈도우가 아니여서인지 제한 사항이 많네요.디버깅 예시 보여주시면서 메모리랑 같이 설명하실 때 저는 도저히 어디서 메모리와 주소를 찾아야 할지 모르겠더라구요..혹시 Mac OS 기반도 어떻게 설정하시는지 알 수 있을까요?
-
미해결만들면서 쉽게 배우는 컴퓨터 구조
어셈블리어 작성에 대한 질문
어셈블리어를 작성할 때 저희가 만든 RAM이 16Byte이니까 16줄을 넘어가게 작성하면 안되나요?그리고 데이터를 저장하는 장소는 13~16줄 사이에 작성해야 하나요? 데이터를 저장할 수 있는 줄이 정해져 있는건지 궁금합니다.
-
해결됨만들면서 쉽게 배우는 컴퓨터 구조
어셈블리 언어 실습 중 발생한 오류에 관해
어셈블리 언어인 asm를 xml로 변환하는 과정에서 폴더 우클릭 시 "터미널에서 열기" 메뉴가 없습니다.대안으로 cd명령으로 해당 폴더로 이동한 이후똑같이 명령어를 작성해보니 다음과 같은 오류가 발생합니다.5X4.asm: XML formatting error: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 이 경우 어떻게 해야 하나요?
-
해결됨만들면서 쉽게 배우는 컴퓨터 구조
SR Latch 진리표 상태
S R Latch의 진리표에서 S, R 모두 1인 경우사용 불가인 이유가 잘 이해가 안됩니다.사용불가라는게 동작이 정의되지 않아서 인가요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
9강 timing anaylzer 부분에 질문 있습니다.
안녕하세요 삼코치님 9강 timing 분석과 data-path Delay확인하기 강의에서 강의 화면처럼 slack과 delay정보가 나오지 않습니다 사전적으로 강의 그대로 full adder 코드와 simulation 코드 sdc파일을 만들었으며(강의 자료의 코드를 다운로드하였습니다) start버튼도 눌렀습니다. 무엇을 놓쳤는지 잘 모르겠습니다
-
미해결만들면서 쉽게 배우는 컴퓨터 구조
자리올림수와 자릿수
반가산기를 사용하며, 2개 비트로 자리올림수 1개(Carry)만들어서 구현하는 것 까지는 이해 했으나,이게 왜 반쪽짜리 가산기인지 이해가 잘 안갑니다. 강사님께선 여러 비트를 더할 때, 자릿수 오림이 없는 최하위 비트만 사용 가능 하다고 하셨는데,이 문맥과 흐름에 대해서 명확하게 이해하기가 어렵습니다.( 5분 29초 경에 나오는 "LSB만 자릿수 올림이 없음!" 예제 이미지를 봐도 이해가 퐉! 안되네요 ㅜㅜ ) 도와주시면 너무 감사하겠씁니다..!
-
해결됨만들면서 쉽게 배우는 컴퓨터 구조
불 대수의 성질과 법칙(분배법칙 확인 요청)
안녕하세요. 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파일이 나오지 않아서 그런데 혹시 어떻게하면 되는지 해결방법 알고 계신다면 알려주시면 정말 감사하겠습니다.