오늘 SOC설계 시간에 배운 FSM입니다. 교수님이 그려주신 그림에 따라 설계하고 코드를 작성했습니다.
VerilogHDL 실력이 날이 갈 수록 늘어나고 있습니다. ㅋㅋ
기분이 좋군요. ㅋㅋ


위 그림이 기본 그림입니다. 괄호 안의 숫자들은 제가 사용하는 Spartan3의 포트 번호인데요. 이 코드를 갖고 ISE에서 Synthsesize 하면 됩니다. ㅋㅋ


위 그림이 기본 알고리즘인데요. 굉장히 간단하게 생겼습니다.
Accelerate와 Brake를 보고 상태에 따라 속도를 올리거나 줄이게 됩니다.




이 코드에서 가장 중요한 것은 OneShot Signal 인데요. 만약 사용자가 버튼을 클릭하게 되면 그 시간은 몇초 정도 되겠죠. ns로 따지면 엄청난 시간입니다. 그것을 단 한클럭만 하게 바꾸는 것이 OneShot Signal 이구요.


위 그림이 OneShot Signal을 나타내는데요. Acc를 버튼으로 가정하면 됩니다. 지금 클럭에 비해 굉장히 길게 입력이 되고 있죠?? 하지만 AccOneShot은 딱 한 클럭 만큼만 나타나고 있는데요. 그걸 가능하게 하는 것이 Acc_1과 Acc_2입니다. 이것들이 버퍼로 작동하는데 Propagal Delay(스펠링맞나??;;;)에 따라 한클럭 뒤에 값이 나오게 되죠. 이 값들을 저장해서 나중에 AND 연산을 취하게 됩니다.(아래 소스가 있습니다.) 그러면 위와 같이 AccOneShot Signal이 딱 튀어 나오게 되죠. ㅋㅋ 어렵습니다;;




위 소스가 OneShot Signal을 만드는 소스입니다. 자 공부 합시다. 공부 공부ㅋㅋㅋ


Bloger: moltak.net

아래 챕터 처럼 다 했다면 다 성공했다.

이젠 Flash에 쓸 차례다. 혹시 전원을 뽑아 봤나? 뽑으면 알겠지만.. 걍 죽는다.ㅋ

프로그램 다 사라짐ㅋ 처음에 엄청 어이없었다. ㅋㅋ

하지만 Flash 메모리에 쓰지 않았으니 사라지는게 당연하겠지 라고 생각하고 있다.

암튼 시작~

 

Flash에 쓰려면 PROM File로 포멧을 변경해야 한다. 위 그림처럼 PROM File Formatter를 더블 클릭하자.

위 그림처럼 메뉴가 뜨는데 나도 잘 모르지만 위 처럼하면 그냥 된다.

위 그림 처럼 Next를 누르다가 파일 한번 선택해 주고 또 Next를 누른다. 중요한것은 마지막 화면인데 화면창이 Add Device라고 쓰여져 있는게 보이나?? 다른 장치가 있으면 추가한다던데 해본적이 있어야지ㅋ 그냥 NO를 선택하자.

 

이젠 단순히 그림을 보고 따라가면 된다. 블로깅은 여기서 마치겠다.ㅋㅋ

 

거의 고지에 다왔다.

이젠 우리가 만든 코드를 실제 FPGA보드에 올릴 차례다!

우리가 예상한데로 된다면 불이 반짝반짝 들어오는 Digital Clock이 완성되겠지!ㅋ

 

이젠 제일 아래를 선택하자. Configure Target Device라고 쓰여있다. 여기서 코드를 타겟 보드에 맞게 바꾸나 보다.

 

이거 뭔 말인지 잘 모르겠더라. 그냥 OK누르고 있으면 알아서 진행된다.

 

오 잘 됐다. 올 클리어다.ㅋ 쉽네??

잘 되었으면 창이 넘어가면서 칩 그림 두개가 뜬다. 오른쪽이 우리가 넣을 칩이고 왼쪽은 플래시메모리다.

우리는 일단 왼쪽에 넣어야 한다. 우클릭하고 Program을 누르자.

근데 에러가 뜨는 경우가 많다. 왜 그런지 잘 모르겠다. 아래 그림처럼 옆을 선택하고 Erase를 한 후에 다시 Program을 눌러보자.

 

에러 없이 잘 됐는가? 그럼 이제 불이 반딱 거릴 것이다.!!ㅋ

아 좋다.ㅋ

세번째 단계는 신스사이즈라고 불리는 단계이다.

컴파일과 거의 비슷한데 생성되는 코드가 타겟 보드 코드이며 실행되는 프로그램 형태가 아닌 게이트의 역할을 바꾸는 코드를 생성한다는 것이다. 사실 잘 모른다. 그냥 이렇게 이해하고 있다.

암튼 코드를 생성했으니 다음 단계는 Synthesize 단계이다. Coding->Synthesize라고 생각하면 된당.

 

Synthesize는 의외로 간단하다. Synthesize – XST를 더블 클릭하거나 그림처럼 우클릭해서 RUN을 선택하면 된다.

 

위 그림과 같이 녹색 체크바가 생성되었다면 성공!

다음 단계는 포트 연결인데 우리가 만든 코드는 외부와 데이터를 주고 받으려면 당연하겠지만 포트를 설정해줘야 한다.

Verilog Code에도 생성해 놨는데 anode와 seven_seg 변수가 그것이다. 아무튼 아래 그림과 같이 RUN을 선택한다.

 

 

그리고 아래 그림처럼 포트를 설정하는데 포트에 대한 정보는 해당 제품 매뉴얼을 봐야 한다.

 

Default 값으로 놔두고 그냥 OK선택하면 Synthesize와 Port설정은 끝이 난다.

프로젝트를 생성했으면 소스를 추가 해야지ㅋ

아래에 있는 VerilogHDL소스가 원본이기 때문에 알아서 컴파일 해보도록.

아무튼 에러없이 잘 작동하는 Verilog코드가 있다면 바로 FPGA에 구울 수 있다.

일단 소스를 추가 해줘야겠지? 작성된 소스를 Add 시킬 수도 있지만 난 New Source를 하겠다.

 

우리는 Verilog 코드를 쓸것이기 때문에 Verilog Module을 선택한다. 이름은 맘대로 하고~

 

포트 설정 페이지인데 아직 할 필요 없다 그냥 Next~

 

코드 파일이 생성되었다. 이제 이 파트의 마지막 단계다.

 

마지막 단계는 당연히 코드를 써넣는 거겠지? 아래 소스가 있으니 쉽게 할 수 있을 듯 하다.

'Programming > hdl' 카테고리의 다른 글

Digital Clock - FPGA(04 프로그램 올리기)  (0) 2010.04.10
Digital Clock – FPGA(03 Synthesize)  (0) 2010.04.10
Digital Clock – FPGA(01 프로젝트 생성)  (0) 2010.04.10
Digital_Clock TestBench  (0) 2010.04.10
D F/F Verilog  (0) 2010.04.07

오늘 짰던 Digital_Clock Verilog Code를 FPGA로 굽는 작업을 했다.

기억하기 좀 복잡해서 복습하면서 모든 사진을 다 찍었다. ㅋㅋ

일단 보자! (너무 길어서 파트별로 짤랐당ㅠㅠ)

 

나는 Xilinx ISE 10.1 버전을 사용했다.

이 것을 사용하면서 좀 어이없었던 것은 소스가 다 맞는데도 synthesize가 되지 않았다는 것이다.

(자꾸 알 수 없는 오류가 생겼다.)

그래서 프로젝트를 다시 생성했더니 잘 되더라…. 옆에 나를 가르쳐주던 형한테 물어보니…

원래 그런다더라ㅋㅋ 꼬물ㅋㅋ

암튼 위 그림처럼 먼저 프로젝트를 생성한다. 그리고 Next 클릭

 

위 그림은 프로젝트를 생성할 때 우리의 보드 정보를 입력해주는 곳이다. 나는 Sprtan3를 사용하고 XC3S200을 사용하기 때문에 위처럼 설정하고 Next를 클릭하자.

 

위 세 그림은 별로 설정할 것이 없다. 그냥 next, next 클릭하면 끝!

프로젝트 생성 완료!

'Programming > hdl' 카테고리의 다른 글

Digital Clock – FPGA(03 Synthesize)  (0) 2010.04.10
Digital Clock – FPGA(02 소스추가)  (0) 2010.04.10
Digital_Clock TestBench  (0) 2010.04.10
D F/F Verilog  (0) 2010.04.07
Computer Design - Digital Logic  (0) 2010.03.20
한 페이지에 소스 두개 안올라간다 -_-;
어쩔 수 없이... 두개의 페이지에ㅋㅋㅋ


'Programming > hdl' 카테고리의 다른 글

Digital Clock – FPGA(03 Synthesize)  (0) 2010.04.10
Digital Clock – FPGA(02 소스추가)  (0) 2010.04.10
Digital Clock – FPGA(01 프로젝트 생성)  (0) 2010.04.10
D F/F Verilog  (0) 2010.04.07
Computer Design - Digital Logic  (0) 2010.03.20
SOC 설계 시간에 처음 짜본 Verilog HDL 코드입니다. 1bit D Flip/Flop(이하 D F/F)를 짰는데요. 처음 해봐서 그런지 되게 어려웠다는.......
Design Module을 짜고 다시 Test Bench까지 만들었습니다. 아래는 그 소스들이구요 결과 사진도 첨부를 했음ㅋㅋㅋ
겨우 10줄 내외의 소스인데 되게 어려웠다는??;;;
우리 플젝은 수천줄은 될텐데 어떻게 만들지?? ㅎㄷㄷ.....

기억할 것!
1번 module에서 시작해서 endmodule로 끝난다.
2번 negedge(negative edge), posedge(positive edge)
3번 테스트 벤치에서 output은 wire이고 input은 reg이다.

Design Module: DFF.v


Test Bench: test_DFF.v


'Programming > hdl' 카테고리의 다른 글

Digital Clock – FPGA(03 Synthesize)  (0) 2010.04.10
Digital Clock – FPGA(02 소스추가)  (0) 2010.04.10
Digital Clock – FPGA(01 프로젝트 생성)  (0) 2010.04.10
Digital_Clock TestBench  (0) 2010.04.10
Computer Design - Digital Logic  (0) 2010.03.20

+ Recent posts