Xilinx ISE14.7 core generator FIR filter

Eduard2

Golden Member

Beste forumleden,

Eerder heb ik al een paar dingen met de core generator gedaan. Met wat vallen en opstaan kwam dat voor mekaar. Het aanmaken van een FIR filter is een hardere nooit te kraken. Wellicht doe ik iets fout maar ik heb geen idee wat.
Hulp is welkom.

Als ik de vooringevulde coefficienten vervang door de gewenste waarde dan verschijnt de de frequentiegrafiek zoals het hoort.

Na alles ingevuld te hebben en een run ziet het lijstje er zo uit:

In ISE plaats ik de files *.xco, *.ngc en *.v zoals ik eerder bij andere cores deed. Vreemd is dat de velden die ik invulde terug op de default waarde staan.

Weet iemand wat ik fout doe ?

Vriendelijke groeten,

Eduard

Ik ken dit specifieke geval niet, maar paar dingen:
- Check de documentatie die bij de FIR compiler hoort. Klinkt misschien als open deur, maar daar staan soms echt nuttige dingen in.
- Heb je de entity van het gegenereerde filter al bekeken? Zit daar niet toevallig een input in waar je de coefficienten op moet aanbieden? Wellicht is hetgeen je handmatig invult alleen maar een soort simulatie(?)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Eduard2

Golden Member

Dag flipflop,

Volgens de documentatie kan je de coefficienten handmatig of via een .coe file ingeven.
De documentatie heb ik laatste dagen uitgevlooid. Mijn hoop is nu gesteld op een tip van iemand die met die materie vertrouwd is. Op vlak van FPGA ben ik een beginner.

De inhoud van de files is niet eenvoudig te begrijpen maar moeilijk gaat ook. Je ziet dat het machine gemaakte code is. Die is enorm groot. Ik ga straks starten met een paar nutteloos kleine voorbeeldjes. Een moving average filter is ook een FIR. Die is heel klein en gemakkelijk te debuggen.

Het forum kan me helpen om niet opnieuw het wiel uit te vinden. Wellicht zijn er lezers die met de FIR filters en de codegenerator vertrouwd zijn die me een nuttige tip kunnen geven

Vriendelijke groeten,

Eduard

[Bericht gewijzigd door Eduard2 op woensdag 6 januari 2021 12:17:33 (44%)

Eduard2

Golden Member

Beste forumleden,

Wat mij betreft mag deze draad worden gesloten. Het gestelde probleem is opgelost. Flipflop bracht me op het idee met een .coe file te werken. Op zich was dat niet nodig maar het maakte alles wat handiger. Door het gebruik van de file moet ik bij iedere poging geen nieuwe lijst coëfienten invullen. De gebruikte methode was het te programmeren filter zo eenvoudig maken dat de oplossing triviaal wordt. Op die manier werden de lastige dingen stuk voor stuk uitgeschakeld en kon de foutoorzaak worden ingecirkeld.

De essentie van mijn probleem was het gebruik van de coregenerator binnen ISE. Ik sleepte telkens meerdere files naar het project. In dit geval volstaat het enkel de .nco file aan het project toe te voegen. Zodra de instantie van een filter in de code wordt aangemaakt doet ISE de rest.

Ik geef hier de oplossing van een simpel probleem dat me een week zoekwerk kostte. Mogelijk loopt iemand op dit forum vast op een vergelijkbaar obstakel. De kern van de zaak is dat het moeilijk blijft op eigen houtje zulke dingen uit te vlooien. Professioneel heb je het netwerk om zoiets in team aan te pakken. In hobbysfeer is het niet evident omdat weinig amateurs met dit soort dingen aan de slag gaan. Gelukkig is er dit forum dat altijd wat helpt.

Vriendelijke groeten,

Eduard

Op 9 januari 2021 09:25:28 schreef Eduard2:
...Professioneel heb je het netwerk om zoiets in team aan te pakken. In hobbysfeer is het niet evident omdat weinig amateurs met dit soort dingen aan de slag gaan.

Ik kan je zeggen dat die ook professioneel zeer regelmatig gebeurd hoor. Punt is dat je steeds nieuwe dingen doet en dat geeft weer problemen waar nog nooit iemand binnen de zaak tegenaan is gelopen. Je hebt wel meer tips en suggesties, mensen die mee kunnen denken, dat wel.

Maar mooi dat het gelukt is! Wat ben je aan het maken?

ps, topics gaan normaal nooit dicht, heeft geen nut.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Eduard2

Golden Member

Dag Flipflop,

Ik maakte dit:

Het is een projectje onder de vleugels van het Olens radiomuseum en de franse vereniging Radiofil. Simultaan worden 8 audiostreams uit het internet geplukt en opnieuw gemoduleerd op frequenties in de MG of LG band. Via een getwiste draad en ferrite clips kunnen de antenne ingangen van oude radio's signaal van de modulator oppikken.

Nu werk ik aan de verbetering van dit project. De draaggolven opgewekt in de FPGA worden daar AM gemoduleerd. In eerste poging was de audio input van de AM modulator het op 22,050 kHz gesampeld signaal. Dat is niet volgens de regels van de kunst. Ik wil die 22 kHz in twee stappen upsamplen naar 4608 kHz. Het FIR filter dat ik nu bouw is de eerste trap waarbij de 22kHz een factor 11 wordt opgevoerd en de bandbreedte tot 8 kHz wordt beperkt. Daarna komt nog een tweede upsampling met een factor 19 aan de beurt. De achtergrond van die sampling is dat een AM modulator dezelfde samplingrate nodig heeft voor de modulatie en de draaggolf.

Vriendelijke groeten,

Eduard