VHDL-DDS-Generator
Här kommer en till DDS-generator, den här gången är den skriven i VHDL. Tänkte att grunden som den ser ut nu får användas fritt av vem som helst, bara det står varifrån det kommer.
Nuvarande features (2009-12-16)
- 8-bitars parallell utgång (för R/2R-stege eller DAC)
- En PWM-modulerad utgång (enkel att buffra och lågpass-filtrera)
- En delta-sigma-modulerad utgång (Ännu enklare att buffra och filtrera)
- Mycket enkelt interface (serie-kommunikation på 115200 baud, alla kommandon avslutas med retur):
Fnummer, där nummer är en frekvensen (just nu kan den bara ställas till hela hertz)
F1000 "sätter 1000 Hz"
W[256 bytes] - Laddar upp en ny vågform till vågforms-minnet
M0 - Triangelvåg
M1 - Fyrkantsvåg
M2 - Använder vågforms-minnet
? - Debug-utskrift av några register
Hårdvara
Den nuvarande koden kör jag på AVNET's SP3A-EVAL400-G, som är ett riktigt billigt utvecklingskit för Spartan 3A. En-bitars-utgångarna (PWM och Delta-Sigma) filtrerar jag just nu med enkla RC-filter (1k2 samt 4.7-22nF). För att slippa krångla med serie-porten varje gång jag laddar upp en ny bit-fil, så har jag en separat usb-till-rs232-adapter inkopplad som kommandona skickas med.
Mjukvaran
Jag har ett mycket enkelt gtkmm-program för att ladda upp nya vågformer. Eftersom jag är en linux-människa, så kommer jag inte ens att tänka på att porta det till windows. Interfacet ser just nu ut så här:
Filer
All source files (VHDL, C++, and octave): vhdl-dds_rev0.1.tar.gz (2009-12-17)
Tidigare erfarenheter
Matten bakom DDS-generering finns i det tidigare DDS-projektet. Matten bakom delta-sigma-modulering finns bland annat på wikipedia.
Du ansvarar själv för risken att skada dig själv/andra/saker/datorer/eller annat!