IDEC에서 Verilog로 마이크로프로세서 설계해보기 강좌를 수강을 했는데
수업 들을 때는 그냥 그런갑다 하면서 들었는데
끝나고 복습하려니까 왜 이해가 하나도 안가는지 ,,, 미치겠습니다 ,,,
위 구조로 이루어진 마이크로프로세서를 설계하는 코드입니다.
* MAR : BRAM의 주소
* MDR : BRAM의 데이터값
하이라키는 다음과 같습니다.
명령어 포맷(IR)은 다음과 같습니다.
명령어 리스트는 다음과 같습니다.
FSM은
fetch , decode , execute 이고요
1. fetch :
MAR <= PC // PC = 0부터 시작
read memory ( MDR = MEM[MAR]) // 0번째 메모리의 데이터를 읽는다.
IR <= MDR // 데이터를 IR에 넣는다.
PC <= PC + 1 // PC 1증가
2. decode :
MAR <= IR [7:0] // IR의 하위 8비트를 MAR에 넣는다.
read memory
case (IR(15:8)) // IR의 상위 비트에 따라 동작 결정
ADD : begin ~ end
SUB : begin ~ end
endcase
3. execute // 위에서 결정된 동작 실행
goto fetch
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
현재 이해가 안가는 점
설계된 칩의 용도를 모르겠습니다,,
수업 들을 땐 덧셈이니 뺄셈이니 그냥 계산기라고 생각하고 들었는데, 계산기라고 하기엔
input에 clk와 reset밖에 없습니다 ,,
코드를 처음부터 해석해보면, 메모리에 초기값을 저장해놓고, 단순히 반복작업하는 것으로 보입니다 ,,
메모리 초기값은 다음과 같습니다.
MEMORY_INITIALIZATION_RADIX=16;
MEMORY_INITIALIZATION_VECTOR=
0881, 0603, 0a04, 090b, 0880, 0081,
0780, 0881, 0501, 0781, 0900, 090b,
0000;
일단 이 칩이 뭘 위해 설계된건지를 이해해야 할 것 같습니다.
조언 부탁드립니다.
동해물과백두산이
이미 다 알고 있는거 같은데?
계산기는 맞는데, input은 이미 칩 내부에서 초기화된 값들 가지고 사용하는거 같고
대신 클럭이랑 reset은 외부에서 받고
이 칩이 뭘 위해 설계된건지 그게 궁금한거야?
Buck
넵 맞습니다
그냥 교수님이 테스트밴치용으로 설계한 칩이라고 이해하면 맞을까요 ??
동해물과백두산이
그렇게 보는게 뭐 속 편하지 싶은데.... 나도 칩 설계하는 사람이 아니라서 정확하진 않겠지만 난 아래처럼 생각했음
컴퓨터 키려면 우리가 전원 버튼을 누르는데, 부팅되는 동안에는 우리가 입력을 넣어주진 않잖아.
동해물과백두산이
생각해보면 대부분의 칩들은 저런 설계인듯..?ㅋㅋㅋ 스마트폰도 그렇고, 각종 mcu도 그렇고...
퍼리임
조그마한 CPU 설계도지 머
전체 hierachy에 있는 reset하고 clk은 말 그대로 상태 리셋 신호하고, 클럭이고