Szerző Téma: DSP-rádió  (Megtekintve 18546 alkalommal)

Nem elérhető ha5ft

  • Full Member
  • ***
  • Hozzászólások: 125
  • Karma: +107/-1
    • Profil megtekintése
Re:DSP-rádió
« Válasz #30 Dátum: 2012 December 09, 16:42 »
Akit esetleg érdekel: ARM cortext a8 csip nem bga tokban:
https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/
Szerintem ez az egyetlen ilyen.
A linken a fejlesztőkész
etről lehet olvasni.
A csip ára az oldal végén található.
A cortex a8 előnye, hogy benne megtalálható a neon fantázianevű lebegőpontos vektor processzor.
Ennek segitségével már több ezer hosszúságú fft is elvégezhető real time időben.
A legjobb fft könyvtári rutin is működik rajta.
73, HA5FT Jani

Nem elérhető HA7MBI

  • Newbie
  • *
  • Hozzászólások: 13
  • Karma: +7/-0
    • Profil megtekintése
Re:DSP-rádió
« Válasz #31 Dátum: 2012 December 18, 11:46 »
Üdv!

Kész van a "mű",  itt https://dl.dropbox.com/u/97546412/Szaki.pdf elérhető, de kérem ne szóljátok le, mert ez az első nagyobb írásom. Az 50. oldaltól hasznos kb, de jó, mert sok szép színes kép van a végén. Gábor, a fázismenetet nem tudtam lemérni, mert az áramkör pufferel, így nem igazán lehetett mérni. Kvarcból felfelé van megfelelő, a 9012,5 kHz-es talán jó lenne. Aztán lehet kellene csinálnom egy DDS-t, ahhoz van is IC-m, meg tervbe is van és akkor mindegy milyen kvarc van.

Bálint

Nem elérhető HA2EDX

  • Full Member
  • ***
  • Hozzászólások: 144
  • Karma: +432/-1
    • Profil megtekintése
Re:DSP-rádió
« Válasz #32 Dátum: 2012 December 18, 11:59 »
Szia Bálint!
Gratulálok! Igen komoly tartalmas munka, köszönöm további jó munkát.
73 es dx
vy 73 & dx! Laci
email:ha2edx@gmail.com

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #33 Dátum: 2012 December 18, 21:30 »
Szia Bálint ! Koszi, hogy kozze tetted ! Tovabbi sok sikert ! Udv.Szabi

Nem elérhető ha7sg

  • Hero Member
  • *****
  • Hozzászólások: 566
  • Karma: +754/-4
    • Profil megtekintése
Re:DSP-rádió
« Válasz #34 Dátum: 2012 December 19, 19:30 »
Szia Balint,

Vegig olvastam. Szuper.
Kivancsi lennek, hany hasonlo bonyolultsagu szakdoga keszul, ami nem csak SW, hanem mukodo HW is.

Lassan, beturol beture olvasd meg el ujra beadas elott, igy ki tudod javitani a meglevo gepelesi, stb hibakat.
Nehez, mert nem azt olvassa az ember, ami le van irva, hanem emlekezetbol, amit akart irni.
Pl: 42.old copy-paste az A/D konverternel irtbol:
" a kontroller a Master, es fogadunk adatokat"
Nyilvan kuldod az adatokat a D/A-nak.

73: 7SG Gabor
73: 7SG Gabor

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #35 Dátum: 2012 December 20, 19:11 »
Sziasztok !

Bizom benne hogy elfer a topicban,..

Ma feltelepitettem Linux ala a summon-arm-toolchain -t  (arm-linaro-eabi-4.6). STM32F4 Discovery panelhoz szeretnem majd hasznalni.
Sikerult is az elso nehany soros programot leforditani.
http://www.triplespark.net/elec/pdev/arm/stm32f4-bit-float_test.tar.gz

A kerdesem az lenne hogy az ASM kimenetet hogy tudnam megnezni ?

Udv.
Szabi

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #36 Dátum: 2012 December 20, 19:25 »
Kozben eszembe jutott hogy ez is csak gcc: ezert: arm-none-eabi-gcc -S ./main.c -o main.s adja az asm filet.

Most mar csak az erdekelne hogy, mennyire hasznalja a DSP utasitasait a controllernek a fordito.
Ebben ha segitene valaki.

Koszi.
Udv.

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #37 Dátum: 2012 December 20, 20:39 »
Sziasztok !

Egy minimalis program szorzasra es osszeadasra:

float i, j=5.0f;

int main(void)
{
  // NOTE: Important: Enable full access to FPU:
 SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */


   int k =0;
   i=100.0f;

   for(;k<100;k++)  {
      j+=10;
      i*=j;
   }
}

Es az ide tartoz ASM :

main:
.LFB110:
   .file 1 "main.c"
   .loc 1 27 0
   .cfi_startproc
   @ args = 0, pretend = 0, frame = 0
   @ frame_needed = 0, uses_anonymous_args = 0
   @ link register save eliminated.
   .loc 1 29 0
   mov   r2, #60672
   movt   r2, 57344
   ldr   r3, .L5
   ldr   r1, [r2, #136]
   flds   s14, .L5+4
   orr   r1, r1, #15728640
   flds   s15, [r3, #0]
   .loc 1 36 0
   fconsts   s13, #36
   .loc 1 29 0
   str   r1, [r2, #136]
.LVL0:
   movs   r2, #100
.LVL1:
.L2:
   .loc 1 36 0 discriminator 2
   fadds   s15, s15, s13
   .loc 1 35 0 discriminator 2
   subs   r2, r2, #1
   .loc 1 37 0 discriminator 2
   fmuls   s14, s14, s15
   .loc 1 35 0 discriminator 2
   bne   .L2
   .loc 1 35 0 is_stmt 0
   fsts   s15, [r3, #0]
   ldr   r3, .L5+8
   fsts   s14, [r3, #0]
   .loc 1 40 0 is_stmt 1
   bx   lr

Varom a hozzaertok velemnyet a DSP utasitasokkal kapcsolatosan.
Udv.
Szabi

Nem elérhető hg2ecz

  • Hero Member
  • *****
  • Hozzászólások: 1 522
  • Karma: +741/-4
    • Profil megtekintése
    • http://hg2ecz.ham.hu
Re:DSP-rádió
« Válasz #38 Dátum: 2012 December 21, 01:12 »
Szabi!

GCC opciók segíthetnek, illetve a C kód "maszírozása". Ez SIMD utasítások esetén nehézkesebb.
Én továbbra is maradok az integeres feldolgozásnál. Ajánlom figyelmetekbe az alábbit. Szépen fordul Cortex M3 és M4 esetén is ( gcc -mcpu=cortex-m3 ill. -mcpu=cortex-m4 ).

int a[1024], b[1024]; # mintavektor és súlyfüggvény
long long res=0;                        # 64 bites akkumulátor

res += (long long)a [ i ] * b [ i ];

És a végén pedig return (int)(res>>32); hiszen az alsó bitek csak a számítás akkumulálódó számítási hibájának csökkentésére kellettek.

És nézzük meg, mi lesz belőle fordítás után

        ldr     r6, [r0, r4]
        ldr     r5, [r1, r4]
        smlal   r2, r3, r5, r6

És a függvény vége is tökéletes: mov  r0, r3   # ahol r0-ban kerül visszaadásra a függvény visszatérési értéke.

Nem elérhető HA7MBI

  • Newbie
  • *
  • Hozzászólások: 13
  • Karma: +7/-0
    • Profil megtekintése
Re:DSP-rádió
« Válasz #39 Dátum: 2012 December 21, 02:04 »
Szia Szabi!

Ebből a kódból az  látszik hogy nem használja az FPU-t. Az elején lévő részletet jól megtaláltad, amibe engedélyezni kell, én ezt 3 órán át kerestem. Addig dobta a jó kis hardfaultokat. Ez azonban nem elég, a fejlesztőkörnyezetbe is be kell állítani, hogy FPU utasításokat használjon, különben emulálni fogja, ami nagyon sokáig tart. Ez Neked nem tudom hol van, nálam a project / options / target fülbe lehet állítani. Ha sikerült beállítanod, azt abból veszed észre hogy v betűvel kezdődő utasítások vannak az asm-ben. Ez ugyan gyári kód, de tiszta C-ben írva: 

 

Ha megnézed a programming manualt:http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/PROGRAMMING_MANUAL/DM00046982.pdf, akkor a VMLA tényleg lebegőpontos MAC utasítás, tehát minden működik.
Amúgy tök felesleges már minden, délbe úgyis világvége :D


Bálint

Nem elérhető hg2ecz

  • Hero Member
  • *****
  • Hozzászólások: 1 522
  • Karma: +741/-4
    • Profil megtekintése
    • http://hg2ecz.ham.hu
Re:DSP-rádió
« Válasz #40 Dátum: 2012 December 21, 08:55 »
"Float kedvelőknek" :) ajánlom még a GCC dokumentációját. Tényleg érdemes a megfelelő részt elolvasni, ügyes dolgok vannak benne leírva.

http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc.pdf

6.55.3 ARM NEON Intrinsics
These built-in intrinsics for the ARM Advanced SIMD extension are available when the
‘-mfpu=neon’ switch is used:

...
...
6.55.3.3 Multiply-accumulate
...
...
• float32x4 t vmlaq f32 (float32x4 t, float32x4 t, float32x4 t)
Form of expected instruction(s): vmla.f32 q0, q0, q0

Nem elérhető ha5ft

  • Full Member
  • ***
  • Hozzászólások: 125
  • Karma: +107/-1
    • Profil megtekintése
Re:DSP-rádió
« Válasz #41 Dátum: 2012 December 21, 10:32 »
Próbáld meg az következő gcc opciókkal:
-mcpu=cortex-m4  -mfpu=fpv4-sp-d16. -mfloat-abi=hard

szia
73 HA5FT Jani

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #42 Dátum: 2012 December 21, 14:07 »
Sziasztok ! Jo sok valasz, koszi hogy segitetek !

Nekem a fejlesztokornyezet gedit, es console;)
Csatolnek Makefile-t, de nem talalom hogy kell, vagy nem is lehet,..
Akkor leirom a gcc kapcsoloit.

CFLAGS  =
. . . .
-mcpu=cortex-m4 -mthumb \
   -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
   -fsingle-precision-constant
LFLAGS  = -Tstm32_flash.ld -nostartfiles -L$(LIB_PREFIX)
LFLAGS_END = -lm -lc

Vegulis ez az a beallitas amit HA5FT ajanlott.

Idézet
Amúgy tök felesleges már minden, délbe úgyis világvége
Miert pontosan delben ?

Milyen beallitasokra lehet meg szukseg ?
A gcc szerintem be van konfolva.

Udv,
Szabi

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #43 Dátum: 2012 December 21, 17:15 »
Sziasztok !

Rendben van a forditas,.. :mellow:
Sajnos erre a sorra nem az a kimenet ..:
   $(CC) $(CFLAGS) $(ODFLAGS) main.c  > main.s
mint a kovetkezore:
   $(OD) $(ODFLAGS) main.elf > main.lst
Es en az elso kimenetet neztem.

int ComputeMandel_XY(const struct MandelContext *c,int px,int py)
{
// Compute C plane coos.
float a = (float)px/(c->width-1)  * c->xs + c->x0;
float b = (float)py/(c->height-1) * c->ys + c->y0;
 80001f0: ee46 5a26 vmla.f32 s11, s12, s13
.
.
.

Udv.
Szabi

Nem elérhető uprog

  • Full Member
  • ***
  • Hozzászólások: 188
  • Karma: +33/-2
    • Profil megtekintése
    • blog
Re:DSP-rádió
« Válasz #44 Dátum: 2012 December 22, 21:55 »
Sziasztok !

linaro-GCC es az ST peldaprogramok

Sikerult egy FIR szuro peldaprogramot leforditani. (arm_fir_example)
Elegge megszenvedtem vele. Eloszoris a fordito panaszkodik hogy nem talalja a ARMCM4.h filet.
Ezt a filet a math_helper.h -n at az arm_math.h hasznalja. Nem csodalkozom hogy nem talalja, en sem.

Vegig bogaraszva nehany headert:
Be kell allitani ket makrot:
ARM_MATH_CM4
__FPU_PRESENT

Ezeket a legfelso szintu .c fileban probaltam, nem volt jo.
Attettem a Makefileba a compiler flags-hez, -D kapcsolokkal:
-DARM_MATH_CM4 -D__FPU_PRESENTIgy mar tetszett neki,..
Aztan jott az, hogy minden egyes fuggvenynek amit hasznal be kell hozni a megfelelo .c filet a Makefileba, mint .c es a linkernel mint .o . Ehhez kell egy-egy szimbolikus link a STM32F4-Discovery_FW_V1.1.0 konyvtar alatt levo megfelelo fileokra.
Es mar fordul is, kb 2 ora munka utan...

(Meg egy fuggveny .c filejat nem talaltam meg : arm_snr_f32)

--> Muszaj lesz valami kornyezetet beallitanom hozza, ez igy erosen idoigenyes,..

Udv.
Szabi
« Utoljára szerkesztve: 2012 December 22, 22:07 írta uprog »