반응형

Vivado 첫 화면은 다음과 같다.

 

여기서 가장 위의 Create Project를 선택

 

 

프로젝트 이름과 경로를 설정하고 NEXT

 

 

위의 화면에서 일단 나는 장비 없이 간단한 코드들만 실행시켜보면서 시뮬레이션 돌려볼 것이므로

그냥 NEXT를 눌러 진행한다.

Constraint는 사용할 보드의 구조를 담고있는 파일을 말하는 듯 하다.

 

 

이 부분도 현재 보드가 없으므로 그냥 NEXT

 

 

 

위와 같이 설정 Summery가 확인되는데 source파일을 추가해주지 않았고 constraints 파일을 지정해주지 않았기에

위와 같은 알림이 뜨게 된다.

 

그리고 마무리를 하면 다음과 같은 창이 뜨게된다.

 

 

위의 Design Source부분에서 Add Source를 선택하여 소스코드를 넣어주자.

 

 

 

위와 같이 Create File 클릭 수 File name과 File Type을 설정해준다.

 

이렇게 test.v 라는 파일이 생성되게 된다.

여기서 test라는 Module의 입출력 포트를 지정해주게 된다.

 

하지만 나는 여기서 설정하는 것 보다 나중에 코드로 설정하는게 더 편하므로(개인적으로)

여기서는 그냥 OK를 눌러 진행한다.

 

 

위와 같이 test라는 파일이 만들어지고 또 test라는 모듈이 만들어진 것을 확인할 수 있다.

 

위와 같이 간단한 AND게이트를 만들어보자.

 

코드로 작성한걸 회로로 보기 위해 좌측 RTL ANALYSIS 항목의 Schematic 선택 후 다음과 같이 진행

 

위와 같이 a,b를 입력으로 받고 c를 출력으로 갖는 AND게이트가 나타나게 된다.

 

그럼 시뮬레이션을 통해 더 작업을 진행해보자.

우측의 SIMULATION 항목에서 Run Simulation 진행

그리고 Run Behavioral Simulation 진행

 

위와 같이 뜨는데 a, b 에 아직 값을 안정해줬기에 Z 라는 이상한 값이 들어가있고

출력을 나타내는 c에도  X 라는 이상한 값이 들어가있다.

 

그렇기에 입력의 a, b에 값을 넣어줘보자.

 

위의 사진에서 가장 좌측 상단의 아이콘을 누르면 시간이 0ps로 이동하는 것을 확인할 수 있다.

 

그리고 상단의 시간을 표현하는 부분에 1 us 를 선택해주자.

 

위와 같이 a의 값에 Force Constant를 통해 0이라는 Force Value를 넣어주고 OK

 

똑같이 b의 값에도 0을 넣어주자.

 

위와 같이 0이라는 Value가 제대로 들어간 것을 확인할 수 있다.

 

그럼 상단 시간을 표현하는 부분에 (T)라고 쓰인 아이콘을 클릭

 

0us부터 시간을 표현하는 부분에 적어준 1us까지 지정해준 값을 통한 출력값 c가 표현된다.

 

이렇게 진행해보면 입력값에 따른 결과값이 표현되는 것을 확인할 수 있다.

 

여기까지 완전 기초로 초등학생도 따라할 수 있는 과정이였다.

중간중간 설정이 의미하는게 어떤건지,

좀 더 디테일한 과정을 진행하기 위해선 어떻게 해야하는지

앞으로 차근차근 정리해보겠다.

반응형
반응형

MUX는 다양한 입력신호를 갖고 select 신호에 따라 어떠한 입력을 출력할 것인지 선택하게 된다.

 

https://netpilgrim.net/460

즉 위와 같이 나타낼 수 있으며 S0와 S1의 신호에 따라 어떠한 입력신호를 출력할 것인지 결정하게 된다.

 

이를 Verilog 코드로 표현하면 아래와 같다.

 

mux1 이라는 모듈을 만들었는데 입력은 d0, d1의 신호와 어떠한 입력을 출력할 것인지 선택하는 sel 신호가 있다.

 

출력신호 y1부터 보자.

 

sel값이 0이면 d1값은 무시되고 ~(sel)을 통해 d0의 값이 출력되게 된다.

반대로 sel값이 1이면 ~(sel)값은 0이 되어 d0가 무시되고 d1의 신호가 출력신호가 된다.

 

y2는 물음표 기호가 들어가게 된다.

이는 조건에 따른 동작을 선택할 때 사용되고

형식은 다음과 같다.

 

(판단문) ? [참일 때의 선택] : [거짓일 때의 선택];

 

즉 위의 예로 보면 sel은 0인가?   참이면 y2는 d0신호, 거짓이면 y2는 d1신호

라는 뜻을 담고 있다.

 

그럼 다음 예제를 보자.

 

d0부터 d3까지 4개의 입력신호를 갖고 있으므로 4개를 선택할 수 있도록 2bit 크기의 sel 신호가 선언되었다.

하지만 아래 assign의 판단문을 보면 거짓일때의 선택항복이 비어있는 것을 볼 수 있다.

 

이는 거짓일 경우에 대해서 새로운 조건에 대한 판단을 할 수 있도록 가능성을 열어둔 것이다.

즉 sel이 0인가? 맞다면 d0출력

sel이 0이 아닌가?  그럼 sel이 1인가? 맞다면 d1 출력

이렇게 뒤의 내용들이 이어진 것으로 볼 수 있다.

반응형

+ Recent posts