Giter Site home page Giter Site logo

myriadrf / novena-rf Goto Github PK

View Code? Open in Web Editor NEW
48.0 48.0 15.0 28.53 MB

A 300 MHz to 3800 MHz RF module for the Novena Open Hardware Computing Platform

Shell 0.78% VHDL 3.67% HTML 0.63% Tcl 0.66% Stata 0.30% SystemVerilog 0.13% Verilog 0.14% CMake 0.08% C++ 46.34% C 32.92% Makefile 0.01% Eagle 0.16% Pascal 2.12% Component Pascal 0.01% Python 0.03% Batchfile 0.45% KiCad Layout 11.57%

novena-rf's People

Contributors

9600 avatar agl avatar bnewbold avatar guruofquality avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

novena-rf's Issues

lms-suite fails to build with libi2c-dev installed

Failed to build while compiling driver/host

Work around is to remove libi2c-dev and then compiling
$sudo apt-get remove libi2c-dev


[ 4%] Building CXX object CMakeFiles/NovenaRF.dir/home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp.o
In file included from /home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp:26:0:
/usr/include/linux/i2c-dev.h:37:8: error: redefinition of ‘struct i2c_msg’
struct i2c_msg {
^
In file included from /home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp:25:0:
/usr/include/linux/i2c.h:68:8: error: previous definition of ‘struct i2c_msg’
struct i2c_msg {
^
In file included from /home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp:26:0:
/usr/include/linux/i2c-dev.h:89:7: error: redefinition of ‘union i2c_smbus_data’
union i2c_smbus_data {
^
In file included from /home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp:25:0:
/usr/include/linux/i2c.h:128:7: error: previous definition of ‘union i2c_smbus_data’
union i2c_smbus_data {
^
CMakeFiles/NovenaRF.dir/build.make:399: recipe for target 'CMakeFiles/NovenaRF.dir/home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp.o' failed
make[2]: *** [CMakeFiles/NovenaRF.dir/home/ret/Novena-RF/lms-suite/lms-suite/src/src/ConnectionSPI.cpp.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/NovenaRF.dir/all' failed
make[1]: *** [CMakeFiles/NovenaRF.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

need IRQ between FPGA and host

We need to be able to sleep with a timeout for read/writeStream when the stream is not ready. We can select()/poll() on a userspace GPIO from sysfs. Just need to figure out a possible GPIO candidate between the FPGA and the arm. Suggestions appreciated.

adding mounting holes to pcb

The novena has 3 screw holes near the high-speed header. Would it be possible to add any of them to this daughter board for more secure long term mounting.

cordic for FPGA dsp chains

Used for tuning corrections and to tune the LO away from the desired passband. A cordic may be desirable in the RX and TX DSP chains within the FPGA.

udev rules for host driver

The rules would set permissions on

  • /dev/spidev2.0
  • /dev/novena_rf
  • /sys/class/gpio/gpio135/* - reset
  • /sys/class/gpio/gpio122/* - spi sen

The gpios also have to be exported.

fpga - automatic switching for LMS IOs based on RX/TX state

        --lms control signals
        lms_rxen : out std_logic;
        lms_txen : out std_logic;
        lms_lmsrst : out std_logic;
        mrf_gpio0 : out std_logic;
        mrf_gpio1 : out std_logic;
        mrf_gpio2 : out std_logic;

I dont know what the last three gpios are for, perhaps antenna switches. Currently, these IOs are controlled by a SPI-based state machine controlled by the ARM. It may be desirable to control these based on the ADC/DAC active signals coming from the framer/deframer; for the purposes of automatic antenna switching (if that is indeed their use case).

libusb is a dependency lms-suite

We don't need libusb1.0, but its a compilation requirement to use the lms-suite inside the NovenaRF module. It may be worth commenting out libusb with ifdefs to avoid this requirement.

_cachedSampleRates not initialized

I ran into some problems with uhd and osmocom tools and also gqrx on the Novena.

turned out that getSampleRate() was being called without _cachedSampleRates having been initialized, resulting in errors like FATAL: map::at or std::out_of_range errors

I chose to add:

_cachedSampleRates[SOAPY_SDR_RX] = 0;
_cachedSampleRates[SOAPY_SDR_TX] = 0;

to the constructor, which solved it.

error while building lms-suite

Hi All,
while building lms-suite with this command :
'mkdir build && cd build && cmake .. && cmake --build .'
it outputs :

-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found wxWidgets: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/build
Scanning dependencies of target lms-suite
[ 1%] Building CXX object CMakeFiles/lms-suite.dir/src/CommonUtilities.cpp.o
[ 3%] Building CXX object CMakeFiles/lms-suite.dir/src/ConnectionCOM.cpp.o
/home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/src/ConnectionCOM.cpp:332:2: warning: #warning Currently searching only for ACM connections [-Wcpp]
#warning Currently searching only for ACM connections
^
[ 4%] Building CXX object CMakeFiles/lms-suite.dir/src/ConnectionManager.cpp.o
[ 6%] Building CXX object CMakeFiles/lms-suite.dir/src/ConnectionSPI.cpp.o
/home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/src/ConnectionSPI.cpp: In function ‘bool IsNovenaBoard()’:
/home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/src/ConnectionSPI.cpp:40:30: error: elements of array ‘i2c_msg messages [2]’ have incomplete type
struct i2c_msg messages[2];
^
/home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/src/ConnectionSPI.cpp:40:30: error: storage size of ‘messages’ isn’t known
/home/gasser.alaaeldien/lms-suite-master/lms-suite-master/LMS6002D/lms-suite/src/src/ConnectionSPI.cpp:51:25: error: ‘I2C_M_RD’ was not declared in this scope
messages[1].flags = I2C_M_RD;
^
make[2]: *** [CMakeFiles/lms-suite.dir/src/ConnectionSPI.cpp.o] Error 1
make[1]: *** [CMakeFiles/lms-suite.dir/all] Error 2
make: *** [all] Error 2

i don't know what is wrong

Compiling issue at make step

hi,

I have an error compiling Novena-FR, at make step I have the following error:

$ make
Scanning dependencies of target NovenaRF
[  4%] Building CXX object CMakeFiles/NovenaRF.dir/Streaming.cpp.o
In file included from /usr/include/features.h:392:0,
                 from /usr/include/c++/5.3.1/arm-slackware-linux-gnueabi/bits/os_defines.h:39,
                 from /usr/include/c++/5.3.1/arm-slackware-linux-gnueabi/bits/c++config.h:482,
                 from /usr/include/c++/5.3.1/cstdint:38,
                 from /tmp/Novena-RF/driver/host/NovenaRegs.hpp:11,
                 from /tmp/Novena-RF/driver/host/NovenaRF.hpp:11,
                 from /tmp/Novena-RF/driver/host/Streaming.cpp:10:
/usr/include/gnu/stubs.h:10:29: fatal error: gnu/stubs-hard.h: No such file or directory
compilation terminated.
CMakeFiles/NovenaRF.dir/build.make:62: recipe for target          CMakeFiles/NovenaRF.dir/Streaming.cpp.o' failed
make[2]: *** [CMakeFiles/NovenaRF.dir/Streaming.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/NovenaRF.dir/all' failed
make[1]: *** [CMakeFiles/NovenaRF.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

Do you know how can I fix this ?

(I'm compiling natively on Novena).

decimation/interpolation chain improvements

I put in a chain of 4 half-bands for both interpolation and decimation by up to 1,2,4,8,or 16. Its not ideal:

  • Every filter in the chain is identical (11 taps, clock rate/2), but we could save resources by allowing filters closer to baseband to work at lower rates, or have more taps for a better roll-off.
  • The baseband samples could be scaled to compensate for filter gain/loss
  • For a quick cheat to deal with output scaling, each filter's output is shifted up by 1. This factor of 2x matches the loss very closely, but large values could "clip" in a messy way.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.