MCode는 Xilinx Blockset의 Index 라이브러리에 있다.
오른쪽 클릭해서 Help 함 읽어보자.
=======================================================
MCode
Xilinx Blockset의 Control Logic, Math, 그리고 Index 라이브러리에서 찾을 수 있다.
MCode 블럭은 시뮬링크내에서 매트랩 함수를 실행하기 위해 사용한다.
블럭에 표시된 파라미터는 M-펑션 네임이다. 실제로 MCode 블럭을 더블클릭하면
MATLAB fuction에 xImax가 기본으로 연결이 되어있다. Edit M-File...로 편집하거나 Browse...로 아예 다른 파일로 변경도 가능한 모양이다.
이 블럭은 시뮬링크로 시뮬레이션시 출력을 계산하는 M-code를 실행한다.
하드웨어 제너레이트시 동일한 기능을 하는 VHDL이나 Verilog로 변환된다.
...
그외 매우 내용이 길지만 지금은 읽어봐도 무슨 내용인지 잘 모르니까 여기까지...
=======================================================
검색해보니까 주로 FSM을 만들기 위해 쓰는 블럭인거같다.
일단 블럭 불러 올려서 시스템을 만들어보자.
이렇게...
M-code는 아래와 같이 만들자.
function matched = state_machine(din) persistent state, state = xl_state(0,{xlUnsigned, 3, 0}); switch state case 0 if din == 1 state = 1; else state = 0; end matched = 0; case 1 if din == 0 state = 2; else state = 0; end matched = 0; case 2 if din == 1 state = 3; else state = 0; end matched = 0; case 3 if din == 1 state = 4; else state = 2; end matched = 0; case 4 if din == 0; state = 0; else state = 1; end matched = 1; otherwise state = 0; matched = 0; end
state variable을 선언하는 부분
persistent state, state = xl_state(0,{xlUnsigned, 3, 0}); 은 persistent로 선언되어야 하고 첫번째 인자는 초기값, 두번째 인자는 정밀도라고 한다.
근데 두번째 인자는 정확히 멀 말하는건지 모르것네...state가 0에서 4까지니까 3비트라는거 말고는...
Repeating Sequencer Stair는 아래와 같이
값을 넣어주면 된다.
시뮬레이션 Stop time을 20으로 입력하고 시뮬레이션 돌려보자.
오케이 잘 나온다.
댓글 없음:
댓글 쓰기