Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
1246247
Update smi_stream_dev.c
Habraken Apr 28, 2025
70d0c1f
Merge pull request #1 from Habraken/Habraken-patch-1
Habraken Apr 28, 2025
f7e8bf9
Added a detailed installation description
Habraken May 1, 2025
2b33a28
Update May 2nd 2025
Habraken May 2, 2025
efd1924
Update May3rd 2025
Habraken May 3, 2025
c22c7a9
Step 1: add menu entry 'nbfm tx tone'
May 27, 2025
ed2e242
Step 2: setting up tx path
May 28, 2025
9139a6c
Modified smi driver, to include a first attempt to complete the tx path.
Oct 2, 2025
52dd91e
Remove trailing comma from empty_o declaration in complex_fifo module
Oct 2, 2025
1faa88c
Minor mod, to allow instrumentation thru pmod interface. (4 bits)
Oct 2, 2025
aa6ac81
Fixed some errors.
Oct 2, 2025
792e3ae
Re-implemented lvds_tx.v, to fix various issues. At the moment the TX…
Oct 2, 2025
c140eb6
Added a few options to help sythesis.
Oct 2, 2025
44e250f
Added some stuff...
Oct 2, 2025
5c7cae5
Updated to facilitate TX.
Oct 2, 2025
e62ecc4
Minor fixes.
Oct 2, 2025
0c64a90
Fixed lvds clocking.
Oct 2, 2025
5025146
Add ALSA 48kS/s source.
Oct 2, 2025
83edb56
Added modem, fpga, smi and internal fifo instrumentation and monitoring.
Oct 2, 2025
9af17ef
Implemented a new smi-write_samples function.
Oct 2, 2025
5dcdbd0
minor changes
Oct 2, 2025
e91bb58
Minor bug fixes, corrections
Oct 2, 2025
b918f73
Added POSIX and GNU SOURCE define guards.
Oct 2, 2025
799a285
Added NBFM modulator that takes as input 48kS/s and outputs IQ data a…
Oct 2, 2025
486f2d9
Made a few additions. Not sure if needed. Not finished.
Oct 2, 2025
6ff7d48
Add stuff.
Oct 2, 2025
086d66b
Add stuff.
Oct 2, 2025
7804c01
Still needed?
Oct 2, 2025
fadf247
Added caribou-mini
Oct 2, 2025
1c16c46
Fixed an error.
Oct 2, 2025
5ece623
Switched to buildin test tone for A/B testing.
Oct 4, 2025
b6d5bf0
Hardened dsp_producer timing loop.
Oct 4, 2025
2b5e1ee
Added fpga firmware binairy that enables tx.
Oct 4, 2025
19e26ad
Added other fpga files, so that other users don't have to synthesize …
Oct 4, 2025
fd02c23
Fixed TX tone menu option.
Oct 4, 2025
0279c79
UI cleanup
Oct 4, 2025
6ed4c3c
small UI print fix for frequency value.
Oct 4, 2025
3509667
Added UI keyboard hints for modem monitor.
Oct 4, 2025
b162c4a
Minor print format fix.
Oct 4, 2025
2c601fd
Fixed a compiler warning about misleading indentation.
Oct 5, 2025
bde80db
Fixed a 'discards ‘const’ qualifier from pointer target type' warning…
Oct 5, 2025
9d1e420
Fixed a 'warning: ‘read’ writing 16 bytes into a region of size 4 ove…
Oct 5, 2025
5316ed4
Fixed some 'unused parameter' warnings from the compiler in io_utils.
Oct 5, 2025
d3e61b4
Fixed a couple of compiler warnings in caribou_smi.
Oct 5, 2025
40433a9
Removed an unused function.
Oct 5, 2025
9b96f68
Fixed a kernel warning on smi_stream_dev.c:
Oct 5, 2025
62ec92e
Merge branch 'cariboulabs:main' into feature/nbfm_tx_tone
Habraken Oct 5, 2025
d006ff8
Increased the rf10 buffer size from 32 to 64 to provide a little more…
Oct 5, 2025
18e5214
Added a nbfm modem self test as well as a first attempt to nbfm rx. T…
Oct 11, 2025
d26006c
Included an adjusted CmakeLists.txt
Oct 11, 2025
b160eee
nbfm_rx now working... minor stuff to be fixed still, before cleaning…
Oct 16, 2025
0f66ef3
Minor stability fixes. Steadying rx audio.
Oct 16, 2025
2e05dc7
minor fixes
Oct 16, 2025
c334a80
Minor performance improvements, so that no rx iq frames are dropt.
Oct 17, 2025
76f9330
Removed some old commented-out code.
Oct 17, 2025
f50673c
Added nbfm demodulator and audio output for rx to the monitor_modem_s…
Oct 17, 2025
b9a5cbc
minor improvements
Oct 17, 2025
c4858ae
Made some improvements to improve operations a on a Pi Zero.
Oct 19, 2025
578a8f9
Implementation of tx/rx pipelines with start & stop functions.
Oct 22, 2025
f5949f2
Implemeneted the tx/rx pipelines in the monitor_modem_status() too.
Oct 24, 2025
58463cc
Removed the cpu 2 default in the rt_and_affinity calls, so that this …
Oct 24, 2025
4f1877f
minor fix in rx_pipeline_init()
Oct 24, 2025
2cf7e1a
Implemented RX fifo instrumentation and made a few performance improv…
Oct 25, 2025
233b73f
Improvements to the nbfm demodulator. Fix for the alsa buffer filling…
Nov 8, 2025
3511b94
cleanup
Nov 8, 2025
6f611ec
cleanup -removing unused code
Nov 8, 2025
798705a
Added some compiler flags
Nov 8, 2025
20deb47
Tweeking of alsa buffer parameters
Nov 8, 2025
a5da7b4
demod stablity improvements
Nov 9, 2025
f9ef92c
Restored some original functionality: tx cw
Nov 9, 2025
3e5d3f1
Chasing some audio clinking and popping on RX pipeline start. Track …
Nov 10, 2025
e9455bc
utils: update generate_bin_blob
Habraken Dec 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
572 changes: 572 additions & 0 deletions ADDITIONAL-README.md

Large diffs are not rendered by default.

872 changes: 673 additions & 199 deletions driver/smi_stream_dev.c

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions driver/smi_stream_ioctl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

#ifndef __SMI_STREAM_IOCTL_H__
#define __SMI_STREAM_IOCTL_H__

#ifdef __KERNEL__
#include <linux/types.h> // u32, etc.
#else
#include <stdint.h> // uint32_t
#endif

// Unique magic number for our ioctl calls (arbitrary, must be unique)
#define SMI_STREAM_IOCTL_MAGIC 's'

// IOCTL command to read all key SMI registers
#define SMI_IOCTL_READ_REGS _IOR(SMI_STREAM_IOCTL_MAGIC, 0x01, struct smi_registers_t)

// Struct to carry SMI register values between kernel and user space
struct smi_registers_t {
uint32_t smics; // Control and Status
uint32_t smil; // Length
uint32_t smids; // DMA status
uint32_t smisw0; // Write register 0
};

#endif // __SMI_STREAM_IOCTL_H__
4 changes: 2 additions & 2 deletions examples/python/soapy_rf_sweep_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def setup_freq_power(sdr, stream, freq_KHz, power=10.0):
sdr.setGain(SOAPY_SDR_TX, 0, power+10)

def setup_transmitter(sdr, freq_KHz=2304100):
stream = sdr.setupStream(SOAPY_SDR_TX, SOAPY_SDR_CS16, [0], dict(CW="1"))
stream = sdr.setupStream(SOAPY_SDR_TX, SOAPY_SDR_CS16, [0])
setup_freq_power(sdr, stream, freq_KHz)
return stream

Expand Down Expand Up @@ -115,7 +115,7 @@ def main():

#---------------------------------------------
if (event == "Exit" or event == WIN_CLOSED):
break;
break

#---------------------------------------------
elif event == "Set Power":
Expand Down
2 changes: 1 addition & 1 deletion firmware/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ top.bin:
yosys -p 'synth_ice40 -top top -json $(filename).json -blif $(filename).blif' -p 'ice40_opt' -p 'fsm_opt' $(filename).v

#nextpnr-ice40 --lp1k --package qn84 --json $(filename).json --pcf $(pcf_file) --asc $(filename).asc
nextpnr-ice40 --lp1k --package qn84 --json $(filename).json --pcf $(pcf_file) --asc $(filename).asc --parallel-refine --opt-timing --seed 16 --timing-allow-fail
nextpnr-ice40 --lp1k --package qn84 --json $(filename).json --pcf $(pcf_file) --asc $(filename).asc --parallel-refine --opt-timing --seed 16 --timing-allow-fail --no-promote-globals --report nextpnr_timing.json 2>&1 | tee nextpnr.log
icepack $(filename).asc $(filename).bin

build: top.bin
Expand Down
2 changes: 1 addition & 1 deletion firmware/complex_fifo.v
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ module complex_fifo #(
output reg [2*DATA_WIDTH-1:0] rd_data_o,

output reg full_o,
output reg empty_o,
output reg empty_o
);

reg [ADDR_WIDTH-1:0] wr_addr;
Expand Down
2,848 changes: 1,424 additions & 1,424 deletions firmware/h-files/cariboulite_fpga_firmware.h

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions firmware/io_ctrl.v
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ module io_ctrl
input [3:0] i_config,
output o_led0,
output o_led1,
output [3:0] o_pmod,
//output [3:0] o_pmod,

// Analog interfaces
output o_mixer_fm,
Expand Down Expand Up @@ -91,7 +91,7 @@ module io_ctrl
//=========================================================================
assign o_led0 = led0_state;
assign o_led1 = led1_state;
assign o_pmod = pmod_state;
//assign o_pmod = pmod_state;

// Analog interfaces
assign o_mixer_fm = 1'b0;
Expand All @@ -113,7 +113,7 @@ module io_ctrl
if (i_rst_b == 1'b0) begin
debug_mode <= debug_mode_none;
rf_mode <= rf_mode_low_power;
led0_state <= 1'b0;
led0_state <= 1'b0; // a marker, to show it is my version of the firmware
led1_state <= 1'b0;
end else begin
if (i_cs == 1'b1) begin
Expand Down Expand Up @@ -307,4 +307,4 @@ module io_ctrl
end
end

endmodule // io_ctrl
endmodule // io_ctrl
Loading