중요한 point
1. VHDL은 대소문자 구분을 하지 않는다.
모든 프로그래밍 언어를 사용할 때, 가장 중요한 것은. 변수이름을 짓는 것이고, 변수이름 짓기에 많은 비중을 차지하는 것이 대소문자 구분이다
=> 컴퓨터 언어를 배울 때는 항상 대소문자 구분 여부를 확인하자.
1. entity와 architecture
- 대전제 ; 우리가 모듈을 갖다 쓸 때는, 모듈의 복잡한 회로는 알 필요 없다.
=> 기능과 입출력만 알면 된다.
=> 그래서 HDL(hardware description language)도
=> 입출력과 내부 회로를 분리했다.
- entity는 입출력
- architecture는 내부회로라고 알 면 된다.
- 모듈 이름과, 입출력(port)가 몇개 있는지
- entity에서 선언한뒤
- architecture구문에서
- architecture name of entity의 형태로
- entity의 내부 회로(architecture)를 작성해 주면 된다.
1.1 따라서, 구조는
entity 모듈 이름 is
port
(신호 명칭 & type 선언);
(신호 명칭 & type 선언);
(신호 명칭 & type 선언.........);
end 모듈이름 ;
Architecture 회로이름 of 모듈이름
선언문들 (declaration & definition)
[ex) 회로의 입출력, 신호, type, 상수, 함수, procedure, component]
begin
동작기술(concurrent)
동작기술(concurrent)
동작기술(concurrent)
end 회로이름 ;
이렇게 된다.
설명을 덧붙이자면, architecture문은
begin문 전까지, 다양한 선언과 정의를 내려주고
begin ~ end 문에서 가져다 쓴다.
- C++같은 프로그래밍 언어에서
변수나 여러 선언을 먼저 한뒤에 가져다 쓰는 것과 같은 개념이라고 생각하면 된다.
-VHDL의 모양이 객체지향과도 비슷한 데, 각 파일들이 class들을 생성하는 것이고,
1.2 test bench
테스트 용으로 vhd 파일을 하나 만드는 것이다.
entity 선언을 한다 (안에 내용은 없음)
그리고 architecture부분에 component문을 통해서,
테스트를 원하는 모듈을 불러온다.
입력 신호변수를 선언하고, 값들을 설정해 준 후,
U0 : 모듈 port map( a => in, b => in, c=> open , s => open)
이런식으로 설정한 신호값들을 테스트 원하는 모듈에 넣어준다.
U0 : half_adder port map (a=>a, b=>b, s=>open, c=>open);
이렇게 component 실체화 문을 architecure문 끝에 넣어줘야.
신호에 U0를 통해서 원하는 entity를 test할 수 있다.
이걸 넣지 않으면 a,b 같은 입력파형만 나온다.
1.3 simulation
1.3.1 model sim -> simulate -> Start simulation을 해서 simulation 파일을 생성해준다.
-> 여기서 파형을 보면 왜 안나오지?? 이런다...
1.3.2 simulation - run - run 100 혹은 run all을 해준다.
위에 runtime option에 들어가면, default값을 변경하는 부분이 있다.
바꿔주면 다른 값으로 run을 할 수 있다.
1.3.3 run 하기 전(simulation파일만 생성)
1.3.4 run을 한 이후
run all하면 파형이 길어져서,
view optimization부분을 찾아서 자동 확대로 설정해 주면 된다.
==> 이 부분은 나도 찾아봐야 함.
참고문헌
1. 여기에도 설명이 잘 되어 있는데, 나의 post와 비교해서 읽다 보면 무엇을 말하고 싶은지 직관적으로 받아 들일 수 있을 것이다.
https://blog.naver.com/PostView.nhn?blogId=r2adne&logNo=120155040778
2. 여기는 인터넷에서 찾은 강의파일인데 '정말' 설명이 잘 되어 있는 것 같다.
component같은 설명도, 좋은 예제를 통해서 이해를 돕는다.
사견인데, VHDL이나 여타 프로그래밍은 예제가 많을수록 좋다.
http://dasan.sejong.ac.kr/~dihan/vhdl/VHDL03_chapter1.pdf
http://dasan.sejong.ac.kr/~dihan/vhdl.htm
3. modelsim manual
https://www.slideshare.net/beedool/modelsim-43-46288268
4. Vhdl 예제들
http://www.csun.edu/edaasic/roosta/VHDL_Examples.pdf
5. testbench 작성법
https://m.blog.naver.com/PostView.nhn?blogId=pcs874&logNo=60102113422&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
'전공지식정리 > 디지털시스템설계' 카테고리의 다른 글
practical combinational logic design 1 (0) | 2020.12.08 |
---|---|
VHDL 문법(미완) (0) | 2020.12.08 |
4. Timing과 Simulation (0) | 2020.12.08 |
디자인스타일 3. Behavioral design (0) | 2020.12.08 |
디자인스타일2. Dataflow Design (0) | 2020.12.08 |