본문 바로가기
반응형

일단 제가 준비한 건,261

컴퓨터 구조 Cross compilation ( makefile, Preprocessing, compilation, Assembler, Linker ) 아래 내용을 유튜브에도 정리해 놨습니다! https://youtu.be/cpvQbqpfeGw High-Level 언어 High-Level 언어 (C, JAVA..)는 컴퍼일러를 거쳐 Assembly 언어로 바뀌고 Assembly 언어는 Assembler를 거쳐서 Machine code (binary, object)로 바뀐다. 이렇게 하여 우린 0110101과 같은 숫자가 아닌 상위 언어를 이용하여 컴퓨터와 소통할 수 있게 됐다. 동작 실행 순서에는 아래와 같은 단계를 거쳐 이루어진다 1. Preprocessing : 실행할 코드를 가져오는 단계. #include같은 #지시자에 따라 소스코드의 주소를 적절히 변경한다 2. Compilation : Preprocessing 된 코드를 Assmbley 언어로 .. 2022. 2. 23.
Verilog HDL NOR Gate ( Nor 게이트, 4비트 2입력 NOR ) NOR Gate는 OR 게이트에 NOT 게이트를 이어 붙인 것이다. OR연산은 하나라도 1이면 출력이 1이다. 이런 게이트 앞에 NOT이 있으니 NOR 게이트는 하나라도 1이라면 출력은 0이다. 즉, 모두 0일 때만 출력이 1이다. module NOR (a, b, y); input [3:0] a, b; output [3:0] y; wire [3:0]y; assign y[3:0] = ~(a[3:0] | b[3:0]); endmodule DUT 코드는 간단하다. 그냥 OR연산을 하고 ~을 붙여주면 된다. 테스트 벤치는 어떻게 되는지 보자, 8비트를 다 집어넣어서 확인해 볼 예정이다. module tb_NOR; reg [3:0] a, b; wire [3:0] y; NOR u0(.a(a), .b(b), .y(y.. 2022. 2. 17.
Verilog HDL RCA ( Ripple carry adder, 리플 케리 가산기, 파형, 16bit ) RCA (Ripple carry adder) 먼저 부호 있는 수(signed)와 없는 수(unsigned)의 구분이 필요하다. 부호가 있는 수의 덧셈에서 carry는 다 버린다. 왜냐면 carry가 있든 없든 원하는 결괏값이 똑같기 때문이다. 하지만 오버플로우가 발생하기도 하는데, 이유는 결괏값이 표현 범위를 벗어나기 때문이다. 예를 들어 8bit라면, 2의 8승으로 0~ 255까지 표현 가능하지만 부호가 있기 때문에 -127 ~ 127까지다. 이 범위의 수에서 결괏값이 벗어나면 오버플로우가 발생했다고 한다. 이때는 프로그램이 오류를 나타내고 종료한다. 어떤 오류냐 하면 양수 + 양수 = 음수 음수 + 음수 = 양수와 같은 오류가 발생한다. 부호가 없는 이진수도 오버플로우가 발생한다. 8bit를 예로 들.. 2022. 2. 16.
Verilog HDL Multiplexor (멀티플렉서, mux, 예제) 여러 개의 신호 중에 하나를 선택하여 출력으로 내보낸다. sel 신호는 4개의 입력 중에 하나를 선택하여 보낸다. 아래 예시의 경우 sel [1:0] == 2'b01 이면 y = b가 된다. verilog로 구현해보자, 회로만 보고 코드를 짜는 연습을 하면 좋은 거 같다. module mux(a, b, c, d, sel, y); input [15:0] a, b, c, d; input [1:0]sel; output [15:0]y; reg [15:0]y; always @(*) case(sel) 2'b00 : y = a; 2'b01 : y = b; 2'b10 : y = c; 2'b11 : y = d; endcase endmodule 입력은 a, b, c, d, sel이고 출력은 y값으로 정해져 있다. alwa.. 2022. 2. 16.
Vreilog HDL decoder (디코더) (코드, 예제) 4비트의 신호를 받아서 16비트로 디코딩하는 진리표 module decoder_4to16( input [3:0] a, output wire [15:0] y ); // input [3:0] a; // output [15:0] y; // wire [15:0] y; genvar i; generate for (i = 0; i < 16; i = i+ 1) begin : dec assign y[i] = a == i; end endgenerate /* 위의genvari; 부터endgenerate까지의문장은다음문장들을대체하는문법임 assign y[0] = a == 4'b0000; assign y[1] = a == 4'b0001; assign y[2] = a == 4'b0010; assign y[3] = a == 4'b.. 2022. 2. 15.