본문 바로가기

전체 글

(81)
[디지털 설계 및 실험] Verilog 기본 vol 6. dataflow modeling 이번 포스팅에서는 Verilog의 설계 단계중 하나인 dataflow modeling을 알아보자. 💻 Continuous Assignments dataflow modeling에서 할당을 하는방법은 2가지가 있는데, 그중 하나인 연속 할당이다. 쉽게 말하면 net형 객체에 값을 할당하는 구문이다. assign out = i1 & i2; //out is a net. i1 and i2 are nets. //addr is a 16-bit vector net, add1 and add2 are 16-bit vector registers assign addr[15:0] = addr1_bits[15:0] ^ add2_bits[15:0]; continuous assignment 연속 할당문은 assign 문을 통해 ne..
[디지털 설계 및 실험] Verilog 외전 이번 포스팅에서는 내가 사용해보다 보니 헷갈리는 Verilog에서 숫자 표현 방식을 적어보겠다. HDL이다 보니 10진수 이외의 2,8,16을 상당수 사용하는 부분이 보였다. 💻 Number Specification in Verilog 사이즈를 표시한 수 : ' ('d/'D, 'h/'H ,'b/B', 'o/'O) 4'b1111 //This is a 4-bit binary number 12'habc // This is a 12-bit hexadecimal number 16'd255 // This is a 16-bit decimal number. 사이즈 미표기 수 : 칸이 없고 10진수를 표현한다면 도 생략이 가능하다. 23456 // This is a 32-bit decimal number by defau..
[시스템 프로그래밍] Linux System - ls-l 구현 지난 포스팅에서 리눅스 시스템에서의 디렉토리, 커널, 시스템 콜에 대해서 알아보고 ls를 구현해보았다. 이번 포스팅에서는 그의 세부 옵션인 ls-l 을 구현해보자. 💻 ls - l 명령어 ls에 옵션 l 을 달아서 ls-l을 리눅스 터미널에서 우리는 사용할 수 있다. ls - l을 사용하면 다음과 같이 출력된다. 위 그림과 같이 여러개의 영역으로 나뉘어 있다. mode : 종류와 , 접근모드를 나타낸다. 접근모드는 r(read), w(write), x(execute) 가 있고 읽기, 쓰기, 실행을 할수 있는 권한을 나타낸다. 3자리씩 끊어서 앞은 owner, 가운데는 group 뒤에는 그 외 user들의 권한을 나타낸다. links : 이 문서에 연결된 하드 링크의 수를 나타낸다. owner : 소유자를..
[시스템 프로그래밍] Linux System - ls 구현하기 이번에는 ls를 구현하는것을 포스팅 해보도록 하겠다. 그전에 알아야 할 것들이 좀 많은데.. 디렉토리란 무엇인지, 시스템 콜이란 무엇인지, ls를 사용하기 위한 시스템 콜들을 알아보고 ls를 구현해보겠다. 💻디렉토리란? 리눅스에서 모든 것들은 파일로 표현된다. 디렉토리도 파일의 한 종류로서 여러개의 하위 파일이나 혹은 디렉토리의 주소들을 담고 있다. 리눅스에서는 FHS라는 디렉토리 구조를 사용하고 있는데, 이는 트리구조로 되어있다. 쉽게 말하자면 디렉토리 안에 디렉토리 안에 디렉토리 안에 파일이 있는 형식이다. 위는 리눅스에서의 디렉토리 계층을 보여주고 있다. /usr/라는 디렉토리에 bin, include 등 여러가지 다른 디렉토리들이 들어있다. 이를 트리구조라고 한다. 💻 Kernel(커널) 커널은 ..
[디지털 설계 및 실험] Verilog 기본 vol.5 Gate-Level Modeling 오랜만에 올리는 Verilog! 베릴로그 조 아 먼저 Gate-level Modeling에 대해서 알아보자. 💻 Gate level Modeling 게이트 레벨 모델링이란 앞서 다뤘던 추상화의 4단계중 거의 가장 낮은 단계이다. 제일 낮은 스위치 수준 추상화가 거의 사용되지 않기때문이다. Multiplexer와 Full Adder와 같이 설계에서 가장 낮은 수준의 모듈을 구현하는 데 사용된다. 베릴로그에는 모든 기본 게이트가 내장되어있다. 그 기본 게이트들에는 무엇이 있는지 확인해보자. 💻 AND/OR Gates 베릴로그는 기본 게이트들은 내부적으로 구현을 해놓은 상태이다. AND/OR도 그에 포함된다. 모듈처럼 인스턴스화되며, 모듈 정의가 필요하지 않는다. 복수의 스칼라 input들이 들어가면 하나의 ..
[컴퓨터 구조] Type of Instructions 지난 시간에는 주요 Operand에 대해서 알아보았는데 이번에는 Instruction들의 Type에 대해 알아보자. 💻 R-Type 기본 산술 연산들은 모두 R-type이다. R-type의 R은 register를 뜻한다. 총 32비트이며, 그안에 모든 것을 넣었다. 먼저, 그 안에 들어갈 내용에 대해서 간략히 설명을 하겠다. 앞선 포스팅에서 말했지만 rd는 register destination으로, 값들이 저장될 register를 말한다. opcode와 funct3, funct7은 명령어의 고유 숫자들로 명령어마다 opcode가 같은 등, 일부가 같을수는 있지만 모두가 같을 수는 없다. rs 2, rs1은 각각 2번째 1번째 source가 되는 register이다. opcode,funct3, funct7..
[컴퓨터 구조] 3. RISC-V Operands 이전 포스팅에서 어셈블리어의 한 종류인 RISC가 무엇인지를 보았다. 이번 포스팅에서는 RISC-V의 Instruction 들에 대해서 조금 더 알아보자. 💻 Arithmetic Operation(산술 연산) 산술 연산은 말 그대로 산술에 관한 명령들을 일컫는다. RISC-V에서 산술 연산 명령어는 꼭 3개의 operand (== 피연산자)가 필요하다. 를 add a0, a1, a2 이 명령어를 보자. add는 말그대로 덧셈 연산을 하는 명령어이다. 뒤 a0, a1, a2들은 레지스터들이고 각각의 위치에 따라 기능이 달라진다. 두번째, 세번째 레지스터의 값들을 더하여 처음 적인 레지스터에 저장해준다. 처음 나오는 레지스터는 rd(register destinaion)으로 쉽게 말해 목적지라고 볼 수 있다...
[컴퓨터 구조] Instruciton 💻Instruction 프로세서의 작동을 설명하는 기본 명령이며, 하드웨어와 소프트웨어 사이에 위치하는 인터페이스이다. CPU는 Instruction 사이클을 반복해서 프로그램을 실행한다. Instruction은 opcode와 operand로 이루어져 있다. opcode는 CPU가 수행할 동작을 말하고, operand는 CPU가 명령어를 수행할 대상이다. add $2, $4,$2 위와 같은 Instruction이 있다면, add가 opcode, $2, $4, $2가 operand가 된다. 💻 Instruction Set Architecture (ISA) 주어진 H/W와 S/W 간의 추상적인 인터페이스로 Machine Language Program을 작성하기 위해 필요한 모든 정보를 일컫는다. 이러한 정보..