1. 간단한예제를통한 WebPACK 사용법 Project Navigator를실행시킨후 File 메뉴에 New Project를선택한다. 그럼다음과같이 Project 생성화면이나타난다. Project 생성화면은다음과같다. 1) Project Name Project 명을직접입력할수있다. 예 ) test1 2) Project Location 해당 Project 관련파일이저장될장소를지정한다. 이때경로명에한글또는빈칸이없어야한다.
예 ) C:/Xilinx/MyPrj/test1 3) Top-Level Module Type 해당소자내에내부 Logic들을어떠한방식으로설계할것인지지정한다. 예 ) HDL 새로생성한 Project의이름과경로를입력하고 Top-Level Module Type 을 HDL로한후 [ 다음 ] 을눌러 Device와 Design Flow를그림과같이선택한다. 자세한내용은다음과같다. 1) Device Family 사용하고자하는 CPLD, FPGA Family 를선택한다. 예 ) Spartan3 2) Device 사용하고자하는소자를선택한다. 예 ) xc3s200 ( Spartan3 20 만게이트 ) 3) Package 해당소자가어떠한패키지로되어있는지를지정한다.
예 ) pq208 4) Speed Grade 신호의소자내에서 Pin to Pin Delay를지정한다. 예 ) -4 [ 다음 ] 을누른후 [New Source] 를눌러 VHDL 소스를생성한다. 왼쪽항목에서 VHDL Module을선택하고, File 항목에원하는이름 ( 예 : test) 을입력한다. 완료한후다음으로넘어가면다음과같은화면이나타난다.
원하는이름을 Entity Name, Architecture Name에입력한후다음으로넘어간다.( 예 : a(in), b(in), y(out)) New Project로돌아오면다음으로넘어가 [Add Source] 에서더추가할소스가있으면추가하고그렇지않으면다음으로넘어간다. 여기서는더이상추가할소스가없으므로그냥다음으로넘어간다. 마지막으로내용을확인한후기본적인코딩이되어있는해당 VHDL 파일이생성된다.
기본적인 2 port AND gate 를예를들어설계해보자. 위의그림과같은기능을하는 Logic 은다음과같이편집할수있다.
2. Synthesize & Implementation 위의과정에서편집한 VHDL 소스를 Synthesize와 Implementation할수있다. 원하는 VHDL 소스파일을선택 ( 이때 "Sources for:" 항목이 "Synthesis/Implementation" 으로설정되어있어야한다. Processes 항목에서 Synthesize 를더블클릭한다. 에러없이완료되면항목에녹색으로체크된다.
다음으로 Implementation도위와같은방법으로실행할수있다 ( 더블클릭 ). 그결과에러없이완료되면다음과같이표시된다.
3. Simulation Synthesize와 Implementation을통해얻어진결과물을해당하는 CPLD, FPGA에다운로드하기전에제대로설계하여구현이되었는지를확인해야한다. 이러한 Simulation 과정에는 Function Simulation과 Timing Simulation이있다. 여기서는 Simulator로 ModelSim을사용한다. 가. Simulator 연결 다음은 WebPACK에 ModelSim을연결하는방법이다. 먼저 Project Navigator의 Edit - Preference를실행시킨다. 여기서 ISE General 항목밑의 Integrated Tools 항목을선택한다. 기본적으로위의그림과같이 Model Tech Simulator에우리가설치한 ModelSim이자동으로설정이되어있어야정상이다. 혹시위와같지않다면수동으로설정해야한다. 나. Simulator 실행아래와같이 Sources에서 Sources for: 항목이기본적으로 Synthesis/Implementation으로되어있다. ModelSim으로시뮬레이션을하기위해선이부분을 Behavioral Simulation으로변경해야된다.
위와같이 Behavioral Simulation 으로변경하면 Processes 창도다음과같이변경된다. 위와같이변하지않는다면 Sources 에서 test-behavioral(test.vhd) 를클릭하면변경된다.
위그림에서 Simulate Behavioral Model을더블클릭하면 ModelSim이실행되며다음과같은화면이나오게된다. Main 화면에서라이브러리목록을볼수있는데, 아래화면처럼우리가 Simulation하려고하는 test라는목록이나타날것이다.
WebPack에서 ModelSim을이용하여시뮬레이션을시작하면 port a와 b에값이할당되지않은상태로시뮬레이션을하기때문에아래의 wave 화면에서 U라는 Unknown으로결과가나온다. 따라서시뮬레이션을재시작한후 port a, b에값을할당해야시뮬레이션이정상적으로된다. 아래 와같은 wave 화면에서를누른다. 왼쪽빨간상자안의 Restart
위화면에서 [Restart] 를클릭하여시뮬레이션을재시작한다. Simulation 결과를 Wave 형태로나타내려면각 Port마다값을지정해주어야한다. Objects 화면에서신호 a를선택한후메뉴바의 Edit에서 Force를선택하여아래와같은 Force Selected Signal 화면을나타내게한다. 여기서 Value를 U에서 0으로변경한다. 또한같은방식으로신호 b를 0으로변경한다.
그후 wave 화면에서누른다. 왼쪽빨간상자안의 Run 을 위의 Wave 화면은 a = 0, b = 0 인경우의 AND 결과를보여준다. 다음은 a = 0, b = 1 인경우나타나는결과이다 (Objects창에서 b에 Force를하여 Value에 1값을준다. 그리고 wave화면에서 Run을눌러준다.). 입력값을변화시키면최종적으로다음과같은결과를얻을수있다.
다. Test Bench를이용한 Simulation 또다른 Simulation 방법으로 Test Bench를사용하는것이있다. 이방식은정교한제어나연속적인입력에대한출력을보고자하는경우사용되며범용적으로사용할수있는방법이다. 앞서작성했던 test.vhd에대한 Test Bench를작성하는방법은다음과같다. 메인화면에서이전에작성된파일을선택한다. 이창에서마우스오른쪽버튼을클릭하여 New Source 메뉴를선택하면다음과같은화면이나타난다. VHDL Test Bench를선택하고 testtb로파일명을작성한다.
이러한 Test Bench 파일을적용할 VHDL 파일을다음과같은화면에서선택할수있다. 이과정을완료하면다음과같은 testtb 라는 Test Bench 파일을얻을수있다.
마지막으로생성된파일의 BEGIN과 END사이에실제어떻게동작할지지정해야한다. 다음과같이작성해준다. 사용자의도대로작성된 Test Bench 파일을이용해서 Simulation은다음과같은순서로할수있다. Sources 창에서테스트벤치파일을선택한후 Processes 화면에서 Simulate Behavioral Model을실행시킨다.
이에대한결과는다음과같으면우리가의도한대로 Simulation 되었음을알수있다.
라. Waveform을이용한 Simulation Simulation의마지막방법으로입력을 Waveform을이용하여 Simulation 할수있다. 가장간단한방법이긴하지만 ISE에서만사용할수있다. New Source를선택하여 Test Bench Waveform을선택한다. 이과정을완료하면다음과같은 Initial Timing이나온다. 여기서 Clock이포함된소스는 Clock의주기를설정해주지만우리가테스트하는소스는 Clock이없으므로 Finish를눌러다음화면으로넘어간다.
아래보이는화면에서처럼마우스를이용하여파란부분을클릭하면파형이반전되어표시되면서우리가원하는파형을만들수있다. 파형의입력이끝나면 Simulation의끝나는지점을설정해주어야한다. Simulation을끝내고자하는지점까지위의그림에보이는파란세로선을마우스로끌어서이동시킨다. 입력이모두끝나면파형을저장한후 Waveform 창을닫는다. Sources 창에서 testtw를선택한후 Processes창에서 Simulate Behavioral Model을실행한다.
위화면이 Test Bench Waveform 을이용한시뮬레이션결과이다. 이번엔 Timing Simulation을해보자. Sources 창에서 Sources for: 를 Post-Route Simulation으로변경한다.
4. Pin Assign 디바이스에다운로드하여동작시키기위해서는입력과출력에대한핀지정이필요하다. 이를위해서는 Project 메뉴에서 New Source를선택하여 Implementation Constraints File을먼저생성하여야한다. 다음화면에서다음을클릭하고마침을누르면 test.ucf 파일이생성된다. test.ucf 파일을선택한후 Processes 항목에서 Assign Package Pins를더블클릭한다.
새로운창이뜨면왼쪽의 Design Object List - I/O Pins 항목중 Location란에해당하는핀번호를입력한다. 이때주의할것은반드시핀번호앞에알파벳 p' 를붙여야한다는것이다. 대소문자는구분하지않는다. 핀번호를저장하고창을닫으면핀번호지정이완료된다.
5. Training Kit 다운로드 마지막으로 Training Kit에다운로드하는방법을알아보자. 먼저 Process 창에서 Generate Programming File에마우스를놓고오른쪽버튼을눌러 Properties를누른후 Startup Options 탭에서 FPGA Start-Up Clock을 JTAG Clock으로설정되어있는지를확인한다. 설정을변경한후 Generate Programming File 을더블클릭한다. 이상없이진행이되었다면위와같이녹색으로체크표시가될것이다. 이상없이파일이 (*.bit) 생성되었으면 Configure Device(iMPACT) 를더블클릭하여 impact 를실행시킨다.
Operation Mode Selection 화면에서 Configure Devices 를선택한후다음을누른다. Configure Devices 화면이나오면 Boundary-Scan Mode 를선택하고다음을누른다.
디바이스가감지되었다는메시지가나오면확인을누르고생성한 test1.bit파일이있는경로로이동하여파일을선택한다. 파일이추가되면칩모양이있는그림위에마우스를놓고오른쪽버튼을눌러서 Program을실행한다.
OK 를누른후다운로드가완료되면 Kit 에서원하는동작이실행되는지확인한다.