학과 샘플강의

verilog - 총 18시간 10분 / 강의당평균 : 54분 30초

알지오 2016. 8. 11. 09:51



verilog
전체 : 18시간 10분 / 강의당평균 : 54분30초

01 베릴로그 알아보기
베릴로그를 작성하는 베릴로그모듈의 전체구조를 살펴보고 프로젝트를 생성하는 방법에 대해서 알아봅니다.
33분
책갈피 : [00:14] 베릴로그 HDL / [00:52] 베릴로그가 있기 전 회로도 사용 / [01:42] VHDL / [03:21] FDGA 프로그램 / [05:11] ISE 프로젝트 네비게이터 / [05:40] ISE 웹팩 살펴보기 / [06:15] NEW 프로젝트 생성하기 / [07:45] 프로젝트 셋팅 / [09:07] 작성되는 언어 설정하기 / [09:50] 프로젝트 summary / [10:46] 프로젝트 생성 수정하기 / [11:58] 홈화면 수정하기 / [12:20] 디자인 창 살펴보기 / [13:31] 로그플레인 살펴보기 / [14:46] 실행할 소스 파일 만들기 / [15:16] 미리 작성된 파일 가져오기 / [15:37] 여러종류의 파일 불러오기 / [16:52] 파일설정창 살펴보기 / [17:41] 테스트 파일의 위치 / [18:56] 디자인 SUMMARY / [19:45] 작성된 코드 적용하기 / [20:18] 구성된 모듈 살펴보기 / [21:11] 문법 검사 하기 / [23:14] 시뮬레이션으로 넘어가기 / [24:30] ISim Simulator / [25:22] 시뮬레이터 결과 확인하기 / [27:11] 보드 연결 구성하기 / [27:30] 파일 구성하기 / [28:03] UCF 파일 생성하기 / [28:30] User Document 타입 / [29:26] UCF 파일 구성 확인하기 / [29:48] UCF 뷰탭에서 확인하기 / [30:22] 물리적인 정보 기입하기 / [31:11] UCF파일 지정하기 / [31:22] 비트 스트림 파일 생성하기 / [32:09] Generate Programming File 실행하기

02 베릴로그 데이터 요소
베릴로그를 구성하는 데이터요소들에 대해서 알아보고 데이터타입에는 어떤것들이 있는지 알아봅니다.
57분
책갈피 : [00:08] 베릴로그의 기본 / [00:25] 기본단위 module / [01:19] 모듈이나 함수에 대한 구성 살펴보기 / [03:19] 모듈의 전체 구조 / [04:41] 모듈 헤더 양식 / [05:57] 포트리스트 작성 방식 / [06:15] 포트신호의 방향 / [07:15] 포트 신호의 타입 / [07:46] reg / [08:22] wire / [09:03] MSB와 LSB / [11:11] 포트신호의 이름 리스트 / [11:43] 포트리스트 구성의 예 / [13:20] 파라미터 리스트 / [14:13] 파라미터 리스트 구성의 예 / [14:58] 모듈헤더 구성의 예 / [15:56] 모듈헤더 선언시 주의점 / [16:45] 모듈헤더 적용 선언 / [17:47] 간단하게 모듈헤더에 포트 선언하기 / [19:15] 베릴로그 모듈 몸체 / [21:52] 모듈에서 동시 실행될수 있는 작업 / [22:37] continuous assignment문 / [23:56] 이니셜 블록과 올웨이즈 블록 / [24:56] 프로시져 문장 / [26:33] 지연시간 추가 / [27:29] 작성된 문자 보기 / [29:52] 베릴로그에서의 데이터 구성 / [31:15] 숫자 상수값 / [32:45] h로 선언될 경우 / [33:07] s가 붙었을 경우 / [33:22] 숫자 상수값 표현의 예 / [33:37] 선언된 값 찾아보기 / [34:19] 2진법으로 나타낼 경우 / [35:19] 2,8,16진수의 경우 / [36:05] 값의 길이가 길어질 경우 / [37:52] 잘못된 부분 보기 / [39:22] 언더바 사용할 경우 / [40:37] 베릴로그와 VHDL 상수값 표기 비교 / [40:51] 베릴로그 보기 / [41:07] VHDL / [41:52] 문자열 상수 입력할 경우 / [42:12] string 상수값 / [43:37] 변수의 길이가 다를경우 / [43:50] ISE 네비게이터 실행 / [44:00] 새 프로젝트 열기 / [44:49] 프로젝트 설정 / [45:36] 베릴로그 모듈파일 구성 / [46:22] 소스 파일 이름 입력 / [47:27] 디파인 모듈 / [48:14] 요약부분 보기 / [48:36] 모듈파일 생성 확인 / [49:07] 모듈파일 수정 / [49:52] 문자 상수 선언 / [50:12] 변수 선언 / [50:44] 블록 지정 / [51:22] 문자열 입력 / [53:07] 표현되는 부분 정의 / [54:07] 코드컴파일 / [54:29] 시뮬레이션 실행 / [55:00] 결과값 확인 / [55:15] 출력 부분 같게 만들기 / [55:35] 결과값 확인 / [55:53] 변수의 길이보다 출력된 크기가 작을 경우 / [56:27] 결과값 확인

03 회로기술방식
회로를 기술하는 기술방식의 문법사항을 살펴보고 예제를 가지고 그 기능에 대해서 이해합니다.
54분
책갈피 : [00:06] 베릴로그 코멘트 / [01:11] VHDL에서 비교 / [01:42] 코드 보기 / [02:36] 베릴로그 식별자 / [04:30] 베릴로그 데이터타입 / [06:08] net형 타입 / [06:30] wire / [06:44] tri / [06:55] wand/wor / [07:30] trior/triand / [08:28] variable형 타입 / [10:05] reg / [11:09] time / [12:37] vectors / [13:20] 싱글비트로 선언될 경우 / [14:56] 벡터 값으로 선언된 또다른 형식 / [16:00] 이니셜 블록을 이용한 할당문 구성 / [16:56] 배열 데이터 타입 / [17:44] integer a / [18:03] reg bool / [18:18] time chk_poit / [19:14] k=a / [20:07] 선언되는 부분 확인 / [21:03] 메모리 데이터 타입 / [21:40] 메모리 값이 표현된 코드 보기 / [22:33] 베릴로그 할당문 / [23:48] continuous assignment / [26:07] procedural assignment / [29:07] blocking assignment / [29:56] blocking assignment의 예 / [32:06] 긴 코드로 구성하기 / [32:22] 이니셜 블록에 구성된 코드 살펴보기 / [32:59] 시간에 대한 키워드 언급이 없을경우 / [33:43] 지연시간 / [34:05] 코드 실행 / [36:07] non-block assignment / [37:07] 문장 부호 보기 / [39:00] non-block assignment를 사용한 코드 보기 / [41:59] 베릴로그 코드를 이용한 회로 구성 / [42:22] structural description / [42:37] dataflow description / [42:50] behavioral description / [43:22] structural description 구성 방법 / [43:50] gate-level modeling / [44:22] 기본 게이트 종류 / [44:52] 논리 연산 / [45:21] or 연산 / [46:58] 연산 값에 대한 부분 보기 / [47:58] 입력값이 세개일 경우 / [48:30] 인버터의 값 나타내기 / [49:43] 계층적 설계 / [50:27] 베릴로그 관점에서 보기 / [51:00] 인스턴스네이션 / [52:22] 커넥션 바이 오더 / [52:50] 두번째 포트 연결 방식

04 시뮬레이션 검증방식
회로를 설계하기 전에 알고리즘을 검증하는 방식에 대해서 알아보고 각각의 실행문장들에는 어떤것들이 있는지 알아봅니다.
48분
책갈피 : [00:07] dataflow description / [01:02] dataflow description 코드의 예 / [02:13] continuous assignments / [04:15] 신호의 세기 / [05:45] 여러개의 할당문 열거의 예 / [07:09] implicit continuous assignments / [07:42] continuous assignments 문으로 나눠 쓰는 방법 / [08:13] 지연시간 / [08:18] regular delay / [08:48] net delay / [09:28] implicit continuous assignment delay / [10:01] 산술 연산자 / [11:13] 관계연산자 / [12:35] 적용되는 비교연산자 / [13:13] 논리 연산자 / [14:33] 예시 보기 / [16:21] 논리 연산자에서 짚고 넘어가야 할 점 / [16:52] 비트 연산자 / [17:30] binary / [19:03] 쉬프트 연산에서 꺽쇠 갯수의 차이 / [19:30] unary reduction / [20:44] 기타연산자 / [21:18] 예시 보기 / [23:22] 연산자 우선순위 / [23:52] behavioral description / [25:26] initial 블록 / [28:26] 시뮬레이션 프로젝트 실행 / [28:41] 프로젝트 파일 구성 / [29:02] 모듈 파일 구성 / [30:11] 변수 타입 만들기 / [30:48] 변수값 입력 / [31:14] 이니셜 블록 구성 / [32:20] 시뮬레이션 종료 키워드 입력 / [32:59] 컴파일 / [33:37] 디스플레이 문 구성 / [34:37] 문자 입력 / [35:30] 컴파일 / [35:52] 시뮬레이션 소스코드 선택 / [36:06] 결과 확인 / [36:50] 출력문 구성 / [38:05] 결과 확인 / [39:52] always 블록 / [40:59] 프로젝트 구성 / [41:52] 출력값 구성 / [42:50] clk 값에 처음값 지정 / [43:49] always 문 입력 / [44:07] 구성 부분 검사 / [44:28] 시뮬레이션 소스코드 선택 / [44:43] 결과값 확인 / [45:20] 변화되는 값 보기 / [46:27] 시뮬레이션을 짧거나 길게 구성할 경우 / [46:57] always 문의 사용

05 베릴로그 시뮬레이션
베릴로그의 회로를 검증하기위한 시뮬레이션 방식에 대해서 알아보고 시뮬레이션 task/function 을 예제를 통해 확인 합니다.
60분
책갈피 : [00:33] procedural statement / [01:11] if 문 / [02:06] 코드 보기 / [03:43] if 를 중첩시킬때 주의해야 할 점 / [04:26] case문 / [05:55] 코드 보기 / [07:41] casez / [07:59] casex / [08:30] while 문 / [08:43] 코드 보기 / [10:41] for 문 / [11:52] repeat문 / [13:00] forever문 / [13:41] 문장 살펴보기 / [14:26] task/function call / [15:39] task와 function 호출하는 법 / [16:11] task와 function 차이점 / [19:00] task와 function 공통점 / [20:44] task 코드 구성 보기 / [21:30] 호출문 보기 / [26:11] 시뮬레이션 / [26:44] task 문이 실행되기 전까지의 코드 삽입 / [27:03] task 문 선언 / [27:22] 컴파일 / [27:40] 시뮬레이션 실행 / [27:51] 결과값 확인 / [28:32] 코드 보기 / [31:56] 테스크 호출시 테스크의 변수를 새로운 기억 장소에 할당시키기 / [34:30] function 코드 보기 / [36:07] 함수의 정의 부분 자세히 보기 / [38:45] 시뮬레이션 / [39:00] 새 function 구성 / [39:13] 출력문 구성 / [40:00] 함수 호출문에 대한 함수 function 구성 / [40:35] 컴파일 / [40:49] 시뮬레이션 실행 / [41:00] 결과값 확인 / [42:07] 키워드를 사용하는 템플릿 살펴보기 / [43:44] verilog simulation / [44:07] 모듈 검증 / [45:28] verilog test fixture / [45:49] verilog test fixture 를 구성하는 모듈에 대한 부분 보기 / [46:34] verilog test fixture 파일의 특징 / [47:30] 주요 task 또는 함수 / [47:45] $stop / [47:52] $finish / [48:00] $display / [48:27] $monitor / [50:07] 출력 format의 형태 / [51:00] 코드 적용 / [52:00] 프로젝트 구성 / [52:28] 값 할당 받을 변수 선언 / [52:59] 컴파일 / [53:27] 시뮬레이션을 위한 테스트 파일 구성 / [55:37] 테스트 파일 살펴보기 / [56:34] 시뮬레이션 실행 / [57:00] 결과 확인 / [58:04] 출력문 보기 / [59:51] display값 적용 / [60:07] 결과 확인

06 시뮬레이션 키워드
시뮬레이션 키워드와 compiler directive, conditional compilation에 대해 알아봅니다
1시간 7분
책갈피 : [00:20] 덧셈기 구성 / [00:34] 변수 선언 / [01:59] sum 입력 / [02:15] 변수 값 받아 계산하기 위한 모듈 구성 / [02:59] 연산 부분 구성 / [03:46] output 값 구성 / [04:40] 할당문 구성 / [05:13] 테스트 모듈에서 사용 될수 있게 구성하기 / [05:29] 모듈 가져오기 / [06:15] 시뮬레이션 코드 보기 / [07:08] 컴파일 / [08:11] 지정된 부분 확인 / [09:09] 시뮬레이션 실행 / [09:16] 결과 확인 / [10:35] 테스크 키워드 / [11:11] 디스플레이 키워드만 이용해 모듈 구성 시 출력 되는 형태 알아보기 / [11:43] 구성 확인 / [13:52] 프로젝트 파일 실행 / [14:07] 모듈 구성 / [14:20] 변수 값 선언 / [14:58] 파일 구성 / [15:24] 모듈파일 생성 확인 / [15:39] 컴파일 / [16:03] 시뮬레이션 실행 / [16:22] 결과 확인 / [17:37] 모니터 키워드를 이용한 실행 문장 구성 / [19:18] 프로젝트 구성 / [20:18] 이니셜 블록 구성 / [21:15] 컴파일 / [21:33] 파일 구성 / [22:26] 시뮬레이션 실행 / [22:37] 결과 확인 / [24:52] 키워드 종류에 대해 알아보기 / [25:11] monitoroff / [25:45] monitoron / [26:22] strobe / [27:18] strobe 와 display 비교 / [30:44] 새 프로젝트 생성 / [31:11] 변수 지정 / [31:52] 블록문 구성 / [32:28] always문 할당 / [34:27] a 값 변형 / [35:07] display 적용 / [35:37] strobe값 적용 / [36:51] 초기값 바꿔주는 구문 작성 / [37:37] 테스트 파일 구성 / [38:15] 시뮬레이션 실행 / [38:37] 결과 확인 / [41:22] 코드 위치 변경 / [42:00] 결과 확인 / [42:45] strobe 문장 위쪽으로 적용 / [43:20] 랜덤 키워드를 사용 했을때 실행 되는 문장 살펴보기 / [44:15] 새 프로젝트 생성 / [44:42] random 함수 입력 / [45:22] seed 값 입력 / [46:45] always 문 입력 / [47:12] 컴파일 / [47:27] 테스트 파일 구성 / [48:06] 결과 확인 / [49:00] readmem 키워드 / [51:57] 프로젝트 생성 / [52:22] 메모리 저장 공간 구성 / [53:27] readmemb 입력 / [53:52] 저장된 값 출력 될수 있게 구성 / [54:45] 테스트 파일 생성 / [55:12] 결과 확인 / [56:52] compiler directive / [57:45] define / [58:52] 예시 보기 / [60:30] include / [61:37] timescale / [64:00] 예시 보기 / [64:48] conditional compilation / [65:39] 예시 보기

07 조합회로를 구성하는 procedural assignment문
각각의 조건을 이용한 조합회로를 표현하는 방법에 대해서 예제와 함께 알아봅니다.
58분
책갈피 : [00:07] verilog 합성 표현 / [00:59] 합성 가능한 코딩 스타일 보기 / [01:34] 반복문에 대한 종류 / [02:13] mux 설계 / [04:15] 2:1 mux gate / [05:30] 예시 보기 / [06:15] 연결선 / [08:11] 변경 되는 부분 확인 / [11:37] 시뮬레이션을 통해 확인하기 / [11:46] 프로젝트 파일 생성 / [12:18] 인풋값 선언 / [12:37] 출력값 선언 / [12:52] 연결선에 대한 타입 지정 / [13:13] 컴파일 / [13:28] 테스트 파일 구성 / [14:01] 결과 확인 / [15:13] 값 변경 / [15:43] 컴파일 / [16:03] 결과값 확인 / [17:55] s 값 구성 / [18:51] 결과값 확인 / [19:26] 중복되는 연산 지우기 / [20:03] assign-continuous assignment / [20:59] 새 모듈파일 구성 / [21:51] 할당문 키워드 입력 / [23:37] 시뮬레이션 테스트 파일 구성 / [24:40] 결과 확인 / [25:30] 탑 모듈로 변경 / [25:47] 컴파일 / [26:07] 테스트 파일 선택 후 실행 / [26:37] conditional-continuous assignment / [27:07] 프로젝트에 적용하기 / [28:00] 시뮬레이션 실행 / [28:51] procedural assignment문-if문 / [29:26] if문을 이용한 설계 / [30:03] 달라진 점 / [30:41] 모듈 내부 부분 보기 / [32:52] 프로젝트 구성 / [33:22] always 블록 구성 / [34:13] 시뮬레이션 파일 구성 / [34:45] 결과 확인 / [35:28] 시간에 따른 y에 대한 값의 변화 알아보기 / [36:19] 컴파일 / [36:37] 결과 확인 / [39:05] 센시티비티 리스트 사용법 / [41:15] if문 조건 다른 방식으로 사용하기 / [42:07] 조건 선언 / [43:30] 중요한 점 / [45:36] else if 문 / [46:07] 포트리스트 보기 / [47:00] 처음에 나타나는 if 조건 확인 / [48:07] 프로젝트 생성 후 코드 구현 / [48:37] else if문 구성 / [48:52] 컴파일 / [49:04] 테스트 파일 구성 / [49:36] 결과 확인 / [50:37] 값 수정 / [53:15] 컴파일 / [53:45] 시뮬레이션 실행 / [54:00] 결과 확인 / [57:07] 기호값 사용할 경우 / [57:37] 결과 확인

08 베릴로그로 표현하는 Don't care 표현
베릴로그로 포현하는 입력과 출력의 Don't care표현을 구성하고 그 결과값이 어떻게 나타나는지 확인해봅니다.
48분
책갈피 : [00:09] 조건문을 활용한 조합회로 표현 / [00:20] case 문 사용 예제 / [04:25] case문에서 확인 / [06:00] 시뮬레이션 적용할 case문 확인 / [06:15] 프로젝트 생성 / [06:45] case문 실행할수 있는 문장 입력 / [07:00] 컴파일 / [07:15] 시뮬레이션을 위한 파일 생성 / [07:46] 확인 / [08:22] sel값 입력 / [09:31] 시뮬레이션 결과값 적용 / [09:35] 결과 확인 / [10:48] case 문과 else if 문의 구조적 차이 / [12:56] case 문과 else if 문의 장단점 / [13:03] worst case delay / [13:41] 조건문 표현력 / [14:05] 우선순위 표현력 / [14:56] 출력 don't care 표현 / [16:44] 진행되는 코드 살펴보기 / [19:26] 공통적인 부분 표현 / [20:00] 새 프로젝트 구현 / [20:40] case문 구성 / [21:07] 테스트 파일 생성 / [21:41] 모듈 파일 생성 확인 / [22:45] 컴파일 / [23:07] 결과 확인 / [25:07] 불완전한 케이스문 완전한 케이스문으로 만들기 / [25:56] 컴파일 / [26:37] 입력 don't care 표현 (casex,casez) / [26:56] 구현 예시 / [28:17] don't care 조건으로 표현하기 / [32:06] 우선순위 반영되는지 확인하기 / [33:22] a에 대한 값이 0으로 입력됐을 경우 조건 / [33:52] 출력문 바꿔 선언하기 / [35:20] vhdl 에서의 case 문과 베릴로그 에서의 casex,casez의 차이점 / [36:22] full case / parallel case / [38:45] full case / parallel case 문 예시 / [39:57] don't care 조건을 명시적으로 나타낸 하드웨어 코드 / [41:44] module mux3to1 / [42:15] 경우의 수 네가지 / [44:21] full dase 문 적용 / [44:35] synopsys full_case / [45:12] 주의할점 / [45:45] parallel case문 예시 / [46:51] 추가적으로 비교하게될 로직 부분 보기 / [47:54] synopsys parallel_case

09 Latch의 생성조건
latch가 생성되는 발생조건에 대해서 시뮬레이션을 통해 결과를 확인합니다.
1시간 4분
책갈피 : [00:22] Decoder / [03:07] case 문을 이용한 모듈 구성 / [05:56] default 문 구성 / [06:15] 새 프로젝트 구성 / [07:11] 모듈 내부 구성 / [07:30] if 조건 입력 / [07:46] else 조건 입력 / [09:01] 참 이었을 경우 case 문 구성 / [09:46] 경우의 수 적용 부분 입력 / [10:15] 컴파일 / [10:46] 테스트 파일 생성 / [11:16] 생성 확인 / [12:37] y에 대한 출력 값 확인 / [14:00] 시뮬레이션 결과 확인 / [16:25] en 값 0값으로 변경 / [16:48] 결과 확인 / [18:29] 간략하게 표현한 코드 살펴보기 / [20:11] if 조건을 이용한 디코드 회로 만들기 / [20:48] 컴파일 / [21:22] 결과값 확인 / [22:33] encoder 회로 / [23:26] encoder 코드 예시 / [26:22] module encoder_case / [28:03] encoder를 이용한 시뮬레이션 결과 / [28:15] 포트리스트 구성 / [29:11] always 블록 설정 / [29:33] if 조건 입력 / [30:03] 컴파일 / [30:17] 시뮬레이션 파일 구성 / [31:15] 결과값 확인 부분 구성 / [32:15] 지연시간에 따라 변경되는 부분 입력 / [32:37] 컴파일 / [33:00] 결과 확인 / [34:21] latch / [36:12] latch가 발생되는 상황 / [36:22] else가 빠진 if문 / [39:22] 새 프로젝트 생성 / [39:50] 입력값, 출력값 입력 / [40:19] latch 발생을 위한 코드 구성 / [41:15] 컴파일 / [41:50] 테스트 파일 생성 / [42:34] 파일 생성 확인 / [43:07] 시뮬레이션 동작시 연산 실행을 위한 값 설정 / [43:22] 지연시간 설정 / [45:29] 컴파일 / [45:42] 시뮬레이터 실행 / [46:04] 결과 확인 / [48:49] latch 발생의 예 / [49:06] reset이 있는 latch / [51:00] else 문으로 구성 / [51:37] if 문으로 구성 / [52:58] latch가 발생되는 게이트와 발생되지 않는 게이트 / [54:37] default 값 이용 / [56:22] 기본값 지정해서 latch 방지하기 / [57:22] 중첩된 if문 / [58:52] 중첩된 if문에서 latch 발생 / [59:45] default가 빠진 case문

10 FlipFlop의 생성조건
FlipFlop의 기본형을 가지고 FlipFlop이 생성되는조건의경우는 예제와 함께 시뮬레이션하여 결과를 확인합니다.
55분
책갈피 : [00:06] flip flop / [02:52] 모듈 구성 부분 보기 / [03:15] 두 모듈의 차이점 / [04:00] 리스트에 나열될수 있는 신호 보기 / [05:00] 기본형으로 사용되는 부분 / [05:30] 블록 형태로 보기 / [06:54] 기본 형태에서의 flip flop 확인 / [07:15] 연산자 / [09:31] 비동기 리셋신호를 가진 플립플롭 / [11:31] if문일 경우 / [12:09] 블록 구조도 보기 / [13:16] 프리셋 신호가 필요할 경우 / [13:39] 프로젝트 생성 / [13:52] 포트리스트 구성 / [14:16] always 블록 생성 / [14:58] 테스트 파일 생성 / [15:50] 시뮬레이션 할수 있는 작업 실행 / [16:22] always 문 작성 / [16:41] 지연시간 부분 지정 / [18:40] 컴파일 / [18:52] 시뮬레이터 실행 / [19:00] 결과 확인 / [20:48] 변화되는 입력값 확인 / [22:37] 리셋값이 0 이 아닌데도 바로 출력이 나타나지 않는 이유 / [23:30] 리셋값 제거 / [24:21] 컴파일 / [24:30] 결과 확인 / [25:25] d 값 변경 / [25:37] 결과 확인 / [26:03] 처음상태로 유지되는 부분 보기 / [26:29] 결과 확인 / [28:52] 동기식 리셋 신호를 가진 플립플롭 / [29:02] 비동기식과 동기식의 차이점 / [30:26] 모듈 파일 생성 / [32:07] 컴파일 / [33:07] 테스트 파일 생성 / [34:52] always 문 작성 / [35:58] 컴파일 / [36:13] 결과 확인 / [38:00] d 값 변경 / [39:37] 결과확인 / [41:22] 리셋 값이 1일 경우 / [42:22] 비동기식과 동기식의 차이점 확인 / [44:45] 컴파일 / [45:14] latch 발생 확인 / [46:06] view text report 선택 / [46:22] 확인 / [49:52] final report 부분 살펴보기 / [50:27] FDR / [51:27] 컴파일 결과 확인 / [52:19] FDC / [52:45] 표 확인 / [54:39] latch 추출 유무 확인

11 FlipFlop의 규칙과 Buffer
FlipFlop이 생성되는 일반적인 규칙에 대해서 알아보고 buffer를 이용한 데이터전송 모듈방법에 대해서 학습합니다.
43분
책갈피 : [00:07] D 플립플롭 / [01:48] 우선순위 지정 / [02:38] 주의할점 / [03:00] rst 값의 우선순위를 높게 정한 이유 / [04:00] 비동기 리셋과 동기식 세트가 혼합된 경우 / [05:10] load 신호가 있는 플립플롭 / [05:57] enable 신호가 있는 d 플립플롭 만들기 / [06:44] 프로젝트 생성 / [07:12] d의 값 적용 구성 / [07:15] 컴파일 / [08:05] 테스트 파일 생성 / [08:54] clk 값에 대한 변화 적용 / [09:37] 시뮬레이터 실행 / [09:46] 결과 확인 / [10:39] 시간에 따라 구분하기 / [11:05] 결과 확인 / [12:45] 모듈 자체에서 보기 / [13:24] view text report 선택 / [13:50] final report 보기 / [14:26] 수정사항 적용 / [16:11] rst 값 초기화 부분 적용 / [17:02] 컴파일 / [17:26] 추가된 부분 입력 / [18:18] rst 값 0값으로 초기화 / [19:47] d의 값 변경 / [20:29] 시뮬레이션 실행 / [20:37] 결과 확인 / [22:32] 입력값에 복잡한 논리식이 있는 경우 / [23:00] 모듈 예시 보기 / [25:56] 입력 받은값 적용해서 순차적인 부분 만들기 / [28:00] 프로젝트 생성 / [28:18] 모듈 헤더 구성 / [29:06] 테스트 파일 생성 / [29:55] 이니셜 블록에 신호값 적용 / [30:45] 만들어진 부분 지연시간에 따라 조정하기 / [31:26] 시뮬레이션 실행 / [31:45] 결과확인 / [32:37] 입력값에 대한 부분 적용 / [33:37] 결과확인 / [34:57] 입력이 복잡한 플립플롭 블록도 보기 / [35:57] 모듈 생성 예시 / [37:28] 새 프로젝트 생성 / [37:57] awlays 블록 입력 / [38:15] 결과값 확인 / [39:05] final report 부분 확인 / [39:43] 테스트 파일 추가 / [40:07] 지연시간 부분 정의 / [41:53] 시뮬레이션 실행 / [42:14] 결과확인

12 Register & shift Registers
parameter값을 사용한 레지스터를 구성하고 그 결과를 통해 시뮬레이션은 어떤 결과가 나타나는지 확인합니다.
51분
책갈피 : [00:08] buffer inference / [01:07] continuous assignment 문으로 구성하기 / [02:21] procedural 문으로 구성하기 / [03:19] 양방향 버퍼 / [04:42] 모듈의 구성 부분 살펴보기 / [05:46] 생성된 포트리스트 보기 / [08:26] 프로젝트 생성 / [09:28] assign 키워드 입력 / [09:46] 테스트 모듈 생성 / [10:09] 생성 확인 / [10:50] 지연 시간 부분 적용 / [12:24] 시뮬레이터 실행 / [12:31] 결과 확인 / [14:13] 양방향 버퍼의 입출력 데이터가 레지스터를 거치는 경우 / [14:31] 구성 예 보기 / [16:56] buffer_reg 프로젝트 선언 / [17:25] 레지스터 값 선언 / [18:07] always 블록 입력 / [18:33] 컴파일 / [18:45] 테스트 파일 생성 / [19:17] 생성 확인 / [19:56] 지연시간에 따른 이동 시간 입력 / [21:37] 시뮬레이터 실행 / [21:48] 결과 확인 / [23:25] rst 값 입력 / [23:37] 결과 확인 / [25:11] register / [26:11] register 구성 모듈 보기 / [27:03] 일반적인 비트수를 표현한 레지스터 파라미터 형태로 구성하기 / [28:07] 모듈 헤더 구성 방법 비교 / [30:52] register 프로젝트 생성 / [31:48] always 블록 입력 / [32:28] 컴파일 / [32:45] 테스트 파일 생성 / [33:22] 생성확인 / [33:58] 지연 시간 부분 입력 / [34:52] 시뮬레이터 실행 / [35:05] 결과 확인 / [36:45] value 값 변환해서 확인하기 / [37:52] 파라미터값 변경을 통한 레지스터 만들기 / [40:07] 결과 확인 / [41:00] shift register / [42:22] 모듈 구성 확인 / [44:27] shift register 프로젝트 생성 / [44:57] 컴파일 / [45:12] 테스트 파일 생성 / [45:22] 모듈 생성 확인 / [46:20] 결과 확인 / [46:57] Q 값 초기화 / [47:37] 결과 확인 / [49:19] assign 할당문 부분 새롭게 입력 / [50:19] 결과 확인

13 counter
단순이진카운터부터 BCD카운터까지 베릴로그에서 합성가능한 카운터를 표현해보고 모듈생성을 통해 결과값을 확인합니다.
1시간 2분
책갈피 : [00:32] 산술 shift register / [02:46] shift 신호 만으로도 값 이동되는지 확인 / [03:14] a_shift 프로젝트 생성 / [03:53] 컴파일 / [04:00] 테스트 파일 구성 / [04:27] 모듈 파일 생성 확인 / [05:00] 입력값 초기화 시키기 / [05:27] clk 신호값 입력 / [06:25] d에 대한 초기값 입력 / [08:03] 시뮬레이터 실행 / [08:13] 결과 확인 / [10:01] 연산 일어날수 있게 적용 / [10:41] 결과 확인 / [12:11] counter / [15:20] 2진 counter / [15:31] 프로젝트 생성 / [16:00] 컴파일 / [16:26] 테스트 파일 생성 / [16:47] 생성된 모듈 파일 보기 / [17:30] clk 신호값 선언 / [18:25] 지연시간 부분 입력 / [19:32] 시뮬레이터 실행 / [19:56] 결과 확인 / [21:52] 십진법 형태로 신호값 부분 보기 / [22:33] 카운터 길게 적용하기 / [23:41] run time 수정 / [24:03] 결과 확인 / [24:33] counter 증가 감소 / [26:26] updown_counter 모듈 생성 / [27:26] 컴파일 / [27:44] 테스트 파일 생성 / [28:07] 파일 생성 확인 / [28:52] clk 신호값 지정 / [30:00] updown 신호값 증가 / [31:15] updown 신호값 감소 / [31:48] 시뮬레이터 실행 / [32:07] 결과 확인 / [34:05] rst 값 입력 / [34:30] 결과 확인 / [35:43] 10진법 부분으로 확인 / [36:43] 증가, 감소 부분 간단하게 적용하기 / [38:45] 결과 확인 / [39:37] radix 부분으로 바꿔서 적용 / [40:30] 병렬 로딩 counter / [42:59] 프로젝트 구성 / [43:27] view text report 확인 / [45:30] BCD counter / [48:06] BCD counter 프로젝트 생성 / [49:14] 비동기식 선언 / [50:20] 조건이 참일경우 cnt 값 초기화 / [51:22] cnt 증가값 입력 / [53:27] 컴파일 / [53:52] 테스트 파일 생성 / [54:15] clk 신호값 적용 / [54:42] rst 값 입력 / [55:37] 결과 확인 / [56:37] run time 변경 / [57:00] en 값이 0 값일때와 1 값일때의 차이 / [58:37] 결과 확인 / [60:15] 값에 대한 정의 유지시키기 / [60:29] 결과 확인

14 counter연결/ Embedded memory
여러개의카운터연결을 통해 자리수표현에 대한 카운터방법에 대해서 알아보고 Embedded memory가 어떤식으로 표현되고 구성이 되는지를 알아봅니다.
55분
책갈피 : [00:07] counter 연결 / [01:42] 추가 사항 확인 / [02:07] 입력값 과정 보기 / [03:46] 카운터 모듈 구성하기 / [04:00] 카운터에 대한 부분 선언 / [04:28] always 블록 구성 / [04:54] 신호값 입력 / [05:15] 컴파일 / [05:30] 테스트 파일 생성 / [06:15] clk 신호 값 입력 / [08:11] 자릿수에 대한 부분 만들기 / [10:18] 10의 자리 부분 만들기 / [12:26] 시뮬레이션 적용 / [12:41] 결과 확인 / [14:03] radix 부분으로 확인하기 / [15:28] 런타임 조정 / [15:46] 결과 확인 / [16:00] radix 부분으로 확인하기 / [17:03] embedded memory / [17:11] ROM / [17:55] 선언문 구성 보기 / [20:17] 이니셜 블록 / [21:26] 이니셜 블록과 always 블록의 차이점 / [22:45] rom을 구성하는 모듈 / [25:22] 모듈 생성 / [25:45] 메모리 공간에 적용되는 값 입력 / [26:00] 할당문 지정 / [26:10] 컴파일 / [27:30] 메모리 생성 확인 / [28:56] RAM / [31:18] 동작 방법에 대한 모듈 구성 / [32:13] wirte-first mode 구성 / [36:36] 표현 방법 다르게 나타내기 / [39:29] 모듈 생성 / [40:13] 메모리 선언 / [40:52] 컴파일 / [41:07] 테스트 파일 생성 / [41:29] 완성된 모듈 확인 / [42:52] 간격 조절 / [43:07] 값 저장할수 있는 공간 지정 / [45:00] 결과 확인 / [46:49] 순차적으로 진행됐을때 메모리 구성 / [47:12] 새 프로젝트 생성 / [47:37] 소스 추가 / [48:22] always 블록 지정 / [48:52] 컴파일 / [49:27] 소스 파일 생성 / [50:00] clk 신호값 지정 / [52:30] 결과 확인 / [54:06] 메모리 부분 구성 확인

15 FSM Design
FSM Design에 대해서 알아보고 mealy FSM을 구성하는 합성방법에 대해서 알아봅니다.
59분
책갈피 : [00:05] read-first mode / [03:00] no-change mode / [05:42] FSM Design / [07:00] Mealy type과 moore type 비교 / [08:24] Mealy type 상태머신 구성하기 / [08:43] fsm state 블럭도 보기 / [09:58] always 블럭 이용하기 / [13:39] 모듈로 나타내기 / [15:46] s0 상태일 경우 / [16:56] s1 상태일 경우 / [17:30] s2 상태일 경우 / [17:47] s3 상태일 경우 / [19:21] 리셋 신호에 따른 조건 만들기 / [20:03] 상태 머신 구성하기 / [20:15] 인풋, 아웃풋 신호 부분 입력 / [20:33] 상태값들의 초기값 지정 / [21:06] 케이스문으로 구성하기 / [21:48] always 블럭 입력 / [22:22] 컴파일 / [22:56] 결과창 확인 / [24:33] 옵션 값 변경 / [26:03] 인코딩값 확인 / [26:41] 테스트 파일 구성 / [27:30] x값이 1일 경우 살펴보기 / [27:52] 시뮬레이터 실행 / [28:15] always 블럭 선언 / [29:17] 입력값 변경 / [29:33] 지연시간 입력 / [29:59] 시뮬레이션 진행 / [30:15] 결과 확인 / [30:41] 인스턴스 부분 보기 / [31:22] uut 부분 오브젝트 구성 보기 / [32:22] 오브젝트 값 웨이브로 확인하기 / [33:28] 실행 정지 / [35:45] x값이 1일 경우 살펴보기 / [36:50] 시뮬레이션 결과 확인 / [37:37] 신호값 추가 후 확인 / [38:59] 간단하게 표현하기 / [39:45] 구성된 코드 보기 / [40:52] 모듈에서 구성하기 / [42:00] 한개의 always문으로 mealy fsm 구성하기 / [43:07] 모듈 부분 살펴보기 / [47:37] 모듈 구성 / [48:04] 상태값에 대한 초기값 지정 / [48:51] 연산 출력 부분 입력 / [49:12] 테스트 파일 생성 / [49:45] 신호값 동일하게 적용하기 / [50:37] 지연 시간 부분 적용 / [51:22] 시뮬레이터 실행 / [51:37] 결과 확인 / [52:42] 웨이브 윈도우에서 적용한 후 결과 확인 / [53:52] 싱글 모듈에서 할당문 적용하기 / [55:35] 컴파일 / [56:12] 시뮬레이터 실행 / [56:30] 결과 확인 / [57:00] 상태에 대한 부분 적용 / [57:27] 결과 확인

16 Digital System Design
FSM의 mealy FSM을 구성하는 합성방법에 대해서 알아보고 디지털 시스템을 디자인하는 데이터경로와 FSM에 대해서 알아봅니다.
59분
책갈피 : [00:06] 무어 타입으로 구성하는 상태 머신 / [00:31] 결과 비교하기 / [01:11] 입력 패턴 찾는 과정 적용하기 / [04:11] 입력값을 상태도에 입력해 원하는 패턴 찾기 / [05:12] 0값 입력된 경우 / [08:48] 밀리타입에서 구성하기 / [09:24] 무어타입 구성 모듈 보기 / [10:39] 상태에 대한 부분 확인 / [11:15] 결과 저장 상태 부분 / [11:39] 무어타입 상태 머신 적용하기 / [11:50] 포트 부분 구성 / [12:11] 초기값 정하기 / [12:41] y값 지정 / [13:18] 현재 상태 부분 나타내기 / [13:41] 변수에 대한 부분 생성 / [14:13] 레지스터 구성 / [15:03] 이벤트 리스트 구성 / [16:18] 테스트 파일 생성 / [17:56] clk 신호에 대한 부분 지정 / [18:22] 지연시간 부분 적용 / [20:14] 패턴 변화값 입력 / [20:52] 컴파일 / [21:07] 결과 확인 / [22:14] 런타임 적용 / [24:51] pipeline / [26:45] pipeline 모듈 구성 보기 / [28:25] 카운터 연결 / [29:00] 디지털 시스템 설계 / [30:33] 데이터 경로 보기 / [32:42] w 목적지 / [34:20] i 목적지 / [35:30] y 목적지 / [35:58] 기타연산 / [36:36] 개별적 데이터 경로 합치기 / [38:37] 가산기 / [40:07] register / [41:37] 멀티플렉스 연산 / [43:04] comp_LT / [43:45] datapath / [47:12] 비교 연산 구성 전 지정해야할 부분 / [49:07] 디지털 시스템 설계 방법 / [49:36] 제어부 설계 / [52:07] 상태도 확인 / [52:21] 상태머신에 적용되는 신호 보기 / [53:37] 블록도 보기 / [56:46] 연산이나 상태 합쳐서 나타내기

17 데이터경로합치기/제어부만들기
데이터시스템을 만들기위한 경로모듈을 구성하고 제어할수있는 컨트롤 모듈을 통해 시스템을 구성해봅니다.
1시간 2분
책갈피 : [00:09] 모듈화 시킨 코드 살펴보기 / [01:57] always 블록을 이용한 케이스문 연산 / [02:53] 신호 값에 대한 초기화값 지정 / [03:42] 전체시스템 통합 / [04:46] 시스템 모듈 부분 보기 / [06:25] 프로젝트 생성 / [06:46] 가산기 모듈 지정 / [08:15] DSD 모듈에 모듈 저장 / [08:33] 레지스터 구성 / [09:48] 저장 / [10:11] 멀티플랙스 구성 / [11:09] 비교연산 구성 / [12:01] 데이터 경로 지정 / [12:56] 계층 구조 확인 / [14:01] 제어부 구성 / [14:26] 저장 / [15:20] 시스템 모듈 구성 / [15:35] 저장 / [16:03] 컴파일 / [16:26] 테스트 파일 생성 / [17:15] 확인 / [17:56] 디지털 시스템 설계 / [18:30] 입력 받은 값 적용 부분 구현 / [19:26] W에 대한 결과값 받기 / [20:00] 코드 보기 / [21:07] Y값에 20을 적용할 경우 / [22:07] 테스트 파일에 적용하기 / [22:25] Y에 대한 초기값 지정 / [23:03] 결과값 기다리는 부분 지정 / [24:30] Y값 다르게 입력 / [25:26] 결과값 입력 / [26:03] 결과값 확인 / [26:56] 시뮬레이터 실행 / [27:10] 결과 확인 / [27:30] 음수값 표현해서 적용하기 / [27:52] 결과 확인 / [28:22] 신호값을 이용한 외부 폼 차트 적용 확인 / [30:47] radix 부분으로 확인 / [33:06] 값에 대한 신호값 변화 확인 / [36:22] 베릴로그 코드 진행 알아보기 / [37:15] verilog timing control / [38:30] event / [40:15] event 블록도 보기 / [41:21] 우선순위 살펴보기 / [42:45] 우선순위 알고리즘 / [47:22] 예시 보기 / [49:04] 타이밍 제어 부분 보기 / [49:19] delay based timing / [49:43] blocking assignment 와 non blocking assignment 차이 / [52:50] timing 프로젝트 구성 / [53:35] 연산 부분 정의 / [54:52] 연산 적용 / [56:15] 디스플레이 키워드 추가 / [57:15] 컴파일 / [57:50] 시뮬레이터 실행 / [58:06] 결과 확인 / [58:37] 연산식 보기 / [59:38] non blocking 연산식 보기

18 전체시스템 통합/tining control
구성한 시스템디자인을 통합하여 결과를 확인해보고 베릴로그에서 사용되는 타이밍 컨트롤에 대해서 학습합니다.
55분
책갈피 : [00:19] timing 프로젝트 구성 / [00:43] input과 output 대신하는 값 지정 / [01:23] integer로 연산 부분 지정 / [02:20] blocking 연산 지정 / [03:22] non blocking 연산 지정 / [03:52] 디스플레이 키워드 추가 / [04:40] 컴파일 / [05:13] 결과 확인 / [08:54] regular delay control / [09:52] 이니셜 블록에 구성된 문장 보기 / [10:46] 모듈 구성 / [11:13] 이니셜 블록 선언 / [12:24] 치환되는 값 선언 / [13:22] 컴파일 / [13:43] 테스트 파일 생성 / [14:26] a 값 부분 확인 / [15:28] 결과 확인 / [17:11] 코드에서 살펴보기 / [18:33] zero delay control / [19:26] 예시 보기 / [19:59] 이니셜 블록 구성 / [21:52] integer에 c값 추가 / [22:07] 디스플레이 구성 / [23:47] 이니셜블록 추가 / [24:36] 컴파일 / [24:56] 시뮬레이션 파일 생성 / [25:48] 결과 확인 / [26:59] c 값 보기 / [28:33] intra assignment delay / [30:30] regular delay 와 intra assignment delay 보기 / [31:33] 실습 / [32:06] 세개에 대한 변수값 선언 / [32:37] 지연시간에 대한 차이 살펴보기 / [32:49] 문장 선언 / [33:30] a 값을 다른값으로 할당하기 / [34:52] b값 할당 / [35:22] 지연시간 입력 / [36:13] 디스플레이 구성 / [37:05] 컴파일 / [37:52] 테스트 파일 추가 / [38:22] 결과 확인 / [38:44] 코드에서 보기 / [42:59] event-based timing / [43:14] regular event control / [44:07] posedge event / [44:15] negedge event / [45:28] 코드 구성 예시 / [47:04] named event control / [47:52] 이벤트 변수를 사용한 코드 살펴보기 / [49:37] event based timing / [50:19] event or control / [51:15] 코드 구성 예시 / [52:36] wait문 과 while문 / [54:01] 코드 구성 예시

19 scalable디자인과 concurrent디자인
내부상수를 표현하는방법과 인스턴스를 생성하는 방법,여러개의 문장을 사용하는 블록문에 대해서 정리 및 학습합니다.
55분
책갈피 : [00:03] scalable design / [00:55] parameters / [03:07] 파라미터 선언 예 / [04:30] 파라미터가 2개인 경우 / [05:10] 파라미터를 이용한 레지스터 구성의 예 / [06:42] localparam / [08:05] 코드 구성 예시 / [10:00] arrays of instances / [11:15] 구성된 모듈 살펴보기 / [12:24] generate block / [13:01] generate loops / [14:01] loops에 구성된 문장 보기 / [16:37] primitive gate instance / [17:48] always block / [18:36] for문, if-else문, case문 / [19:15] conditional generate / [20:32] sequential / [20:47] parallel / [22:40] 코드 구성 예시 / [24:41] parallel 블럭 사용시 주의점 / [25:41] 가장 중요한 적용 부분 / [27:07] 중첩된 모듈 살펴보기 / [28:03] 첫번째 구간 이니셜 블록 부분 보기 / [29:22] 두번째 이니셜 블록 부분 보기 / [31:25] named block / [31:52] 이름 붙이는 방법 / [33:07] disabling named block / [34:44] time unit / [34:52] timescale / [35:28] 시간 단위 보기 / [37:15] 다른 방법으로 모듈 구성하기 / [37:22] 새 프로젝트 구성 / [39:00] 모듈 구성 소스 추가 / [39:52] 결과 확인 / [41:00] 카테고리 살펴보기 / [41:27] 심볼 아이콘 생성 / [41:52] 로직 선택해서 구성하기 / [42:30] 확대, 축소 / [43:07] 인풋, 아웃풋 값 추가 / [44:19] 확인 / [44:51] object properties / [45:30] 이름 변경 / [46:15] 디자인탭 살펴보기 / [46:50] ucf 파일 생성 / [47:42] 모듈 생성 확인 / [48:12] 결과 보기 / [49:22] lock pin 확인 / [50:29] 저장 / [50:45] lock pin 재실행 / [51:34] 테스트 파일 생성 / [53:07] 구문 입력 / [53:37] 인풋 값 변경 / [54:29] 시뮬레이터 실행 / [55:07] 결과 확인

20 자판기설계
전체시스템 설계를 통한 방법을 이용하여 실질적인 모델을 구성하는 주요 모듈 설계에 대해서 학습합니다.
45분
책갈피 : [01:07] 모듈화 시킨 자판기 구성하기 / [03:12] 표현 내용 / [04:24] 주요 구성 모듈 / [05:09] 모듈 헤더 정의 / [06:00] 모듈 내부 정의 / [06:57] begin값 구성 / [08:20] case문 확인 / [08:56] 저장 / [09:20] 상품 선택 신호값 적용 / [10:05] 상품 부분 모듈 구성 / [10:33] 상품 정보 출력값 입력 / [11:22] 모듈 내부 정의 / [12:30] 처음 상태에 대한 경우 만들기 / [12:52] 7가지 상품 부분 정의 / [13:46] always 블록 생성 / [15:56] 가산기 구현 / [16:48] 모듈 헤더 구성 / [17:11] 연산 될수 있는 값 선언 / [18:41] cout 부분 입력 / [21:56] 멀티플렉서 부분 구성 / [22:37] 모듈 내부 구현 / [23:00] 반복문 부분 구현 / [24:37] case문 구성 / [25:48] cant 부분 구현 / [26:07] 블럭화 / [27:22] 변화 과정 모듈화 시켜 구성 / [29:11] 값 저장 공간 만들기 / [30:26] for문 구성 / [30:51] begin 값 만들기 / [32:07] 잔돈 반환 모듈 생성 / [33:37] 초기화 값 선언 / [35:59] begin 코드 구성 / [36:35] 카운트 값 반복문 지정 / [38:28] 저장 / [39:30] 부수적인 모듈 보기 / [40:22] 상품에 대한 모듈 구성해서 보기 / [41:37] 멀티플렉스 부분 구성 / [42:30] 출력값에 대한 부분 구성


샘플확인 : 알지오 검색후 -> 강의검색란 -> verilog