FGPA_Verilog_VHDL

DE2-70 보드에서 LED Shift Blink 프로그램

LonleyEngineer 2008. 8. 28. 13:51
반응형

잠깐 일이 있어서 테스트 프로그램을 작성하던 중 간단하게
만든 프로그램이다 무한루프로 계속 LED가 점등돼게 해놨다.


==========================================================================

#include <stdio.h>
#include <system.h>
#include "system.h"
#include "sys/alt_sys_init.h" 
#include "sys/alt_irq.h"
#include "sys/alt_flash.h"
#include "sys/alt_flash_dev.h"
#include "sys/alt_timestamp.h"
#include "sys/alt_dev.h"
#include "alt_types.h"
#include "sys/alt_stdio.h"
#include "sys/ioctl.h"
#include "altera_avalon_lcd_16207.h"
#include "altera_avalon_uart.h"
#include "altera_avalon_cfi_flash.h"
#include <stddef.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>


int main()

 
 /* DE2-70은 RED LED가 0~17까지 18개이다. 그래서 4bytes 의 Register를 쓴다.
  * 그중 3바이트 째의 다른 값은 안쓰고 초기 2bit만 사용한다. */
   
  while(1){   
      IOWR(PIO_RED_LED_BASE, 0 ,0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0001);
      usleep(300000); 
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0002);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0004);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0008);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0010);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0020);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0040);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0080);
      usleep(300000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0100);
      usleep(300000);
     
      IOWR(PIO_GREEN_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0001);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0002);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0004);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0008);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0010);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0020);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0040);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0080);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0100);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0200);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0400);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0800);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x1000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x2000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x4000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x8000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x10000);
      usleep(300000);
      IOWR(PIO_RED_LED_BASE, 0, 0x0000);
      IOWR(PIO_RED_LED_BASE, 0, 0x20000);
      usleep(300000);   
  };
 
  printf("Hello from Nios II!\n");

  return 0;
}

반응형