컴퓨터와 FPGA의 차이점
컴퓨터는 일을 sequencial 개념으로 진행한다.
FPGA는 일을 동시에 처리할 수 있다. --> 속도가 훨씬 빠름
시스템 반도체를 만드는이유
1) 대량생산
2) 특정한 업무에 대한 계산, 및 저전력 설계
3) fpga는 실시간처리에 유용함(영상처리 및 자율주행 등등)
FPGA에서는 타이밍을 맞추는것이 중요하게 여겨진다
타이밍을 왜 맞춰야 하는가--> 전자가 이동하는 시간(0과1이 바뀌는 시간)이 발생하기 때문에 이를 고려하여 타이밍을 맞춰야한다.
반도체 설계하는 사람의 주요 파라미터
1. 반도체의 동작 속도가 빠른가
2. 똑같은 동작속도라면 어떠한 반도체가 저전력으로 동작하느냐
3. 크기가 어떠한가 (작을수록 좋음) --> 보통 면적을 키우면 속도가 줄어듬
Modelsim 설치하기 --> HDL Simulation Tool
https://lifelectronics.tistory.com/162
ModelSim -> 타이밍 검증 가능(단, STA 검증은 불가능) STA 검증이란 전자의 이동을 고려한 정밀한 검증방식을 말함
working 디렉토리 하위폴더에 위 3가지 폴더를 만들어줘야함
rtl 폴더 : Verilog 코드파일 저장
sim 폴더 : model sim파일 저장
tb 폴더 : test bench 파일 저장 --> 코드를 테스트 해볼수 있는 코드를 말함
reg 와 wire의 차이점
wire는 한 모듈의 출력이 다른모듈의 입력으로 들어갈때의 bus역할을 함
reg는 한모듈의 출력을 저장하고자 할때 사용
https://wpaud16.tistory.com/entry/Verilog-HDL-DUT-Test-Bench-8bit-adder-8%EB%B9%84%ED%8A%B8-%EB%8D%A7%EC%85%88%EA%B8%B0-vivado
Verilog Data Type
Verilog에서는 데이터 타입이 굉장히 중요함 Signed인지 unsinged인지에 따라서 연산이 크게 달라짐
--> 2의 보수체계 굉장히 중요 (음수가 없음, 2의 보수체계를 사용해서 음수를 표현해줘야함 Sin extension)
ex) unsigned char --> 8bit 0~255
signed char --> -128 ~ 127
wire
reg -->이전의 결과가 영향을 미칠때 사용
signed 를 넣으면 비트의 MSB가 부호가 됨
unsigned면 MSB와 관계없이 비트의 크기로 생각함
실수 0.01을 컴퓨터 상으로 표현하면 2의 -1승 ...-> 으로 갈수록 표현이 정밀하게 불가능
<논리 시프트와 산술 시프트의 차이>
논리 시프트는 왼쪽으로 시프트 했을때 MSB를 0으로 만들지만
산술 시프트는 왼쪽으로 했을때 MSB를 1로 만든다
왼쪽시프트 한칸당 곱하기 2
오른쪽 시프트 한칸당 나누기 2
s를 붙이면 signed를 의미하는데 최상위 비트는 부호비트로 빠지게 된다. 그걸고려해서 비트수를 줘야함 중요
=== --> 이 등가연산자는 x와z가 포함되서 일치를 판단한다
내가 원하는 비트만 1로 만들기 set
a | (0x01 << b)
내가 원하는 비트만 0으로 만들기 reset
a & ~(0x01 << b)
내가 원하는 비트 토글링 하기
a ^ (0x01 << b)
a = 1010 _ 0101
b = 1111 _ 1001
a ^ b = 0101_1100
1010_0101
blocking 할당문 --> 코드가 순차적으로 실행되게 만듬
non-blocking 할당문 --> 코드가 동시에 실행되게 만듬
동기식 vs 비동기식
x가 들어가므로 casex로 case문 작성
ModelSim 명령창 문법
quit -sim 시뮬레이션 종료
restart -sim 시간 다시 초기화
restart -f 코드를 변경하고 다시시작하고 싶을때
wave 파일저장
save Format -> wave.do 파일 저장 -> 다시켜서 simulate -> wave.do 파일의 내용을 커멘드창에 모두 입력
tb File에 대해서
값에 대한 검증 및 확인 할수있는 파일
reg --> register 역할 8bit를 저장함
wire --> bus 역할 9개의 bit가 왔다 갔다 할수있게함
Named mapping VS Position mapping