-
Notifications
You must be signed in to change notification settings - Fork 5
Configurable NCO (numerically controlled oscillator) written in MyHDL using a pipelined CORDIC implementation
License
benzea/nco
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This NCO uses a CORDIC MyHDL core that is can be configured to the required needs. A small GUI application is included which can be used to configure the core and check the resulting performance characteristics. The CORDIC and Rule30 PRNG cores can be used as standalone cores. NCO === To configure the NCO and use it you need the following dependencies: * GTK+ 3.x * Matplotlib * MyHDL 0.8 Then run the script: $ nco/parameterize_nco.py If you copy the toVHDL_kh.py file from the "myhdl-addons" repository into the nco directory, then multiple entities will be created. Phase Dithering --------------- The phase dithering implementation is rather basic; this is an area where the core should be improved more. Some notes: * it is not Gaussian * it is added after truncating the phase for the CORDIC CORDIC ====== The CORDIC core is a fully pipelined implementation which can be parameterized to the required bit-depths. The pipeline consists of multiple stages: * Initial stage that rotates the phase into the first quadrant and uses a LUT for an initial estimation. * A number of CORDIC stages to better approximate the output * Output stage that rotates the result back into the correct quadrant. See the comment in pipelined_cordic.py for details. This CORDIC pipeline does not require any multiplication as the required scaling is done in the initial LUT step.
About
Configurable NCO (numerically controlled oscillator) written in MyHDL using a pipelined CORDIC implementation
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published