 Verilog HDL 로 표현되 는 논리회로는 “module”~”endmodul e” 안에 표현  모든 문장은 세미콜론 (;) 으로 문장을 끝냄 ◦ 단, “end~” 로 시작하는 예약어에는 세미콜론이 없음  Module 이름은 영문자 와 언더바 (_) 로 시작할.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
제 5 장 구문 정의  프로그래밍 언어의 기본 문자 집합  Alphabet 문자 (A-Z) 26 개 + 아라비아 숫자 (0 - 9) 10 개  예 ) Fortran : 기본 문자 집합 + 13 개의 특수문자 (=+ - * / ( ),. $ ‘ : 공백 ) Algol60.
임진수 이현철. 회로 설계 과정 합성 ?  합성 도구가 주어진 HDL 코드를 Library 에 맞춰 회로로 변경시켜주는 과정  모든 코드가 합성되는 것은 아니다 !
HBE-COMBO II -SE VerilogHDL 실습 Lab#03 Verilog HDL
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
디지털시스템실험 2주차 고려대학교 전기전자전파공학부.
ARM을 이용한 7 segment LED 제어 Verilog 소스
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Chapter 7. 조건문.
제 9 장 구조체와 공용체.
조합 논리회로 설계 및 검증 Sun, Hye-Seung.
가산기 설계.
자료형과 연산자 Sun, Hye-Seung.
디지털논리실습 기본 논리 게이트 부울대수 조합회로.
Verilog HDL 이론.
디지털 시스템 설계(3).
오브젝트 플립플롭 IT CookBook, VHDL을 이용한 디지털 회로 입문.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
순차회로 모델링 Sun, Hye-Seung.
VHDL Design : Barrel Shifter
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
조합논리회로 모델링 Sun, Hye-Seung.
제 3장. C보다 나은 C++ II.
학습목표 변수 비주얼 베이직 자료형 변수 선언하기. 학습목표 변수 비주얼 베이직 자료형 변수 선언하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
ATmega128 FND 실습 휴먼네트웍스 기술연구소
Microprocessor I/O Port & CLCD Noh Jin-Seok.
디 지 털 공 학 한국폴리텍V대학.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
논리회로 및 실험 조합논리회로 (1) - Adder
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
오브젝트 순서회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
연산자 (Operator).
2장. 변수와 타입.
가산기 설계.
Chapter 02. 자바 기본 문법.
1. 2진 시스템.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Lecture 02 프로그램 구조 및 문법 Kwang-Man Ko
Chapter 02 C# 기본 01 기본 용어 06 증감 연산자 02 출력 07 자료형 검사
3. 모듈 (5장. 모듈).
함수, 모듈.
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
Numerical Analysis Programming using NRs
Chapter 11 구조체.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
논리회로 설계 및 실험 8주차.
Presentation transcript:

 Verilog HDL 로 표현되 는 논리회로는 “module”~”endmodul e” 안에 표현  모든 문장은 세미콜론 (;) 으로 문장을 끝냄 ◦ 단, “end~” 로 시작하는 예약어에는 세미콜론이 없음  Module 이름은 영문자 와 언더바 (_) 로 시작할 수 있으며, 대문자와 소 문자를 구별함.

 주석 ◦ // 시작 할 경우 – 그 줄 끝까지가 주석이 된다. ◦ “/*” 시작 “*/” 끝날 경우 – 여러 줄에 걸쳐서 주석을 사용.  식별자 ◦ 사용자가 정의한 변수, 모듈 이름, 포트 이름, 함수 이름, instance 이름 등을 말하며 다음과 같은 규칙이 있다.  첫 문자는 알파벳문자 (a~z, A~Z) 혹은 언더 바 (_) 를 사용.  다음 문자부터는 영문자, 숫자, 언더 바 (_), 달라 ($) 를 사용.  이름 중간에 공백문자 ( 스페이스 ) 를 사용할 수 없음.  이름은 1023 문자까지 사용 가능.  대문자와 소문자를 구별한다.

 Always, and, assign, begin, buf, bufif0, bufif1, case, casex, casez, coms, deassign, default, defparam, disable, edge, else, end, endcase, endmodule, endfunction, endprimitive, endspecify, endtable, endtask, event, for, force, forever, fork, function, highz0, highz1, if, ifnone, initial, inout, input, integer, join, large, macromodule, medium, module, nand, negedge, nmos, nor, not, notif0, notif1, or, output, parameter, pmos, posedge, primitive, pull0, pull1, pullup, pulldown, rcoms, real, realtime, reg, release, repeat, rnmos, rpmos, rtran, rtranif0, rtranif1, scalared, small, specify, specparam, strong0, strong1, supply0, supply1, table, task, time, tran, tranif0, tranif1, tri, tri0, tri1, triand, trior, trireg, vectored, wait, wand, weak0, weak1, while, wire, wor, xnor, xor

 and U1 (C,A,B); ◦ 연산자 //instance 이름 ( 생략가능 )//port 이름 ( 출력, 입력의 순서 로 쓴다 )  논리 연산자는 벡터 단위의 연산은 할 수 없고, 항상 비 트 단위로 연산  not, buf 는 여러 개의 출력을 가질 수 있다. ◦ not (Y0, Y1, Y2, A); // Y0, Y1,Y2 는 출력, A 는 입력 ◦ buf (Y0, Y1, Y2, B); // Y0, Y1,Y2 는 출력, B 는 입력 연산자예의미 andand (Y,A,B);Y = A and B nandnand (Y,A,B);Y = A nand B oror (Y,A,B);Y = A or B nornor (Y,A,B);Y = A nor B xorxor (Y,A,B);Y = A xor B xnorxnor (Y,A,B);Y = A xnor B notnot (Y,A);Y = not A bufbuf (Y,A);Y = buf A

 assign 포트 (or 와이어 ) = 논리식 (or 산술 연산식 ); 연산자의미예설명 ~notassign Y = ~ AA 를 비트단위로 인버팅해서 Y 에 대입 &andassign Y = A & BA 와 B 를 비트단위로 and 연산해서 Y 에 대입 |orassign Y = A | BA 와 B 를 비트단위로 or 연산해서 Y 에 대입 ^xorassign Y = A ^ BA 와 B 를 비트단위로 xor 연산해서 Y 에 대입 ~^xnorassign Y = A ~^ BA 와 B 를 비트단위로 xnor 연산해서 Y 에 대입

 예약어 [MSB : LSB] 신호이름 ; ◦ 예약어 – input, output, wire, reg 등 ◦ [MSB : LSB] – 비트 폭의 범위를 지정 ◦ 신호이름 – 포트, 네트 ( 와이어 ), 레지스터 등의 이름  부호 없는 정수로 취급  벡터를 1 비트 단위로 취급할 경우 ◦ [ 비트 번호 ] 를 사용하여 취급  비트 폭 지정은 한 개의 선언에 한번만 사용  벡터 크기보다 큰 값을 전달할 경우는 에러가 발생

벡터 표현의 예설 명설 명 input [3:0] A, B; input [7:0] ABUS; 4bit 입력 A 와 B 8bit 입력 ABUS wire busy, [2:0] status; 여러 번 사용한 에러의 예 assign MSB = ABUS[7]; assign LSB = ABUS[0]; ABUS 의 bit 번호 7 을 MSB 신호로 전달 ABUS 의 bit 번호 0 을 LSB 신호로 전달 wire [3:0] H_digit; assign H_digit = ABUS[7:4]; ABUS 의 bit 번호 7~4 를 H_digit 로 전달

 Verilog HDL 에서는 4 개의 논리 값만 사용 ◦ 0 – 논리 0 ◦ 1 – 논리 1 ◦ x(X) – ‘0’ 과 ‘1’ 이 충돌 될 때의 모르는 값  “unknown” 값이며, don’t care 와는 의미가 다름 ◦ z(Z) – 하이 임피던스

 Verilog HDL 에서 숫자는 정수와 실수를 사용  정수 표현 ◦ ’  비트 폭 – 10 진수로 표현. 생략하면 32 비트로 취급  진수 – b,B:2 진수 o,O:8 진수 d,D:10 진수 h,H:16 진수  값 – 읽기 쉽게 “_” 를 사용할 수 있으며 “_” 는 숫자 크기에 영 향을 주지 않는다.  진수에 대응되는 값  2 진수 : 0, 1, x, z  8 진수 : 0~7, x, z  10 진수 : 0~9(x, z 는 사용 불가 )  16 진수 : 0~9, a~f, x, z

 정수표현의 예 정수 표현비트 폭진수 2 진수로 표현 진수 ‘b112 진수 1 8'haa816 진수 'bz42 진수 zzzz 8'o37788 진수 'b0000_11x x 82 진수 xx 'hff3216 진수 'h?ZZ?416 진수 ZZZZ (? 는 Z 의 변형된 문자 ) 4'd5410 진수 0101

 Verilog HDL 에서 실수는 과학적인 기호나 10 진 수로 표현할 수 있으며, 과학적인 기호로 표현할 경우, 다음과 같은 형식으로 표기. ◦  - 10 진수로 표현 ◦ 예 > 32e-4 : , 4.1E3 : 4100  실수 표현은 시뮬레이션에서만 사용된다.

 Structural modeling  회로도 (schematic) 을 그리는 것 같이, 좀 더 복잡 한 component 를 만들기 위해, 이미 있는 component 를 사용하여 단순히 연결하는 것. module NOR_LATCH (R,S,Q,Qbar); input R,S; output Q, Qbar; nor U1 (Q, R, Qbar); nor U2 (Qbar, S, Q); endmodule

 4bit full adder 예제

 module instance 호출 방법 ◦ 하위층 모듈이름 instance 이름 ( 인수, 목록 ); ◦ 하위층 모듈이름 – Full_adder ◦ Instance 이름 – ADD0,ADD1,ADD2,ADD3  사용자가 임의로 지정 ◦ 인수, 목록 – “a[0], b[0], 1’b0, sum[0], cout[0]”  하위의 a b cin sum cout 포트와 일치된다. ◦ 호출한 측의 해당 네트와 하위층 모듈의 대응되는 포트를 순서대 로 연결한 방식 => positional mapping ◦ 같은 하위층의 모듈을 계속해서 호출해서 사용할 경우  Full_adder ADD0 (a[0],b[0],1'b0,sum[0],cout[0]), ADD1 (a[1],b[1],cout[0],sum[1],cout[1]), ADD2 (a[2],b[2],cout[1],sum[2],cout[2]), ADD3 (a[3],b[3],cout[2],sum[3],cout[3]);

 하위층 모듈을 호출할때, 기술순서와 관계없이 이 름을 이용하여 접속 => named mapping ◦. 하위층 모듈 포트 이름 ( 접속 신호 ) ; ◦ Full_adder ADD0 (.a(a[0]),.b(b[0]),.cin(1'b0),.sum(sum[0]),.cout(cout[0])); ◦ Full_adder ADD1 (.sum(sum[1]),.cout(cout[1]),.a(a[1]),.b(b[1]),.cin(cout[0]));  Positional mapping 과 named mapping 을 혼용 하여 사용할 수는 없다. ◦ Full_adder ADD0 ( a[0], b[0],.cin(1'b0),.sum(sum[0]),.cout(cout[0]));