Digital SSB-modulator med dsPIC30F3012 [Radio]
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
http://www.microchip.com/wwwproducts/De ... e=en010342
CPU Speed (MIPS) 30
DC to 40 MHz external clock input
Hur hög frekvens på "RF" signalen kan din hårdvara + mjukvara hantera?
Btw, kanske missade det men skrev du I/Q filtret i assembler eller C ..?
CPU Speed (MIPS) 30
DC to 40 MHz external clock input
Hur hög frekvens på "RF" signalen kan din hårdvara + mjukvara hantera?
Btw, kanske missade det men skrev du I/Q filtret i assembler eller C ..?
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
Microchip har gjort jobbet åt oss, bara att anropa filtret:
FIR(BLOCK_LENGTH, &FilterOut[0], &A_D_value[0], &Hilbert_Allpass_Filter_Q_channel);
Vad filtret i sig är skrivet i det vet inte jag men gratisversionen av kompilatorn C30 klarar
jobbet galant, de dyrare versionerna gör inte exekveringen av programmet så mycket snabbare.
Själv så har jag skrivit programmet i C.
Samplingsfrekvensen är för närvarande 40kHz, klockoscillatorn har nu en kristall på 7,2MHz.
Har man en kristall på 7,5MHz så ger det max hastighet enligt specifikationen i databladet.
Tyvärr är 7,5MHz ingen standardfrekvens på kristaller, 15MHz finns men då tillkommer en extra yttre
frekvensdelare (dela med två för 7,5MHz).
FIR(BLOCK_LENGTH, &FilterOut[0], &A_D_value[0], &Hilbert_Allpass_Filter_Q_channel);
Vad filtret i sig är skrivet i det vet inte jag men gratisversionen av kompilatorn C30 klarar
jobbet galant, de dyrare versionerna gör inte exekveringen av programmet så mycket snabbare.
Själv så har jag skrivit programmet i C.
Samplingsfrekvensen är för närvarande 40kHz, klockoscillatorn har nu en kristall på 7,2MHz.
Har man en kristall på 7,5MHz så ger det max hastighet enligt specifikationen i databladet.
Tyvärr är 7,5MHz ingen standardfrekvens på kristaller, 15MHz finns men då tillkommer en extra yttre
frekvensdelare (dela med två för 7,5MHz).
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
Nya tester har gjorts med en dsPIC33EP128GP504, klarar 70MIPS.
Den har en förbättrad klockoscillator, räcker med en 4MHz kristall för
att klocka den i max hastighet. Sen var det ett gäng nya register att
konfigurera rätt...
En bild på nybygget:
Närbild på dsPIC, bilden lite lätt manipulerad i datorn för att se kretsens text bättre.
Mjukvaran gick att flytta från dsPIC30 till dsPIC33EP rätt så smidigt ändå
men givetvis var det en del strul innan det fungerade bra.
De trafiksätten som nu finns är USB/LSB, DSB (dubbelt sidband med undertryckt bärvåg) och alldeles vanlig AM.
FM låter sig inte implementeras på något enkelt sätt så det finns inte alls med.
Trafiksätt väljs med hjälp av två omkopplare.
Samplingsfrekvensen är nu höjd till 50kHz vilket ger en utfrekvens för bärvågen på 12,5kHz.
Vid blandning till den frekvens man vill använda så blir avståndet 25kHz mot 20kHz med föregående version,
detta ger något enklare (billigare) filter ( gäller då USB används ska tilläggas! )
Bandbredden på SSB är något större än normalt (nu ca 4kHz) men det är ju bara mjukvaran som ändras
så det kostar inte något extra att labba lite med olika bandbredder m.m.
Är bara jobbet att ta fram filterkoefficienterna som kostar form av tid, någon minut så har man en ny bandbredd.
D/A-omvandlaren är en 12-bit MCP4821 från Microchip.
Några bilder från "sändningen" till HDSDR-programvaran i PC:n.
Sändning med övre sidbandet, USB (Upper SideBand). Tänkt bärvåg finns på 12,5kHz. Byte till undre sidbandet, LSB (Lower SideBand) Dubbelt sidband (DSB) med undertryckt bärvåg. Står ibland "DSB-SC" SC=suppressed carrier.
Och slutligen amplitudmodulering med bärvågen synlig på 12,5kHz.
Det syns tydligt hur DSB och AM tar upp dubbelt så mycket frekvensutrymme då
båda sidbanden finns med.
Finns gott om minne kvar i dsPIC, så man kan ha en hel uppsättning filter i kretsen.
Ska bygga in möjlighet för CW i bygget också, får en möjlighet att styra flankerna
på de enskilda CW-tecknen så att sändningen tar upp så lite frekvensutrymme
som möjligt.
Den har en förbättrad klockoscillator, räcker med en 4MHz kristall för
att klocka den i max hastighet. Sen var det ett gäng nya register att
konfigurera rätt...
En bild på nybygget:
Närbild på dsPIC, bilden lite lätt manipulerad i datorn för att se kretsens text bättre.
Mjukvaran gick att flytta från dsPIC30 till dsPIC33EP rätt så smidigt ändå
men givetvis var det en del strul innan det fungerade bra.
De trafiksätten som nu finns är USB/LSB, DSB (dubbelt sidband med undertryckt bärvåg) och alldeles vanlig AM.
FM låter sig inte implementeras på något enkelt sätt så det finns inte alls med.
Trafiksätt väljs med hjälp av två omkopplare.
Samplingsfrekvensen är nu höjd till 50kHz vilket ger en utfrekvens för bärvågen på 12,5kHz.
Vid blandning till den frekvens man vill använda så blir avståndet 25kHz mot 20kHz med föregående version,
detta ger något enklare (billigare) filter ( gäller då USB används ska tilläggas! )
Bandbredden på SSB är något större än normalt (nu ca 4kHz) men det är ju bara mjukvaran som ändras
så det kostar inte något extra att labba lite med olika bandbredder m.m.
Är bara jobbet att ta fram filterkoefficienterna som kostar form av tid, någon minut så har man en ny bandbredd.
D/A-omvandlaren är en 12-bit MCP4821 från Microchip.
Några bilder från "sändningen" till HDSDR-programvaran i PC:n.
Sändning med övre sidbandet, USB (Upper SideBand). Tänkt bärvåg finns på 12,5kHz. Byte till undre sidbandet, LSB (Lower SideBand) Dubbelt sidband (DSB) med undertryckt bärvåg. Står ibland "DSB-SC" SC=suppressed carrier.
Och slutligen amplitudmodulering med bärvågen synlig på 12,5kHz.
Det syns tydligt hur DSB och AM tar upp dubbelt så mycket frekvensutrymme då
båda sidbanden finns med.
Finns gott om minne kvar i dsPIC, så man kan ha en hel uppsättning filter i kretsen.
Ska bygga in möjlighet för CW i bygget också, får en möjlighet att styra flankerna
på de enskilda CW-tecknen så att sändningen tar upp så lite frekvensutrymme
som möjligt.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- hcb
- Moderator
- Inlägg: 5776
- Blev medlem: 23 februari 2007, 21:44:50
- Skype: hcbecker
- Ort: Lystrup / Uppsala
- Kontakt:
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
Som vanligt mycket imponerande.
Kan du köra ISB också?
Kan du köra ISB också?
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
Toppen! Varför såg jag inte denna före jag började med mitt Navtex-projekt? Hade sparat massor med tid!
Re: Digital SSB-modulator med dsPIC30F3012 [Radio]
Filtrena är skrivna i optimerad assembler och använder flera av de inbyggda DSP-funktionernaVad filtret i sig är skrivet i det vet inte jag
- MAC - Multiplicerar två 16-bits signerade värden och ackumulerar till en 40-bit ackumulator, samt räknar upp två pekare, allt i en instruktionscykel (2 klockcykler)
- Hårdvaruloopar, loopa mellan två adresser, stryrt av en hårdvaruräknare
- Modulo-adressering, perfekt för cirkulära buffertar.