embeded/FPGA - ALTERA2018. 1. 2. 19:34

DE0-nano의 Altera Cyclone IV에 달린

EPCS64 는 8MB 인데.. 실제로 sof 파일들 보면 688KB로 나온다.

아무튼 NIOS2 예제들을 보면 용량이 조금 더 크게 나온다.

아무튼.. SOF 파일 자체에 FPGA 설정 부분과 NIOS 2 용량으로 구성이 되는것 같고

NIOS 2에서 EPCS Controller를 통해서 MICOM 내부 flash 쓰듯 쓸수 있다는 것을 봐서는

EPCS Controller 에서는 물리 주소와 논리주소로 구분하여 

NIOS 2에서 접근하도록 해주는 역활을 하는 것으로 추측된다.




0xE400이면 58368 인데.. 단위가 머냐...


[링크 : https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_embedded_ip.pdf]


SOPC Builder includes the EPCS device controller core, which is an interface core designed specifically to work with the EPCS device. 

[링크 :https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/cfg/cyc_c51014.pdf]

[링크 : http://www.alterawiki.com/wiki/EPCS_Guide]

Posted by 구차니
embeded/FPGA - ALTERA2018. 1. 2. 10:41

FPGA를 이용해서 MIPS나 RISC-V를 구현해서 SW CPU로

AVR 이나 STM32 대신 쓰도록 하는 프로젝트 인 듯?


[링크 : http://www.nxlab.fer.hr/fpgarduino/]

Posted by 구차니
embeded/FPGA - ALTERA2018. 1. 1. 18:02

NOR 플래시의 경우에는 256byte당 5ms 쉬어 주어야 하는 것 때문에 느릴 수 밖에 없다. 

라는데..일단 artix-7 에서 8분 정도 걸린다고 하고..

[링크 : https://forums.xilinx.com/t5/7-Series-FPGAs/Artix-7-configuration-flash-programming-time/td-p/817714]


이번에 구매한 altera Cyclone IV, DE0-Nano는 프로그램이 크지 않겠지만

sof 파일 자체는 700KB로 거의 동일한데

플래시 자체는 8MB 짜리이고 회사에서 쓴느건 16MB 짜리인데

굽는 시간이 너무 차이난다.


de0-nano를 구울때 길어야 2초?

회사에서 artix-7은 한 체감 10분은 걸린거 같은데..


도대체 무슨 차이일까?


일단..DE0-Nano에 것도 NOR 플래시인데...

도대체 왜이렇게 굽는 속도가 심하게 차이가 날까?

[링크 : http://www.macronix.com/...Flash%20Cross%20Reference%20Guide.pdf]

[링크 : http://www.cypress.com/file/196856/download]


Micron Serial NOR Flash Memory 3V, Multiple I/O, 4KB, 32KB, 64KB, Sector Erase MT25QL128ABA

[링크 : https://www.micron.com/.../mt25q/die-rev-a/mt25q_qlhs_l_128_aba_0.pdf]


+

2018.01.02

지금까지 sof로 쓴거라 SRAM에 후다닥... -_-

즉 플래시에 써본적이 한번도 없었네? 라는 반전 두둥!

어찌어찌 플래시에 쓰는데 그래도 빠르다?

일단 artix-7이 더 클거 같긴한데.. cyclone 4는 한 30초 이내로 700KB가 써지는 느낌이라 빠르긴 빠른 듯

'embeded > FPGA - ALTERA' 카테고리의 다른 글

altera EPCS controller  (0) 2018.01.02
de0-nano arduino...?  (0) 2018.01.02
terasic DE0-Nano Control Panel 실행오류  (0) 2017.12.31
de0-nano + W5100 Ethernet Shield(arduino)  (0) 2017.12.29
de0-nano + rpi = 채굴머신..  (0) 2017.12.29
Posted by 구차니
embeded/FPGA - ALTERA2017. 12. 31. 20:17

control panel 이라는거 한번 실행해보려니 에러가 뿜뿜

검색하다 보니.. 일단은 내가 신버전을 설치해서 문제가 생긴거 같고

jtag_client.dll은 아래 경로에 존재는 하는데 복사해서 control panel 과 동일한 경로에 복사해도 안된다.

C:\intelFPGA_lite\17.1\quartus\bin64 


해결 방법은.. 아마도(?)

64bit 신버전 quartus 설치한 것이 원인으로 보이는데

dll 을 다운로드 받아 보면 bin32에 압축을 풀라고 되어있고

이거 하나 quartus 아래에 복사해주면 아무런 문제없이 실행이 된다.


Running Control Panel under Quartus II 15.0 or later version

[링크 : http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=293

    [링크 : https://www.alteraforum.com/forum/showthread.php?t=5299]

[링크 : http://mail.terasic.com.cn/~wyzhou/bin32.zip] dll 다운로드


프로그램이 이상한건진 모르겠지만 한 0.5초 정도에서 1초 정도의 딜레이 이후에

변경사항이 적용된다.(LED도 늦게 바뀌고, 스위치도 늦게 인식하고)


올리고 나서 켜보니 신기한거 발견

FPGA의 EPCS에 쓰는게 아니라

전원을 차단했다가 켜니 이전 상태로 돌아온다.

내부 램(?)에 바로 써서 그런 듯?

Posted by 구차니
embeded/DSP C2000 Ti2017. 12. 29. 15:54

TMS320 하나 생겨서 찾아보게 됨


간단하게 요약하면.. DSP는 MMX/SSE/AVX 등이 특화된 프로세서라고 하면 되려나?


cortex-m3는 MCU라면

cortex-m4는 DSP 기능을 일부 포함

[링크 : http://www.e4ds.com/sub_view.asp?best=1&ch=3178&t=1&idx=3178]

[링크 : http://www.mcublog.co.kr/7]



[링크 : http://innosian.tistory.com/163]

[링크 : http://innosian.tistory.com/165]


Microcontrollers and DSP are oriented for different target apps.


1) DSP often don't have a flash programm memory, they need the software to be 'loaded' into them. Microcontrollers do have a non power off eraseble program memory inside, with and some have eeprom store capabilites.


2) DSP are much faster for integer maths operations. many microcontrollers even dont have them in hardware this has to be achieved in software (multiplication and division)


3) DSP are hundreds of times faster for floating point operations. In microcontrollers this has to be done in software.


4) DSP are oriented to be an input/output device with 'fast calculating machine'. Microcontrollers are a multifeature device with several ways of interfacing the world but they are not the fastest in none of them.


5) DSP are not designed to be a 'robust' device. By 'not robust' I mean that they require a more well designed board to let the work correctly. Microcontrollers can work on a Test Board! 

[링크 : http://www.microchip.com/forums/m115630.aspx]

[링크 : https://electronics.stackexchange.com/...-difference-between-a-dsp-and-a-standard-microcontroller]

'embeded > DSP C2000 Ti' 카테고리의 다른 글

CCSv6 설치 시도... 실패 ㅠㅠ  (0) 2018.02.09
Code Composer Studio - CCS  (0) 2018.02.09
xds510usb xds510pp  (0) 2018.02.09
TMS320F2808 JTAG 검색..  (0) 2017.12.28
TI TMS320DM368용 JTAG  (0) 2013.07.03
Posted by 구차니
embeded/FPGA - ALTERA2017. 12. 29. 13:04

de0-nano 지르면서 덤으로 준 항목에

W5100 칩셋 사용하는 아두이노 이더넷 실드가 있는데

이거랑 FPGA에 nios2를 연동하는 예제를 발견!


[링크 : http://www.fpgalover.com/ip-cores/wiznet-5100-core]


아두이노 에서 이더넷 실드 사용법

일단.. W5100이 SPI 통신인가 보네.. 순수하게 FPGA로 SPI IP 이용해서 통신이 가능하려나?

[링크 : http://www.instructables.com/id/Arduino-Ethernet-Shield-Tutorial/]

[링크 : https://blog.naver.com/rnc_ohm/220021888182]

[링크 : https://kocoafab.cc/tutorial/view/291]

Posted by 구차니
embeded/FPGA - ALTERA2017. 12. 29. 12:46

FPGA로 채굴하는 이야기는 들었는데

막상 장비가 다 갖춰지니 시험삼아 어떻게 돌아가는지 정도 호기심에

해볼까? 라는 생각이 드네


비트코인 채굴하는건 UART로 통신 하는걸로 보이고..

In the mining rig described here an FPGA does all the hard work (SHA-256 hashing) and communicates over a serial link with a Raspberry Pi

[링크 : https://www.rs-online.com/designspark/bitcoin-mining-with-a-raspberry-pi-and-de0-nano]

[링크 : https://github.com/progranism/Open-Source-FPGA-Bitcoin-Miner]


시리얼

Plug GPIO03 on the DE0-Nano into GPIO 15 on the Raspberry Pi.

Plug GPIO05 on the DE0-Nano into GPIO 14 on the Raspberry Pi.

-> 요건 보니.. RS-232/UART로 연결하는거 같고


패러럴

Plug GPIO 133 on the DE0-Nano into GPIO 8 on the Raspberry Pi

Plug GPIO 131 on the DE0-Nano into GPIO 10 on the Raspberry Pi

Plug GPIO 129 on the DE0-Nano into GPIO 24 on the Raspberry Pi

Plug GPIO 127 on the DE0-Nano into GPIO 4 on the Raspberry Pi

Plug GPIO 125 on the DE0-Nano into GPIO 17 on the Raspberry Pi

Plug GPIO 132 on the DE0-Nano into GPIO 22 on the Raspberry Pi

Plug GPIO 130 on the DE0-Nano into GPIO 9 on the Raspberry Pi

Plug GPIO 128 on the DE0-Nano into GPIO 25 on the Raspberry Pi

Plug GPIO 126 on the DE0-Nano into GPIO 18 on the Raspberry Pi

Plug GPIO 124 on the DE0-Nano into GPIO 23 on the Raspberry Pi

-> 요건.. 8비트 병렬 전송+2비트 제어로 순수 GPIO 제어인듯..

[링크 : http://catherineh.github.io/programming/2016/11/15/raspberry-pi-to-fpga-communication-example]


+

전반적으로 라즈베리와 통신하는게 딱히 이렇다할 고속 인터페이스가 없다 보니 어쩔수 없는 건가...

Posted by 구차니
embeded/FPGA - ALTERA2017. 12. 29. 08:41

설치해 놓은 quartus 처음 실행하니 이런거 뜨네?

일단은 걍 실행


DE0_NANO_default

KEY0를 누르면 타이밍에 따라 오작동 하는 것으로 보이는 경우가 있어서  살짝 수정

(오른쪽 LED가 밝아진 후에 KEY0를 누르면 LED0 만 꺼지고 나머지는 유지됨)


그나저나 빌드는 한참 걸리는건 매한가지구만 ㅠㅠ


메뉴 뒤지다 보니 보이는 Pin Planner.

이것도 나중에는 하나하나 해봐야 하는거구만 ㅠㅠ


작성한 프로그램을 업로드 하는 Programmer

Hardware Setup에서 설치된 JTAG 골라주고 Start 누르면 끝!


DE0_NANO_GSensor

얘는 IP 사용중인게 있는지 업데이트 하라고 한다.

Upgrade in Editor가 활성화 되길래 눌렀는데


이거 머야.. 무서워 -_ㅠ cancel 누르고 후퇴!


Perform Automatic upgrade가 최고야 ㅠㅠ


먼가 소스가 보이네.. 일단 빌드하고


막 누르다 보니 vivado에서 보던 신기한거 발견

확대하면 먼가 다른 신기한게 막 나오는데,

자일링스 것 처럼 먼가 자세하게 칩 내부 까지 보이는건 아닌거 같기도 하고..


SPI COUNT~3 에 대한 부분이 여기 있다~ 라는거 정도인가?

schematic이 같이 나와서 먼가 있어 보긴 하네


my_first_fpga

아까 캡쳐 못했던 IP upgrade recommended 메시지 찰칵!


auto upgrade가 하나만 뜨네.. 결국에는 Upgrade in Editor를 해야 하는건가 ㅠㅠ



아 몰라.. 그냥 무조건 Next ㅋㅋ





오.. VHDL이나 Verilog가 아니라 그냥 schematic이 나오네?


빌드해서 돌려보니 KEY0 누르면 빠르게 카운터가 증가함

'embeded > FPGA - ALTERA' 카테고리의 다른 글

de0-nano + W5100 Ethernet Shield(arduino)  (0) 2017.12.29
de0-nano + rpi = 채굴머신..  (0) 2017.12.29
DE0-nano 기본 프로그램 분석  (0) 2017.12.28
terasic DE0-Nano 부품들  (0) 2017.12.27
quartus2 설치 + usb blaster 설치  (0) 2017.12.27
Posted by 구차니
embeded/arduino(genuino)2017. 12. 28. 23:03

심심해서 짜본

바운서 개조용(?) 아두이노 나노 코드

서보는 D9 핀에 연결하도록 했고

시간은 ms 단위로 최소각도와 최대각도 사이를

편도시간으로 설정하여 반복하도록 작성했음


#include <Servo.h>
Servo servo;
int servoPin = 9;

long swing_period = 3000;
long servo_period = 10;
long swing_count  = 0;
long dir = 0;
long angle = 0;
long min_angle = 45;
long max_angle = 135;
long move_angle = max_angle - min_angle;

void setup() {
  // put your setup code here, to run once:
  servo.attach(servoPin);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (swing_count < swing_period) swing_count += servo_period;
  else
  {
    swing_count = 0;
    if (dir == 0) dir = 1;
    else dir = 0;
  }

  if (dir == 0) // inc
    angle = min_angle + move_angle * swing_count / swing_period;
  else // dec
    angle = max_angle - move_angle * swing_count / swing_period;

  servo.write(angle);
  delay(servo_period);
}



정작 달아 보니

아내 왈 : 왜케 조금 움직여? 걍 떼

... 아놔.. ㅠㅠ



+

2017.12.29

개발자 아빠들이란 ㅋㅋㅋ

일단 우리집에 있는건 저렇게 전체가 흔들리는 버전이 아니라 저걸 적용하기는 무리 ㅋㅋ


[링크 : https://www.youtube.com/watch?v=lr7Dg2AO97c]

[링크 : https://www.youtube.com/watch?v=EmSneb8MVgg]

'embeded > arduino(genuino)' 카테고리의 다른 글

아두이노 미세먼지 센서  (2) 2018.03.30
USB to TTL 정보  (0) 2018.01.10
간만에 지름신  (0) 2017.10.26
릴레이로 AC전원 스위치하기  (0) 2017.10.26
hoverlabs 사의 hover 제품  (0) 2017.07.17
Posted by 구차니
embeded/Cortex-M4 Ti2017. 12. 28. 15:01

항상 만만한(?) qs-rgb 예제에서

Linker를 보다 보니... scatter 아래 Misc Control의

--entry Reset_Handler

가 보인다...?



startup_rvmdk.S에

해당 함수가 그럼 entry 포인트로 잡히고

얘는 적절한 초기화 이후 __main 을 호출하게 된다.

;******************************************************************************

;

; This is the code that gets called when the processor first starts execution

; following a reset event.

;

;******************************************************************************

        EXPORT  Reset_Handler

Reset_Handler

        ;

        ; Enable the floating-point unit.  This must be done here to handle the

        ; case where main() uses floating-point and the function prologue saves

        ; floating-point registers (which will fault if floating-point is not

        ; enabled).  Any configuration of the floating-point unit using

        ; DriverLib APIs must be done here prior to the floating-point unit

        ; being enabled.

        ;

        ; Note that this does not use DriverLib since it might not be included

        ; in this project.

        ;

        MOVW    R0, #0xED88

        MOVT    R0, #0xE000

        LDR     R1, [R0]

        ORR     R1, #0x00F00000

        STR     R1, [R0]


        ;

        ; Call the C library enty point that handles startup.  This will copy

        ; the .data section initializers from flash to SRAM and zero fill the

        ; .bss section.

        ;

        IMPORT  __main

        B       __main 


그럼.. main()이 __main 으로 맹글링 되는건가?

[링크 : https://en.wikipedia.org/wiki/Name_mangling]

[링크 : http://spikez.tistory.com/19]

[링크 : http://infocenter.arm.com/help/topic/com.arm.doc.dui0205d/RVCT_Compiler_and_Libraries_D.pdf]

Posted by 구차니