Xilinx ISE 12.3 LEDテストプログラム

3097 ワード

1.BSB wizardを使用してXPSに入ります.
2.新規プロジェクトの名前を付け、I would like to creat a system for a custom boardを選択
3.プレートサブパラメータ:virtex 4//xc 4 vsx 25//ff 668///-10
4.水晶振動数100 MHz、Local memory 16 KB
5.Add Device,IO Interface Type GPIO,Device LEDSをクリックします.GPIO Data Widthはボード上のledの個数で、6を選択します
6.stdINとstdOUT選択NONE
7.finishをクリックすると、2つのファイルdata/systemが必要であることを示すウィンドウが表示されます.ucfとetc/download.cmd,点OK
8.システムの下でdownloadをダブルクリックします.cmdファイル.ここで修正する必要があるのは2つの数字で、この数字はあなたのFPGAがJTAGチェーンの中で何番目かを示しています.ここでは1を2に変更する.
9.システムの下でシステムをダブルクリックする.ucfファイル、ピンのロックを開始します.SEED-FEM 025を開く.pdfは、clk、rst、LEDSのピンを見つけて修正します.
10. Hardware->Generate Netlist.この過程は比較的時間がかかる.
11. Software->Generate Libraries and BSPs
12.アプリケーションの下にあるソースの下にあるTestAppをダブルクリックMemory.c、プログラムを書きます.
13.SEED-FEM 025.pdfでは、付与値が1のときにledが点灯し、LEDの配列は以下のように見えます.
SEED
led2
led5
led4
led3
led6
led1
14.書き終わったらSoftware->Build All User Applications.
間違いがなければ、Downloadはボードに結果を表示することができます.次はソースコードです.
/*

 * Xilinx EDK 12.3 EDK_MS3.70d

 *

 * This file is a sample test application

 *

 * This application is intended to test and/or illustrate some 

 * functionality of your system.  The contents of this file may

 * vary depending on the IP in your system and may use existing

 * IP driver functions.  These drivers will be generated in your

 * XPS project when you run the "Generate Libraries" menu item

 * in XPS.

 *

 * Your XPS project directory is at:

 *    E:\Projects\FPGA\Xilinx\TEST12.3\light_led\

 */



// Located in: microblaze_0/include/xparameters.h



#include "xparameters.h"

#include "xgpio.h"

#include "xstatus.h"

#define LED_DELAY 1000000

XGpio LED_POINTER;

//====================================================



int main (void) {

   /*

    * Enable and initialize cache

    */

   #if XPAR_MICROBLAZE_0_USE_ICACHE

      Xil_ICacheInvalidate();

      Xil_ICacheEnable();

   #endif



   #if XPAR_MICROBLAZE_0_USE_DCACHE

      Xil_DCacheInvalidate();

       Xil_DCacheEnable();

   #endif



   #if XPAR_MICROBLAZE_0_USE_DCACHE

      Xil_DCacheDisable();

      Xil_DCacheInvalidate();

   #endif



   #if XPAR_MICROBLAZE_0_USE_ICACHE

      Xil_ICacheDisable();

      Xil_ICacheInvalidate();

   #endif



volatile int DELAY;

int count=0;



XGpio_Initialize(&LED_POINTER,XPAR_LEDS_DEVICE_ID);

XGpio_SetDataDirection(&LED_POINTER,1,0x0000);





while(1)

 {count++;

 if(count%2==0)

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x02);

  }

 else

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x16);

  }

  

 for(DELAY=0;DELAY<LED_DELAY;DELAY++);

 

 if(count%2==0)

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x08);

  }

 else

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x04);

  }

  

  for(DELAY=0;DELAY<LED_DELAY;DELAY++);

  

  if(count%2==0)

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x32);

  }

 else

  {

  XGpio_WriteReg(XPAR_LEDS_BASEADDR,1,0x01);

  }

  

  for(DELAY=0;DELAY<LED_DELAY;DELAY++);

 }

 

   return 0;

}