No changes between revisions
/Designs/HAM Constructions/SDRX02A/DOC/2014-05-12KakonaDiplThesisCTU-Prague.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/HDL/README.txt
0,0 → 1,3
Zdrojove kody FPGA rozhrani bez placeneho Xillybus modulu a par utilit, nepsal Ondrej Syrhrovsky.
http://xillybus.com/
 
/Designs/HAM Constructions/SDRX02A/HDL/modules/comm/spi_master_transmit.vhd
0,0 → 1,132
-- this module transmit a given constant data when requested
-- and then signals done.
--
-- G_DATA has to contain also the address and the r/w bit
--
-- MSB of G_DATA will go first
-- P1DATA_P2DATA_P3DATA
--
-- version for multiple devices with different data
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
entity spi_master_transmit is
generic (
G_DATA1 : std_logic_vector;
G_DATA2 : std_logic_vector;
G_NUM_BITS_PACKET : integer;
G_NUM_PACKETS : integer;
G_NUM_BITS_PAUSE : integer
);
port (
i_clk : in std_logic;
i_rst : in std_logic;
o_done : out std_logic;
-- selects which data to transfer. If '0', it transfers G_DATA1
i_data_selector : in std_logic;
-- SPI ports:
o_n_ce : out std_logic_vector;
o_dout : out std_logic;
o_clk : out std_logic
);
end spi_master_transmit;
 
architecture behavioral of spi_master_transmit is
 
subtype t_pause_counter is integer range 0 to G_NUM_BITS_PAUSE;
signal s_pause_counter : t_pause_counter;
subtype t_bit_counter is integer range 0 to G_NUM_BITS_PACKET - 1;
signal s_bit_counter : t_bit_counter;
subtype t_packet_counter is integer range 0 to G_NUM_PACKETS;
signal s_packet_counter : t_packet_counter;
subtype t_device_counter is integer range 0 to o_n_ce'length - 1;
signal s_device_counter : t_device_counter;
signal s_clk_inv : std_logic;
--signal s_o_dout_d : std_logic;
signal s_o_clk_en : std_logic;
constant C_DATALEN_PER_DEVICE : integer := G_NUM_BITS_PACKET*G_NUM_PACKETS;
signal s_cs_out : std_logic_vector( o_n_ce'range );
begin
 
assert( G_DATA1'length = C_DATALEN_PER_DEVICE*o_n_ce'length ) report "The size of G_DATA1 does not match the number of devices and other generics." severity failure;
assert( G_DATA2'length = C_DATALEN_PER_DEVICE*o_n_ce'length ) report "The size of G_DATA2 does not match the number of devices and other generics." severity failure;
-- inverted clock:
s_clk_inv <= not i_clk;
-- output clock:
o_clk <= i_clk and s_o_clk_en;
-- done:
o_done <= '1' when ( (i_rst = '0') and (s_packet_counter = 0) and (s_pause_counter = 0) and (s_bit_counter = 0 ) and (s_device_counter=0) ) else
'0';
transmitter_process : process( s_clk_inv )
begin
if( rising_edge( s_clk_inv ) ) then
if( i_rst = '1' ) then
s_bit_counter <= 0;
s_pause_counter <= t_pause_counter'high;
s_packet_counter <= t_packet_counter'high;
s_device_counter <= t_device_counter'high;
s_cs_out( s_cs_out'low ) <= '0';
s_cs_out( s_cs_out'high downto s_cs_out'low+1 ) <= ( others => '1' );
o_n_ce <= ( o_n_ce'range => '1' );
o_dout <= '0';
s_o_clk_en <= '0';
elsif( s_bit_counter > 0 ) then
o_n_ce <= s_cs_out;
if( i_data_selector = '0' ) then
o_dout <= G_DATA1( s_bit_counter + s_packet_counter*G_NUM_BITS_PACKET - 1 + s_device_counter*C_DATALEN_PER_DEVICE ); -- here s_packet_counter points to the current packet and s_bit_counter is one bit behind, therefore the -1.
else
o_dout <= G_DATA2( s_bit_counter + s_packet_counter*G_NUM_BITS_PACKET - 1 + s_device_counter*C_DATALEN_PER_DEVICE );
end if;
s_bit_counter <= s_bit_counter - 1;
s_o_clk_en <= '1';
elsif( s_pause_counter > 0 ) then
o_n_ce <= ( o_n_ce'range => '1' );
s_pause_counter <= s_pause_counter - 1;
o_dout <= '0';
s_o_clk_en <= '0';
elsif( s_packet_counter > 0 ) then
s_bit_counter <= t_bit_counter'high;
s_pause_counter <= t_pause_counter'high;
s_packet_counter <= s_packet_counter - 1;
o_n_ce <= s_cs_out;
if( i_data_selector = '0' ) then
o_dout <= G_DATA1( s_bit_counter + s_packet_counter*G_NUM_BITS_PACKET - 1 + s_device_counter*C_DATALEN_PER_DEVICE ); -- here s_bit_counter = 0, s_packet_counter points to previous packet. Therefore -1 to get the msb of current packet.
else
o_dout <= G_DATA2( s_bit_counter + s_packet_counter*G_NUM_BITS_PACKET - 1 + s_device_counter*C_DATALEN_PER_DEVICE );
end if;
s_o_clk_en <= '1';
elsif( s_device_counter > 0 ) then
s_cs_out <= s_cs_out( s_cs_out'high-1 downto s_cs_out'low ) & '1';
s_device_counter <= s_device_counter - 1;
-- follows pause.
s_bit_counter <= 0;
s_pause_counter <= t_pause_counter'high;
s_packet_counter <= t_packet_counter'high;
o_n_ce <= ( o_n_ce'range => '1' );
o_dout <= '0';
s_o_clk_en <= '0';
end if;
end if;
end process;
 
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/core_generator_ml605/clk_125MHz_to_6MHz.xco
0,0 → 1,269
##############################################################
#
# Xilinx Core Generator version 14.3
# Date: Tue May 6 10:43:16 2014
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:clk_wiz:3.6
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = VHDL
SET device = xc6vlx240t
SET devicefamily = virtex6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = ff1156
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -1
SET verilogsim = false
SET vhdlsim = true
# END Project Options
# BEGIN Select
SELECT Clocking_Wizard xilinx.com:ip:clk_wiz:3.6
# END Select
# BEGIN Parameters
CSET calc_done=DONE
CSET clk_in_sel_port=CLK_IN_SEL
CSET clk_out1_port=CLK_OUT_6
CSET clk_out1_use_fine_ps_gui=false
CSET clk_out2_port=CLK_OUT2
CSET clk_out2_use_fine_ps_gui=false
CSET clk_out3_port=CLK_OUT3
CSET clk_out3_use_fine_ps_gui=false
CSET clk_out4_port=CLK_OUT4
CSET clk_out4_use_fine_ps_gui=false
CSET clk_out5_port=CLK_OUT5
CSET clk_out5_use_fine_ps_gui=false
CSET clk_out6_port=CLK_OUT6
CSET clk_out6_use_fine_ps_gui=false
CSET clk_out7_port=CLK_OUT7
CSET clk_out7_use_fine_ps_gui=false
CSET clk_valid_port=CLK_VALID
CSET clkfb_in_n_port=CLKFB_IN_N
CSET clkfb_in_p_port=CLKFB_IN_P
CSET clkfb_in_port=CLKFB_IN
CSET clkfb_in_signaling=SINGLE
CSET clkfb_out_n_port=CLKFB_OUT_N
CSET clkfb_out_p_port=CLKFB_OUT_P
CSET clkfb_out_port=CLKFB_OUT
CSET clkfb_stopped_port=CLKFB_STOPPED
CSET clkin1_jitter_ps=80.0
CSET clkin1_ui_jitter=0.010
CSET clkin2_jitter_ps=100.0
CSET clkin2_ui_jitter=0.010
CSET clkout1_drives=BUFG
CSET clkout1_requested_duty_cycle=50.000
CSET clkout1_requested_out_freq=100.000
CSET clkout1_requested_phase=0.000
CSET clkout2_drives=BUFG
CSET clkout2_requested_duty_cycle=50.000
CSET clkout2_requested_out_freq=100.000
CSET clkout2_requested_phase=0.000
CSET clkout2_used=false
CSET clkout3_drives=BUFG
CSET clkout3_requested_duty_cycle=50.000
CSET clkout3_requested_out_freq=100.000
CSET clkout3_requested_phase=0.000
CSET clkout3_used=false
CSET clkout4_drives=BUFG
CSET clkout4_requested_duty_cycle=50.000
CSET clkout4_requested_out_freq=100.000
CSET clkout4_requested_phase=0.000
CSET clkout4_used=false
CSET clkout5_drives=BUFG
CSET clkout5_requested_duty_cycle=50.000
CSET clkout5_requested_out_freq=100.000
CSET clkout5_requested_phase=0.000
CSET clkout5_used=false
CSET clkout6_drives=BUFG
CSET clkout6_requested_duty_cycle=50.000
CSET clkout6_requested_out_freq=100.000
CSET clkout6_requested_phase=0.000
CSET clkout6_used=false
CSET clkout7_drives=BUFG
CSET clkout7_requested_duty_cycle=50.000
CSET clkout7_requested_out_freq=100.000
CSET clkout7_requested_phase=0.000
CSET clkout7_used=false
CSET clock_mgr_type=MANUAL
CSET component_name=clk_125MHz_to_6MHz
CSET daddr_port=DADDR
CSET dclk_port=DCLK
CSET dcm_clk_feedback=1X
CSET dcm_clk_out1_port=CLK0
CSET dcm_clk_out2_port=CLK0
CSET dcm_clk_out3_port=CLK0
CSET dcm_clk_out4_port=CLK0
CSET dcm_clk_out5_port=CLK0
CSET dcm_clk_out6_port=CLK0
CSET dcm_clkdv_divide=2.0
CSET dcm_clkfx_divide=1
CSET dcm_clkfx_multiply=4
CSET dcm_clkgen_clk_out1_port=CLKFX
CSET dcm_clkgen_clk_out2_port=CLKFX
CSET dcm_clkgen_clk_out3_port=CLKFX
CSET dcm_clkgen_clkfx_divide=1
CSET dcm_clkgen_clkfx_md_max=0.000
CSET dcm_clkgen_clkfx_multiply=4
CSET dcm_clkgen_clkfxdv_divide=2
CSET dcm_clkgen_clkin_period=10.000
CSET dcm_clkgen_notes=None
CSET dcm_clkgen_spread_spectrum=NONE
CSET dcm_clkgen_startup_wait=false
CSET dcm_clkin_divide_by_2=false
CSET dcm_clkin_period=10.000
CSET dcm_clkout_phase_shift=NONE
CSET dcm_deskew_adjust=SYSTEM_SYNCHRONOUS
CSET dcm_notes=None
CSET dcm_phase_shift=0
CSET dcm_pll_cascade=NONE
CSET dcm_startup_wait=false
CSET den_port=DEN
CSET din_port=DIN
CSET dout_port=DOUT
CSET drdy_port=DRDY
CSET dwe_port=DWE
CSET feedback_source=FDBK_AUTO
CSET in_freq_units=Units_MHz
CSET in_jitter_units=Units_UI
CSET input_clk_stopped_port=INPUT_CLK_STOPPED
CSET jitter_options=UI
CSET jitter_sel=No_Jitter
CSET locked_port=LOCKED
CSET mmcm_bandwidth=OPTIMIZED
CSET mmcm_clkfbout_mult_f=6.000
CSET mmcm_clkfbout_phase=0.000
CSET mmcm_clkfbout_use_fine_ps=false
CSET mmcm_clkin1_period=8.000
CSET mmcm_clkin2_period=10.0
CSET mmcm_clkout0_divide_f=125.000
CSET mmcm_clkout0_duty_cycle=0.500
CSET mmcm_clkout0_phase=0.000
CSET mmcm_clkout0_use_fine_ps=false
CSET mmcm_clkout1_divide=1
CSET mmcm_clkout1_duty_cycle=0.500
CSET mmcm_clkout1_phase=0.000
CSET mmcm_clkout1_use_fine_ps=false
CSET mmcm_clkout2_divide=1
CSET mmcm_clkout2_duty_cycle=0.500
CSET mmcm_clkout2_phase=0.000
CSET mmcm_clkout2_use_fine_ps=false
CSET mmcm_clkout3_divide=1
CSET mmcm_clkout3_duty_cycle=0.500
CSET mmcm_clkout3_phase=0.000
CSET mmcm_clkout3_use_fine_ps=false
CSET mmcm_clkout4_cascade=false
CSET mmcm_clkout4_divide=1
CSET mmcm_clkout4_duty_cycle=0.500
CSET mmcm_clkout4_phase=0.000
CSET mmcm_clkout4_use_fine_ps=false
CSET mmcm_clkout5_divide=1
CSET mmcm_clkout5_duty_cycle=0.500
CSET mmcm_clkout5_phase=0.000
CSET mmcm_clkout5_use_fine_ps=false
CSET mmcm_clkout6_divide=1
CSET mmcm_clkout6_duty_cycle=0.500
CSET mmcm_clkout6_phase=0.000
CSET mmcm_clkout6_use_fine_ps=false
CSET mmcm_clock_hold=false
CSET mmcm_compensation=ZHOLD
CSET mmcm_divclk_divide=1
CSET mmcm_notes=None
CSET mmcm_ref_jitter1=0.010
CSET mmcm_ref_jitter2=0.010
CSET mmcm_startup_wait=false
CSET num_out_clks=1
CSET override_dcm=false
CSET override_dcm_clkgen=false
CSET override_mmcm=false
CSET override_pll=false
CSET platform=lin64
CSET pll_bandwidth=OPTIMIZED
CSET pll_clk_feedback=CLKFBOUT
CSET pll_clkfbout_mult=4
CSET pll_clkfbout_phase=0.000
CSET pll_clkin_period=10.000
CSET pll_clkout0_divide=1
CSET pll_clkout0_duty_cycle=0.500
CSET pll_clkout0_phase=0.000
CSET pll_clkout1_divide=1
CSET pll_clkout1_duty_cycle=0.500
CSET pll_clkout1_phase=0.000
CSET pll_clkout2_divide=1
CSET pll_clkout2_duty_cycle=0.500
CSET pll_clkout2_phase=0.000
CSET pll_clkout3_divide=1
CSET pll_clkout3_duty_cycle=0.500
CSET pll_clkout3_phase=0.000
CSET pll_clkout4_divide=1
CSET pll_clkout4_duty_cycle=0.500
CSET pll_clkout4_phase=0.000
CSET pll_clkout5_divide=1
CSET pll_clkout5_duty_cycle=0.500
CSET pll_clkout5_phase=0.000
CSET pll_compensation=SYSTEM_SYNCHRONOUS
CSET pll_divclk_divide=1
CSET pll_notes=None
CSET pll_ref_jitter=0.010
CSET power_down_port=POWER_DOWN
CSET prim_in_freq=125
CSET prim_in_jitter=0.010
CSET prim_source=Global_buffer
CSET primary_port=CLK_IN_125
CSET primitive=MMCM
CSET primtype_sel=MMCM_ADV
CSET psclk_port=PSCLK
CSET psdone_port=PSDONE
CSET psen_port=PSEN
CSET psincdec_port=PSINCDEC
CSET relative_inclk=REL_PRIMARY
CSET reset_port=RESET
CSET secondary_in_freq=100.000
CSET secondary_in_jitter=0.010
CSET secondary_port=CLK_IN2
CSET secondary_source=Single_ended_clock_capable_pin
CSET ss_mod_freq=250
CSET ss_mode=CENTER_HIGH
CSET status_port=STATUS
CSET summary_strings=empty
CSET use_clk_valid=false
CSET use_clkfb_stopped=false
CSET use_dyn_phase_shift=false
CSET use_dyn_reconfig=false
CSET use_freeze=false
CSET use_freq_synth=true
CSET use_inclk_stopped=false
CSET use_inclk_switchover=false
CSET use_locked=false
CSET use_max_i_jitter=false
CSET use_min_o_jitter=false
CSET use_min_power=false
CSET use_phase_alignment=true
CSET use_power_down=false
CSET use_reset=false
CSET use_spread_spectrum=false
CSET use_spread_spectrum_1=false
CSET use_status=false
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2012-05-10T12:44:55Z
# END Extra information
GENERATE
# CRC: 255c3699
/Designs/HAM Constructions/SDRX02A/HDL/modules/core_generator_ml605/fifo_32x512.xco
0,0 → 1,213
##############################################################
#
# Xilinx Core Generator version 14.3
# Date: Tue Apr 29 09:14:51 2014
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:fifo_generator:9.2
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = VHDL
SET device = xc6vlx240t
SET devicefamily = virtex6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = ff1156
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -1
SET verilogsim = false
SET vhdlsim = true
# END Project Options
# BEGIN Select
SELECT Fifo_Generator xilinx.com:ip:fifo_generator:9.2
# END Select
# BEGIN Parameters
CSET add_ngc_constraint_axi=false
CSET almost_empty_flag=false
CSET almost_full_flag=false
CSET aruser_width=1
CSET awuser_width=1
CSET axi_address_width=32
CSET axi_data_width=64
CSET axi_type=AXI4_Stream
CSET axis_type=FIFO
CSET buser_width=1
CSET clock_enable_type=Slave_Interface_Clock_Enable
CSET clock_type_axi=Common_Clock
CSET component_name=fifo_32x512
CSET data_count=false
CSET data_count_width=9
CSET disable_timing_violations=false
CSET disable_timing_violations_axi=false
CSET dout_reset_value=0
CSET empty_threshold_assert_value=2
CSET empty_threshold_assert_value_axis=1022
CSET empty_threshold_assert_value_rach=1022
CSET empty_threshold_assert_value_rdch=1022
CSET empty_threshold_assert_value_wach=1022
CSET empty_threshold_assert_value_wdch=1022
CSET empty_threshold_assert_value_wrch=1022
CSET empty_threshold_negate_value=3
CSET enable_aruser=false
CSET enable_awuser=false
CSET enable_buser=false
CSET enable_common_overflow=false
CSET enable_common_underflow=false
CSET enable_data_counts_axis=false
CSET enable_data_counts_rach=false
CSET enable_data_counts_rdch=false
CSET enable_data_counts_wach=false
CSET enable_data_counts_wdch=false
CSET enable_data_counts_wrch=false
CSET enable_ecc=false
CSET enable_ecc_axis=false
CSET enable_ecc_rach=false
CSET enable_ecc_rdch=false
CSET enable_ecc_wach=false
CSET enable_ecc_wdch=false
CSET enable_ecc_wrch=false
CSET enable_read_channel=false
CSET enable_read_pointer_increment_by2=false
CSET enable_reset_synchronization=true
CSET enable_ruser=false
CSET enable_tdata=false
CSET enable_tdest=false
CSET enable_tid=false
CSET enable_tkeep=false
CSET enable_tlast=false
CSET enable_tready=true
CSET enable_tstrobe=false
CSET enable_tuser=false
CSET enable_write_channel=false
CSET enable_wuser=false
CSET fifo_application_type_axis=Data_FIFO
CSET fifo_application_type_rach=Data_FIFO
CSET fifo_application_type_rdch=Data_FIFO
CSET fifo_application_type_wach=Data_FIFO
CSET fifo_application_type_wdch=Data_FIFO
CSET fifo_application_type_wrch=Data_FIFO
CSET fifo_implementation=Common_Clock_Block_RAM
CSET fifo_implementation_axis=Common_Clock_Block_RAM
CSET fifo_implementation_rach=Common_Clock_Block_RAM
CSET fifo_implementation_rdch=Common_Clock_Block_RAM
CSET fifo_implementation_wach=Common_Clock_Block_RAM
CSET fifo_implementation_wdch=Common_Clock_Block_RAM
CSET fifo_implementation_wrch=Common_Clock_Block_RAM
CSET full_flags_reset_value=0
CSET full_threshold_assert_value=510
CSET full_threshold_assert_value_axis=1023
CSET full_threshold_assert_value_rach=1023
CSET full_threshold_assert_value_rdch=1023
CSET full_threshold_assert_value_wach=1023
CSET full_threshold_assert_value_wdch=1023
CSET full_threshold_assert_value_wrch=1023
CSET full_threshold_negate_value=509
CSET id_width=4
CSET inject_dbit_error=false
CSET inject_dbit_error_axis=false
CSET inject_dbit_error_rach=false
CSET inject_dbit_error_rdch=false
CSET inject_dbit_error_wach=false
CSET inject_dbit_error_wdch=false
CSET inject_dbit_error_wrch=false
CSET inject_sbit_error=false
CSET inject_sbit_error_axis=false
CSET inject_sbit_error_rach=false
CSET inject_sbit_error_rdch=false
CSET inject_sbit_error_wach=false
CSET inject_sbit_error_wdch=false
CSET inject_sbit_error_wrch=false
CSET input_data_width=32
CSET input_depth=512
CSET input_depth_axis=1024
CSET input_depth_rach=16
CSET input_depth_rdch=1024
CSET input_depth_wach=16
CSET input_depth_wdch=1024
CSET input_depth_wrch=16
CSET interface_type=Native
CSET output_data_width=32
CSET output_depth=512
CSET overflow_flag=false
CSET overflow_flag_axi=false
CSET overflow_sense=Active_High
CSET overflow_sense_axi=Active_High
CSET performance_options=Standard_FIFO
CSET programmable_empty_type=No_Programmable_Empty_Threshold
CSET programmable_empty_type_axis=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wrch=No_Programmable_Empty_Threshold
CSET programmable_full_type=No_Programmable_Full_Threshold
CSET programmable_full_type_axis=No_Programmable_Full_Threshold
CSET programmable_full_type_rach=No_Programmable_Full_Threshold
CSET programmable_full_type_rdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wach=No_Programmable_Full_Threshold
CSET programmable_full_type_wdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wrch=No_Programmable_Full_Threshold
CSET rach_type=FIFO
CSET rdch_type=FIFO
CSET read_clock_frequency=1
CSET read_data_count=false
CSET read_data_count_width=9
CSET register_slice_mode_axis=Fully_Registered
CSET register_slice_mode_rach=Fully_Registered
CSET register_slice_mode_rdch=Fully_Registered
CSET register_slice_mode_wach=Fully_Registered
CSET register_slice_mode_wdch=Fully_Registered
CSET register_slice_mode_wrch=Fully_Registered
CSET reset_pin=true
CSET reset_type=Synchronous_Reset
CSET ruser_width=1
CSET synchronization_stages=2
CSET synchronization_stages_axi=2
CSET tdata_width=64
CSET tdest_width=4
CSET tid_width=8
CSET tkeep_width=4
CSET tstrb_width=4
CSET tuser_width=4
CSET underflow_flag=false
CSET underflow_flag_axi=false
CSET underflow_sense=Active_High
CSET underflow_sense_axi=Active_High
CSET use_clock_enable=false
CSET use_dout_reset=true
CSET use_embedded_registers=false
CSET use_extra_logic=false
CSET valid_flag=true
CSET valid_sense=Active_High
CSET wach_type=FIFO
CSET wdch_type=FIFO
CSET wrch_type=FIFO
CSET write_acknowledge_flag=false
CSET write_acknowledge_sense=Active_High
CSET write_clock_frequency=1
CSET write_data_count=false
CSET write_data_count_width=9
CSET wuser_width=1
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2012-06-23T13:35:37Z
# END Extra information
GENERATE
# CRC: e2c6d431
/Designs/HAM Constructions/SDRX02A/HDL/modules/core_generator_ml605/fifo_32x512_dualclk_fwft.xco
0,0 → 1,213
##############################################################
#
# Xilinx Core Generator version 14.3
# Date: Tue May 6 09:52:07 2014
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:fifo_generator:9.3
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = VHDL
SET device = xc6vlx240t
SET devicefamily = virtex6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = ff1156
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -1
SET verilogsim = false
SET vhdlsim = true
# END Project Options
# BEGIN Select
SELECT FIFO_Generator xilinx.com:ip:fifo_generator:9.3
# END Select
# BEGIN Parameters
CSET add_ngc_constraint_axi=false
CSET almost_empty_flag=false
CSET almost_full_flag=false
CSET aruser_width=1
CSET awuser_width=1
CSET axi_address_width=32
CSET axi_data_width=64
CSET axi_type=AXI4_Stream
CSET axis_type=FIFO
CSET buser_width=1
CSET clock_enable_type=Slave_Interface_Clock_Enable
CSET clock_type_axi=Common_Clock
CSET component_name=fifo_32x512_dualclk_fwft
CSET data_count=false
CSET data_count_width=9
CSET disable_timing_violations=false
CSET disable_timing_violations_axi=false
CSET dout_reset_value=0
CSET empty_threshold_assert_value=4
CSET empty_threshold_assert_value_axis=1022
CSET empty_threshold_assert_value_rach=1022
CSET empty_threshold_assert_value_rdch=1022
CSET empty_threshold_assert_value_wach=1022
CSET empty_threshold_assert_value_wdch=1022
CSET empty_threshold_assert_value_wrch=1022
CSET empty_threshold_negate_value=5
CSET enable_aruser=false
CSET enable_awuser=false
CSET enable_buser=false
CSET enable_common_overflow=false
CSET enable_common_underflow=false
CSET enable_data_counts_axis=false
CSET enable_data_counts_rach=false
CSET enable_data_counts_rdch=false
CSET enable_data_counts_wach=false
CSET enable_data_counts_wdch=false
CSET enable_data_counts_wrch=false
CSET enable_ecc=false
CSET enable_ecc_axis=false
CSET enable_ecc_rach=false
CSET enable_ecc_rdch=false
CSET enable_ecc_wach=false
CSET enable_ecc_wdch=false
CSET enable_ecc_wrch=false
CSET enable_read_channel=false
CSET enable_read_pointer_increment_by2=false
CSET enable_reset_synchronization=true
CSET enable_ruser=false
CSET enable_tdata=false
CSET enable_tdest=false
CSET enable_tid=false
CSET enable_tkeep=false
CSET enable_tlast=false
CSET enable_tready=true
CSET enable_tstrobe=false
CSET enable_tuser=false
CSET enable_write_channel=false
CSET enable_wuser=false
CSET fifo_application_type_axis=Data_FIFO
CSET fifo_application_type_rach=Data_FIFO
CSET fifo_application_type_rdch=Data_FIFO
CSET fifo_application_type_wach=Data_FIFO
CSET fifo_application_type_wdch=Data_FIFO
CSET fifo_application_type_wrch=Data_FIFO
CSET fifo_implementation=Independent_Clocks_Block_RAM
CSET fifo_implementation_axis=Common_Clock_Block_RAM
CSET fifo_implementation_rach=Common_Clock_Block_RAM
CSET fifo_implementation_rdch=Common_Clock_Block_RAM
CSET fifo_implementation_wach=Common_Clock_Block_RAM
CSET fifo_implementation_wdch=Common_Clock_Block_RAM
CSET fifo_implementation_wrch=Common_Clock_Block_RAM
CSET full_flags_reset_value=1
CSET full_threshold_assert_value=511
CSET full_threshold_assert_value_axis=1023
CSET full_threshold_assert_value_rach=1023
CSET full_threshold_assert_value_rdch=1023
CSET full_threshold_assert_value_wach=1023
CSET full_threshold_assert_value_wdch=1023
CSET full_threshold_assert_value_wrch=1023
CSET full_threshold_negate_value=510
CSET id_width=4
CSET inject_dbit_error=false
CSET inject_dbit_error_axis=false
CSET inject_dbit_error_rach=false
CSET inject_dbit_error_rdch=false
CSET inject_dbit_error_wach=false
CSET inject_dbit_error_wdch=false
CSET inject_dbit_error_wrch=false
CSET inject_sbit_error=false
CSET inject_sbit_error_axis=false
CSET inject_sbit_error_rach=false
CSET inject_sbit_error_rdch=false
CSET inject_sbit_error_wach=false
CSET inject_sbit_error_wdch=false
CSET inject_sbit_error_wrch=false
CSET input_data_width=32
CSET input_depth=512
CSET input_depth_axis=1024
CSET input_depth_rach=16
CSET input_depth_rdch=1024
CSET input_depth_wach=16
CSET input_depth_wdch=1024
CSET input_depth_wrch=16
CSET interface_type=Native
CSET output_data_width=32
CSET output_depth=512
CSET overflow_flag=false
CSET overflow_flag_axi=false
CSET overflow_sense=Active_High
CSET overflow_sense_axi=Active_High
CSET performance_options=First_Word_Fall_Through
CSET programmable_empty_type=No_Programmable_Empty_Threshold
CSET programmable_empty_type_axis=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wrch=No_Programmable_Empty_Threshold
CSET programmable_full_type=No_Programmable_Full_Threshold
CSET programmable_full_type_axis=No_Programmable_Full_Threshold
CSET programmable_full_type_rach=No_Programmable_Full_Threshold
CSET programmable_full_type_rdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wach=No_Programmable_Full_Threshold
CSET programmable_full_type_wdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wrch=No_Programmable_Full_Threshold
CSET rach_type=FIFO
CSET rdch_type=FIFO
CSET read_clock_frequency=1
CSET read_data_count=false
CSET read_data_count_width=9
CSET register_slice_mode_axis=Fully_Registered
CSET register_slice_mode_rach=Fully_Registered
CSET register_slice_mode_rdch=Fully_Registered
CSET register_slice_mode_wach=Fully_Registered
CSET register_slice_mode_wdch=Fully_Registered
CSET register_slice_mode_wrch=Fully_Registered
CSET reset_pin=true
CSET reset_type=Asynchronous_Reset
CSET ruser_width=1
CSET synchronization_stages=2
CSET synchronization_stages_axi=2
CSET tdata_width=64
CSET tdest_width=4
CSET tid_width=8
CSET tkeep_width=4
CSET tstrb_width=4
CSET tuser_width=4
CSET underflow_flag=false
CSET underflow_flag_axi=false
CSET underflow_sense=Active_High
CSET underflow_sense_axi=Active_High
CSET use_clock_enable=false
CSET use_dout_reset=false
CSET use_embedded_registers=false
CSET use_extra_logic=false
CSET valid_flag=true
CSET valid_sense=Active_High
CSET wach_type=FIFO
CSET wdch_type=FIFO
CSET wrch_type=FIFO
CSET write_acknowledge_flag=false
CSET write_acknowledge_sense=Active_High
CSET write_clock_frequency=1
CSET write_data_count=false
CSET write_data_count_width=9
CSET wuser_width=1
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2012-07-25T18:11:59Z
# END Extra information
GENERATE
# CRC: 19014e08
/Designs/HAM Constructions/SDRX02A/HDL/modules/core_generator_ml605/fifo_32x512_walmostfull.xco
0,0 → 1,213
##############################################################
#
# Xilinx Core Generator version 14.3
# Date: Tue May 6 09:54:30 2014
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:fifo_generator:9.3
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = VHDL
SET device = xc6vlx240t
SET devicefamily = virtex6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = ff1156
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -1
SET verilogsim = false
SET vhdlsim = true
# END Project Options
# BEGIN Select
SELECT FIFO_Generator xilinx.com:ip:fifo_generator:9.3
# END Select
# BEGIN Parameters
CSET add_ngc_constraint_axi=false
CSET almost_empty_flag=false
CSET almost_full_flag=false
CSET aruser_width=1
CSET awuser_width=1
CSET axi_address_width=32
CSET axi_data_width=64
CSET axi_type=AXI4_Stream
CSET axis_type=FIFO
CSET buser_width=1
CSET clock_enable_type=Slave_Interface_Clock_Enable
CSET clock_type_axi=Common_Clock
CSET component_name=fifo_32x512_walmostfull
CSET data_count=false
CSET data_count_width=9
CSET disable_timing_violations=false
CSET disable_timing_violations_axi=false
CSET dout_reset_value=0
CSET empty_threshold_assert_value=2
CSET empty_threshold_assert_value_axis=1022
CSET empty_threshold_assert_value_rach=1022
CSET empty_threshold_assert_value_rdch=1022
CSET empty_threshold_assert_value_wach=1022
CSET empty_threshold_assert_value_wdch=1022
CSET empty_threshold_assert_value_wrch=1022
CSET empty_threshold_negate_value=3
CSET enable_aruser=false
CSET enable_awuser=false
CSET enable_buser=false
CSET enable_common_overflow=false
CSET enable_common_underflow=false
CSET enable_data_counts_axis=false
CSET enable_data_counts_rach=false
CSET enable_data_counts_rdch=false
CSET enable_data_counts_wach=false
CSET enable_data_counts_wdch=false
CSET enable_data_counts_wrch=false
CSET enable_ecc=false
CSET enable_ecc_axis=false
CSET enable_ecc_rach=false
CSET enable_ecc_rdch=false
CSET enable_ecc_wach=false
CSET enable_ecc_wdch=false
CSET enable_ecc_wrch=false
CSET enable_read_channel=false
CSET enable_read_pointer_increment_by2=false
CSET enable_reset_synchronization=true
CSET enable_ruser=false
CSET enable_tdata=false
CSET enable_tdest=false
CSET enable_tid=false
CSET enable_tkeep=false
CSET enable_tlast=false
CSET enable_tready=true
CSET enable_tstrobe=false
CSET enable_tuser=false
CSET enable_write_channel=false
CSET enable_wuser=false
CSET fifo_application_type_axis=Data_FIFO
CSET fifo_application_type_rach=Data_FIFO
CSET fifo_application_type_rdch=Data_FIFO
CSET fifo_application_type_wach=Data_FIFO
CSET fifo_application_type_wdch=Data_FIFO
CSET fifo_application_type_wrch=Data_FIFO
CSET fifo_implementation=Common_Clock_Block_RAM
CSET fifo_implementation_axis=Common_Clock_Block_RAM
CSET fifo_implementation_rach=Common_Clock_Block_RAM
CSET fifo_implementation_rdch=Common_Clock_Block_RAM
CSET fifo_implementation_wach=Common_Clock_Block_RAM
CSET fifo_implementation_wdch=Common_Clock_Block_RAM
CSET fifo_implementation_wrch=Common_Clock_Block_RAM
CSET full_flags_reset_value=0
CSET full_threshold_assert_value=400
CSET full_threshold_assert_value_axis=1023
CSET full_threshold_assert_value_rach=1023
CSET full_threshold_assert_value_rdch=1023
CSET full_threshold_assert_value_wach=1023
CSET full_threshold_assert_value_wdch=1023
CSET full_threshold_assert_value_wrch=1023
CSET full_threshold_negate_value=399
CSET id_width=4
CSET inject_dbit_error=false
CSET inject_dbit_error_axis=false
CSET inject_dbit_error_rach=false
CSET inject_dbit_error_rdch=false
CSET inject_dbit_error_wach=false
CSET inject_dbit_error_wdch=false
CSET inject_dbit_error_wrch=false
CSET inject_sbit_error=false
CSET inject_sbit_error_axis=false
CSET inject_sbit_error_rach=false
CSET inject_sbit_error_rdch=false
CSET inject_sbit_error_wach=false
CSET inject_sbit_error_wdch=false
CSET inject_sbit_error_wrch=false
CSET input_data_width=32
CSET input_depth=512
CSET input_depth_axis=1024
CSET input_depth_rach=16
CSET input_depth_rdch=1024
CSET input_depth_wach=16
CSET input_depth_wdch=1024
CSET input_depth_wrch=16
CSET interface_type=Native
CSET output_data_width=32
CSET output_depth=512
CSET overflow_flag=false
CSET overflow_flag_axi=false
CSET overflow_sense=Active_High
CSET overflow_sense_axi=Active_High
CSET performance_options=Standard_FIFO
CSET programmable_empty_type=No_Programmable_Empty_Threshold
CSET programmable_empty_type_axis=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_rdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wach=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wdch=No_Programmable_Empty_Threshold
CSET programmable_empty_type_wrch=No_Programmable_Empty_Threshold
CSET programmable_full_type=Single_Programmable_Full_Threshold_Constant
CSET programmable_full_type_axis=No_Programmable_Full_Threshold
CSET programmable_full_type_rach=No_Programmable_Full_Threshold
CSET programmable_full_type_rdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wach=No_Programmable_Full_Threshold
CSET programmable_full_type_wdch=No_Programmable_Full_Threshold
CSET programmable_full_type_wrch=No_Programmable_Full_Threshold
CSET rach_type=FIFO
CSET rdch_type=FIFO
CSET read_clock_frequency=1
CSET read_data_count=false
CSET read_data_count_width=9
CSET register_slice_mode_axis=Fully_Registered
CSET register_slice_mode_rach=Fully_Registered
CSET register_slice_mode_rdch=Fully_Registered
CSET register_slice_mode_wach=Fully_Registered
CSET register_slice_mode_wdch=Fully_Registered
CSET register_slice_mode_wrch=Fully_Registered
CSET reset_pin=true
CSET reset_type=Synchronous_Reset
CSET ruser_width=1
CSET synchronization_stages=2
CSET synchronization_stages_axi=2
CSET tdata_width=64
CSET tdest_width=4
CSET tid_width=8
CSET tkeep_width=4
CSET tstrb_width=4
CSET tuser_width=4
CSET underflow_flag=false
CSET underflow_flag_axi=false
CSET underflow_sense=Active_High
CSET underflow_sense_axi=Active_High
CSET use_clock_enable=false
CSET use_dout_reset=false
CSET use_embedded_registers=false
CSET use_extra_logic=false
CSET valid_flag=true
CSET valid_sense=Active_High
CSET wach_type=FIFO
CSET wdch_type=FIFO
CSET wrch_type=FIFO
CSET write_acknowledge_flag=false
CSET write_acknowledge_sense=Active_High
CSET write_clock_frequency=1
CSET write_data_count=false
CSET write_data_count_width=9
CSET wuser_width=1
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2012-07-25T18:11:59Z
# END Extra information
GENERATE
# CRC: 53dc1af8
/Designs/HAM Constructions/SDRX02A/HDL/modules/fifo_related/fifo_to_enable.vhd
0,0 → 1,81
-- A bridge between the read side of a native FIFO and the Flexelerator's "enable" signal technique
 
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
 
entity fifo_to_enable is
port(
 
-- Input from FIFO:
din : in std_logic_vector;
rden : out std_logic;
empty : in std_logic;
-- Output with enable:
data : out std_logic_vector;
valid : out std_logic;
enable : in std_logic;
clk : in std_logic;
reset : in std_logic
);
end entity;
 
architecture behavioral of fifo_to_enable is
 
signal s_rden : std_logic := '0';
signal s_rden_d : std_logic := '0';
signal s_valid : std_logic := '0';
subtype t_data is std_logic_vector( din'range );
type t_data_buffer is array( 1 to 2 ) of t_data;
signal s_data_buffer : t_data_buffer := ( others => ( others => '0' ) );
signal s_cntr : natural range 0 to 3;
begin
s_rden <= '1' when empty = '0' and enable = '1' and reset = '0' and s_cntr < 3 else '0';
rden <= s_rden;
s_valid <= '1' when s_cntr > 0 and enable = '1' and reset = '0' else '0';
valid <= s_valid;
data <= s_data_buffer( 1 );
-- Delayed rden:
delayed_rden : process( clk ) is
begin
if( rising_edge( clk ) ) then
s_rden_d <= s_rden;
end if;
end process;
data_manipulation : process( clk ) is
begin
if( rising_edge( clk ) ) then
if( s_valid = '1' ) then
s_data_buffer(1) <= s_data_buffer(2);
--s_data_buffer(2) <= s_data_buffer(3);
end if;
if( reset = '1' ) then
s_cntr <= 0;
elsif( s_rden_d = '1' and s_valid = '0' ) then
s_cntr <= s_cntr + 1;
s_data_buffer( s_cntr + 1 ) <= din;
elsif( s_rden_d = '1' and s_valid = '1' ) then
s_data_buffer( s_cntr ) <= din;
elsif( s_rden_d = '0' and s_valid = '1' ) then
s_cntr <= s_cntr - 1;
end if;
end if;
end process;
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/information/information_block.vhd
0,0 → 1,117
-- Provides information about the firmware.
-- This block is written as a generic memory that sends data based on the requested address.
--
-- Generally this block is connected to the 'control' interface in the userlogiccmp_forxilly block and the user interacts with it using the 'control' files.
-- The information_data package should contain several mandatory constants as well as the contents of the memory. Generally, the first four 32-bit-tuples are occupied by a unique GUID that identifies the firmware.
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
library utilities;
use utilities.utilities.all;
 
library information;
use information.information_data.all;
 
----------------------------------------------------------------
-- NOTE: No range check on the i_data requested address.
 
entity information_block is
port (
 
clk : in std_logic;
rst : in std_logic;
-- Input side:
i_data : in std_logic_vector( 31 downto 0 );
i_valid : in std_logic;
o_enable : out std_logic;
-- Output side:
o_data : out std_logic_vector( 31 downto 0 );
o_valid : out std_logic;
i_enable : in std_logic
);
end entity;
 
architecture rtl of information_block is
 
-- data in buffer
signal buffer_valid : std_logic;
signal buffer_data : std_logic_vector( o_data'range );
-- data from the memory
signal mem_valid : std_logic;
signal mem_data : std_logic_vector( o_data'range );
signal oo_valid : std_logic;
signal addr : unsigned( log2( C_INFO_NUMDATA ) - 1 downto 0 );
--signal i_valid_d : std_logic;
 
constant C_RESVAL : std_logic_vector( C_INFO_BITWIDTH -1 downto 0 ) := ( others => '0' );
 
-- Memory content:
subtype t_memdata is t_twodim_stdlogic( C_INFO_NUMDATA - 1 downto 0, C_INFO_BITWIDTH - 1 downto 0 );
constant C_MEMDATA : t_memdata := stdlogicvector_to_twodim( C_INFO_DATA, C_INFO_NUMDATA, C_INFO_BITWIDTH );
 
begin
 
o_enable <= i_enable;
o_valid <= oo_valid and i_enable;
o_data <= buffer_data when buffer_valid = '1' else
mem_data;
oo_valid <= buffer_valid when buffer_valid = '1' else
mem_valid;
valid_handling: process( clk )
begin
if( rising_edge(clk) ) then
mem_valid <= i_valid;
end if;
end process;
addr <= unsigned( i_data( addr'range ) );
-- inferred bram:
inferred_bram_inst : entity utilities.inferred_bram
generic map(
G_RAM_CONTENT => C_MEMDATA,
G_WIDTH => C_INFO_BITWIDTH,
G_SIZE => C_INFO_NUMDATA,
G_RESVAL_A => C_RESVAL
)
port map(
i_clka => clk,
i_ena => '1',
i_wea => '0',
i_resa => '0',
i_addra => addr,
i_dataa => ( C_INFO_BITWIDTH - 1 downto 0 => '0' ),
o_dataa => mem_data
);
outp_data : process( clk )
begin
if( rising_edge(clk) ) then
if( rst = '1' ) then
buffer_valid <= '0';
else
if( i_enable = '1' ) then
buffer_valid <= '0';
elsif( buffer_valid = '0' ) then
buffer_valid <= mem_valid;
buffer_data <= mem_data;
end if;
end if;
end if;
end process;
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/sychro1/clock_divider.vhd
0,0 → 1,68
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
entity clock_divider is
generic (
G_DIVISOR : positive := 2
);
port (
i_clk : in std_logic;
i_rst : in std_logic;
o_clk : out std_logic
);
end entity clock_divider;
 
architecture behavioral of clock_divider is
 
subtype t_counter is natural range 0 to ( G_DIVISOR - 1 );
signal s_counter : t_counter := 0;
 
constant C_COUNTER : t_counter := G_DIVISOR / 2 - 1;
 
signal s_clk_divided : std_logic;
attribute clock_signal : string;
attribute clock_signal of s_clk_divided : signal is "yes";
 
begin
 
assert ( G_DIVISOR > 1 ) report "The divisor should be greater than 1" severity failure;
counting : process( i_clk )
begin
if( rising_edge(i_clk) ) then
if( i_rst = '1' ) then
s_counter <= 0;
s_clk_divided <= '0';
else
if( s_counter = t_counter'high ) then
s_counter <= 0;
s_clk_divided <= '0';
else
s_counter <= s_counter + 1;
if( s_counter = C_COUNTER ) then
s_clk_divided <= '1';
end if;
end if;
end if;
end if;
end process counting;
BUFR_inst : BUFR
generic map (
BUFR_DIVIDE => "BYPASS", -- "BYPASS", "1", "2", "3", "4", "5", "6", "7", "8"
SIM_DEVICE => "VIRTEX6") -- Specify target device, "VIRTEX4", "VIRTEX5", "VIRTEX6"
port map (
O => o_clk, -- Clock buffer output
CE => '1', -- Clock enable input
CLR => '0', -- Clock buffer reset input
I => s_clk_divided -- Clock buffer input
);
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/sychro1/up_counter.vhd
0,0 → 1,57
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
entity up_counter is
generic (
G_MIN_NUMBER : natural := 0;
G_MAX_NUMBER : natural := 10
);
port (
 
i_clk : in std_logic;
i_rst : in std_logic;
-- Count when this input is '1'
i_valid : in std_logic;
-- Output the actual number
o_data : out natural := G_MIN_NUMBER;
o_carry : out std_logic := '0'
);
end up_counter;
 
architecture rtl of up_counter is
 
signal number : natural range G_MIN_NUMBER to G_MAX_NUMBER := G_MIN_NUMBER;
 
begin
 
o_data <= number;
counter : process( i_clk )
begin
if( rising_edge( i_clk ) ) then
o_carry <= '0';
if( i_rst = '1' ) then
number <= G_MIN_NUMBER;
elsif( i_valid = '1' ) then
-- count up:
if( number = G_MAX_NUMBER ) then
number <= G_MIN_NUMBER;
o_carry <= '1';
else
number <= number + 1;
end if;
end if;
end if;
end process;
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/sychro1/up_counter_stdlv.vhd
0,0 → 1,57
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
entity up_counter_stdlv is
generic (
G_BITS : positive := 8;
G_MIN_NUMBER : std_logic_vector;
G_MAX_NUMBER : std_logic_vector
);
port (
 
i_clk : in std_logic;
i_rst : in std_logic;
-- Count when this input is '1'
i_valid : in std_logic;
-- Output the actual number
o_data : out std_logic_vector( G_BITS-1 downto 0 );
o_carry : out std_logic := '0'
);
end up_counter_stdlv;
 
architecture rtl of up_counter_stdlv is
 
signal number : std_logic_vector( G_BITS-1 downto 0 );
 
begin
 
o_data <= number;
counter : process( i_clk )
begin
if( rising_edge( i_clk ) ) then
o_carry <= '0';
if( i_rst = '1' ) then
number <= G_MIN_NUMBER;
elsif( i_valid = '1' ) then
-- count up:
if( number = G_MAX_NUMBER ) then
number <= G_MIN_NUMBER;
o_carry <= '1';
else
number <= std_logic_vector( unsigned(number) + to_unsigned(1,G_BITS) );
end if;
end if;
end if;
end process;
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/modules/xilly/xilly_userlogiccmp_wrapper.vhd
0,0 → 1,248
library ieee;
use ieee.std_logic_1164.all;
 
library fifo_related;
 
entity xilly_userlogiccmp_wrapper is
port (
i_clk : in std_logic;
i_rst : in std_logic;
user_r_control_r_rden : in std_logic;
user_r_control_r_empty : out std_logic := '1';
user_r_control_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_w_control_w_wren : in std_logic;
user_w_control_w_full : out std_logic := '0';
user_w_control_w_data : in std_logic_vector(31 DOWNTO 0);
user_r_data1_r_rden : in std_logic;
user_r_data1_r_empty : out std_logic := '1';
user_r_data1_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_w_data1_w_wren : in std_logic;
user_w_data1_w_full : out std_logic := '0';
user_w_data1_w_data : in std_logic_vector(31 DOWNTO 0);
user_r_data2_r_rden : in std_logic;
user_r_data2_r_empty : out std_logic := '1';
user_r_data2_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_w_data2_w_wren : in std_logic;
user_w_data2_w_full : out std_logic := '0';
user_w_data2_w_data : in std_logic_vector(31 DOWNTO 0)
);
end entity;
 
architecture behavioral of xilly_userlogiccmp_wrapper is
 
component user_logic_cmp
port (
i_clk : in std_logic;
i_rst : in std_logic;
-- data1 interface:
i_data1in_data : in std_logic_vector( 31 downto 0 );
i_data1in_valid : in std_logic;
o_data1in_enable : out std_logic;
o_data1out_data : out std_logic_vector( 31 downto 0 );
o_data1out_valid : out std_logic;
i_data1out_enable : in std_logic;
-- data2 interface:
i_data2in_data : in std_logic_vector( 31 downto 0 );
i_data2in_valid : in std_logic;
o_data2in_enable : out std_logic := '1';
o_data2out_data : out std_logic_vector( 31 downto 0 );
o_data2out_valid : out std_logic := '0';
i_data2out_enable : in std_logic;
-- control interface:
i_controlin_data : in std_logic_vector( 31 downto 0 );
i_controlin_valid : in std_logic;
o_controlin_enable : out std_logic := '1';
o_controlout_data : out std_logic_vector( 31 downto 0 );
o_controlout_valid : out std_logic := '0';
i_controlout_enable : in std_logic
);
end component;
component fifo_32x512
port (
clk: IN std_logic;
srst: IN std_logic;
din: IN std_logic_vector(31 downto 0) := ( others => '0' );
wr_en: IN std_logic := '0';
rd_en: IN std_logic;
dout: OUT std_logic_vector(31 downto 0);
valid: OUT std_logic;
full: OUT std_logic;
empty: OUT std_logic
);
end component;
 
-- data1 signals
signal s_data1_ffin2fte_data : std_logic_vector( 31 downto 0 );
signal s_data1_ffin2fte_rden : std_logic;
signal s_data1_ffin2fte_empty : std_logic;
signal s_data1_fte2ul_data : std_logic_vector( 31 downto 0 );
signal s_data1_fte2ul_valid : std_logic;
signal s_data1_fte2ul_enable : std_logic;
signal s_data1_ul2ffout_data : std_logic_vector( 31 downto 0 );
signal s_data1_ul2ffout_valid : std_logic;
signal s_data1_ul2ffout_enable : std_logic;
signal s_data1_ul2ffout_full : std_logic;
-- data2 signals
signal s_data2_ffin2fte_data : std_logic_vector( 31 downto 0 );
signal s_data2_ffin2fte_rden : std_logic;
signal s_data2_ffin2fte_empty : std_logic;
signal s_data2_fte2ul_data : std_logic_vector( 31 downto 0 );
signal s_data2_fte2ul_valid : std_logic;
signal s_data2_fte2ul_enable : std_logic;
signal s_data2_ul2ffout_data : std_logic_vector( 31 downto 0 );
signal s_data2_ul2ffout_valid : std_logic;
signal s_data2_ul2ffout_enable : std_logic;
signal s_data2_ul2ffout_full : std_logic;
-- control signals
signal s_control_ffin2fte_data : std_logic_vector( 31 downto 0 );
signal s_control_ffin2fte_rden : std_logic;
signal s_control_ffin2fte_empty : std_logic;
signal s_control_fte2ul_data : std_logic_vector( 31 downto 0 );
signal s_control_fte2ul_valid : std_logic;
signal s_control_fte2ul_enable : std_logic;
signal s_control_ul2ffout_data : std_logic_vector( 31 downto 0 );
signal s_control_ul2ffout_valid : std_logic;
signal s_control_ul2ffout_enable : std_logic;
signal s_control_ul2ffout_full : std_logic;
begin
------------------------------------------------------
 
--data1_gen : if( C_USES_DATA1_INTERFACE = '1' ) generate
-- FIFO_IN instantiation:
data1_fifo_in_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => user_w_data1_w_data, wr_en => user_w_data1_w_wren, full => user_w_data1_w_full,
dout => s_data1_ffin2fte_data, rd_en => s_data1_ffin2fte_rden, empty => s_data1_ffin2fte_empty,
valid => open );
-- FIFO_to_enable instantiation:
data1_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
port map (
clk => i_clk, reset => i_rst,
din => s_data1_ffin2fte_data, rden => s_data1_ffin2fte_rden, empty => s_data1_ffin2fte_empty,
data => s_data1_fte2ul_data, valid => s_data1_fte2ul_valid, enable => s_data1_fte2ul_enable );
-- FIFO_OUT instantiation:
data1_fifo_out_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => s_data1_ul2ffout_data, wr_en => s_data1_ul2ffout_valid, full => s_data1_ul2ffout_full,
dout => user_r_data1_r_data, rd_en => user_r_data1_r_rden, empty => user_r_data1_r_empty,
valid => open );
s_data1_ul2ffout_enable <= not s_data1_ul2ffout_full;
-- generate;
------------------------------------------------------
--data2_gen : if( C_USES_DATA2_INTERFACE = '1' ) generate
-- FIFO_IN instantiation:
data2_fifo_in_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => user_w_data2_w_data, wr_en => user_w_data2_w_wren, full => user_w_data2_w_full,
dout => s_data2_ffin2fte_data, rd_en => s_data2_ffin2fte_rden, empty => s_data2_ffin2fte_empty,
valid => open );
-- FIFO_to_enable instantiation:
data2_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
port map (
clk => i_clk, reset => i_rst,
din => s_data2_ffin2fte_data, rden => s_data2_ffin2fte_rden, empty => s_data2_ffin2fte_empty,
data => s_data2_fte2ul_data, valid => s_data2_fte2ul_valid, enable => s_data2_fte2ul_enable );
-- FIFO_OUT instantiation:
data2_fifo_out_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => s_data2_ul2ffout_data, wr_en => s_data2_ul2ffout_valid, full => s_data2_ul2ffout_full,
dout => user_r_data2_r_data, rd_en => user_r_data2_r_rden, empty => user_r_data2_r_empty,
valid => open );
s_data2_ul2ffout_enable <= not s_data2_ul2ffout_full;
 
--end generate;
----------------------------------------------------------
--control_gen : if( C_USES_CONTROL_INTERFACE = '1' ) generate
-- FIFO_IN instantiation:
control_fifo_in_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => user_w_control_w_data, wr_en => user_w_control_w_wren, full => user_w_control_w_full,
dout => s_control_ffin2fte_data, rd_en => s_control_ffin2fte_rden, empty => s_control_ffin2fte_empty,
valid => open );
-- FIFO_to_enable instantiation:
control_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
port map (
clk => i_clk, reset => i_rst,
din => s_control_ffin2fte_data, rden => s_control_ffin2fte_rden, empty => s_control_ffin2fte_empty,
data => s_control_fte2ul_data, valid => s_control_fte2ul_valid, enable => s_control_fte2ul_enable );
-- FIFO_OUT instantiation:
control_fifo_out_inst : fifo_32x512
port map (
clk => i_clk, srst => i_rst,
din => s_control_ul2ffout_data, wr_en => s_control_ul2ffout_valid, full => s_control_ul2ffout_full,
dout => user_r_control_r_data, rd_en => user_r_control_r_rden, empty => user_r_control_r_empty,
valid => open );
s_control_ul2ffout_enable <= not s_control_ul2ffout_full;
--end generate;
--------------------------------------------------------------
-- user logic:
user_logic_cmp_inst : user_logic_cmp
port map (
i_clk => i_clk,
i_rst => i_rst,
-- data1 interface:
i_data1in_data => s_data1_fte2ul_data,
i_data1in_valid => s_data1_fte2ul_valid,
o_data1in_enable => s_data1_fte2ul_enable,
o_data1out_data => s_data1_ul2ffout_data,
o_data1out_valid => s_data1_ul2ffout_valid,
i_data1out_enable => s_data1_ul2ffout_enable,
-- data2 interface:
i_data2in_data => s_data2_fte2ul_data,
i_data2in_valid => s_data2_fte2ul_valid,
o_data2in_enable => s_data2_fte2ul_enable,
o_data2out_data => s_data2_ul2ffout_data,
o_data2out_valid => s_data2_ul2ffout_valid,
i_data2out_enable => s_data2_ul2ffout_enable,
-- control interface:
i_controlin_data => s_control_fte2ul_data,
i_controlin_valid => s_control_fte2ul_valid,
o_controlin_enable => s_control_fte2ul_enable,
o_controlout_data => s_control_ul2ffout_data,
o_controlout_valid => s_control_ul2ffout_valid,
i_controlout_enable => s_control_ul2ffout_enable
);
 
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/project_src/bitslip_compensation.vhd
0,0 → 1,116
---------------------------------------------
-- internal bitslip in iserdes works only with 8 bits. It may happen that when we make a 16-bit word from them,
-- internal bitslip is correct, but we need to swap the whole bytes. -> o_bitslip_swap_bytes
--
-- NOTE: swapping bytes is wrong, because that means we're grabbing when frame is "00FF". That suggests, that
-- we're using LSbyte from previous sample and MSbyte from current sample. It is correct to drop the byte, to have the frame signal "FF00"
--
-- However, the bytes are not swapped, i.e. LSbyte is still LSbyte. They just do not come from the same sample.
 
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
--library utilities;
 
entity bitslip_compensation is
port (
clk : in std_logic;
rst : in std_logic;
i_data : in std_logic_vector( 15 downto 0 );
i_valid : in std_logic;
o_bitslip : out std_logic;
o_bitslip_done : out std_logic;
o_bitslip_drop_byte : out std_logic;
o_bitslip_failed : out std_logic
);
end bitslip_compensation;
 
architecture behavioral of bitslip_compensation is
 
component swap_endianness
port (
i_data : in std_logic_vector;
o_data : out std_logic_vector
);
end component;
 
constant C_BITSLIP_FRAME_TRAINING_PATTERN : std_logic_vector( 15 downto 0 ) := X"FF00";
-- wait a while before bitslipping again
subtype t_counter_busy is natural range 0 to 5; -- in theory 2 is enough
signal s_counter_busy : t_counter_busy := 0;
-- count the number of bitslip attempts
subtype t_counter_attempts is natural range 0 to 9;
signal s_counter_attempts : t_counter_attempts := 0;
signal s_i_data_bytes_swapped : std_logic_vector( 15 downto 0 );
signal s_bitslip_done : std_logic;
signal s_bitslip_failed : std_logic;
begin
 
swap_endianness_inst : swap_endianness
port map( i_data => i_data, o_data => s_i_data_bytes_swapped );
 
o_bitslip_done <= s_bitslip_done;
o_bitslip_failed <= s_bitslip_failed;
 
main_process : process( clk )
begin
if( rising_edge(clk) ) then
o_bitslip <= '0';
o_bitslip_drop_byte <= '0';
if( rst = '1' ) then
-- reset
s_counter_busy <= t_counter_busy'high;
s_counter_attempts <= 0;
s_bitslip_done <= '0';
s_bitslip_failed <= '0';
elsif( s_bitslip_done = '1' or s_bitslip_failed = '1' ) then
-- do nothing, the bitslip has already been determined.
elsif( i_valid = '1' and s_counter_busy > 0 ) then
-- we are busy now, do not do anything
s_counter_busy <= s_counter_busy - 1;
elsif( i_valid = '1' and s_counter_busy = 0 and i_data = C_BITSLIP_FRAME_TRAINING_PATTERN ) then
-- we are not busy and the incoming pattern matches the training pattern.
s_bitslip_done <= '1';
elsif( i_valid = '1' and s_counter_busy = 0 and s_i_data_bytes_swapped = C_BITSLIP_FRAME_TRAINING_PATTERN ) then
-- we are not busy and the incoming pattern matches the training pattern if we swap its bytes:
-- drop the byte and start over.
o_bitslip_drop_byte <= '1';
s_counter_busy <= t_counter_busy'high;
elsif( i_valid = '1' and s_counter_busy = 0 and s_counter_attempts < t_counter_attempts'high ) then
-- we are not busy, we may bitslip again and the incoming pattern does not match.
s_counter_attempts <= s_counter_attempts + 1;
s_counter_busy <= t_counter_busy'high;
o_bitslip <= '1';
elsif( i_valid = '1' and s_counter_busy = 0 and s_counter_attempts = t_counter_attempts'high ) then
-- we are not busy, but we do not have another attempt and the pattern still does not match.
s_bitslip_failed <= '1';
end if;
end if;
end process;
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/glue_data.vhd
0,0 → 1,60
---------------------------------------------
-- glue incoming data (from MSB position)
--
-- in: D1, D2, D3, D4...
-- out: D1D2, D3D4...
--
--
-- NOTE: hardwired for 8 + 8, beware if changing dimensions. swap_endianness only works on 8-bits
 
library ieee;
use ieee.std_logic_1164.all;
 
library utilities;
 
entity glue_data is
port (
i_clk : in std_logic;
i_reset_n : in std_logic;
i_data : in std_logic_vector( 7 downto 0 );
i_valid : in std_logic;
o_enable : out std_logic;
o_data : out std_logic_vector( 15 downto 0 );
o_valid : out std_logic;
i_enable : in std_logic
);
end glue_data;
 
architecture behavioral of glue_data is
 
component swap_endianness
port (
i_data : in std_logic_vector;
o_data : out std_logic_vector
);
end component;
signal s_rst_n : std_logic;
signal s_packed_data : std_logic_vector( 15 downto 0 );
 
begin
 
-- pack data:
pack_data_inst : entity utilities.pack_data
generic map ( G_OUTPUT_WIDTH => 16 )
port map (
i_clk => i_clk, i_reset_n => i_reset_n,
i_data => i_data, i_valid => i_valid, o_enable => o_enable,
o_data => s_packed_data, o_valid => o_valid, i_enable => i_enable );
 
-- and swap the bytes to have the first to come on MSB:
swap_endianness_inst : swap_endianness
port map( i_data => s_packed_data, o_data => o_data );
 
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/information_data.vhd
0,0 → 1,18
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
library kakona;
use kakona.kakona_package.all;
 
package information_data is
 
-- Size:
constant C_INFO_BITWIDTH : natural := C_KAK_INFO_BITWIDTH; -- not to be changed
constant C_INFO_NUMDATA : natural := 4;
 
-- Contents:
 
constant C_INFO_DATA : std_logic_vector( C_INFO_BITWIDTH*C_INFO_NUMDATA - 1 downto 0 ) := C_GUID;
 
end package;
/Designs/HAM Constructions/SDRX02A/HDL/project_src/iserdes_clock_generator.vhd
0,0 → 1,115
-- file: selectio_iserdes_8bit_ddr_diffin.vhd
-- (c) Copyright 2009 - 2011 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
------------------------------------------------------------------------------
-- User entered comments
------------------------------------------------------------------------------
-- None
------------------------------------------------------------------------------
--
-- EDIT: Only the clock generator buffers here
 
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
library unisim;
use unisim.vcomponents.all;
 
entity iserdes_clock_generator is
port
(
-- Clock and reset signals
CLK_IN_P : in std_logic; -- Differential fast clock from IOB
CLK_IN_N : in std_logic;
CLK_OUT : out std_logic; -- Fast clock output (synchronous to data)
CLK_DIV_OUT : out std_logic; -- Slow clock output
CLK_RESET : in std_logic); -- Reset signal for Clock circuit
end iserdes_clock_generator;
 
architecture sychro1 of iserdes_clock_generator is
signal clk_in_int : std_logic;
begin
 
-- Create the clock logic
ibufds_clk_inst : IBUFGDS
generic map (
DIFF_TERM => TRUE,
IOSTANDARD => "LVDS_25" )
port map (
I => CLK_IN_P,
IB => CLK_IN_N,
O => clk_in_int);
-- High Speed BUFIO clock buffer
bufio_inst : BUFIO
port map (
O => CLK_OUT,
I => clk_in_int);
-- BUFR generates the slow clock
clkout_buf_inst : BUFR
generic map (
SIM_DEVICE => "VIRTEX6",
BUFR_DIVIDE => "4")
port map (
O => CLK_DIV_OUT,
CE => '1',
CLR => CLK_RESET,
I => clk_in_int );
 
end sychro1;
 
 
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/kakona_package.vhd
0,0 → 1,58
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.numeric_std.all;
 
package kakona_package is
-- information block constants:
-- Size:
constant C_KAK_INFO_BITWIDTH : natural := 32; -- not to be changed
constant C_GUID : std_logic_vector( 4*C_KAK_INFO_BITWIDTH - 1 downto 0 ) := X"D52900BA62BC431DBB38C1D38551887A"; -- 1-lane
constant C_NUM_INPUT_ADC_MODULES : natural := 2; -- for SPI block
constant C_NUM_INPUT_ADC_DATA_PORTS : natural := 4; -- for processing block generate
-- configuration for the SPI transmitter for ADCs:
-- SPI DATA version 1:
constant C_SPI_ADC1_DATA1 : std_logic_vector( 79 downto 0 ) := X"00" & "10000000" & -- software reset
X"01" & "00100000" & -- two's complement enabled
X"02" & "00000010" & -- 3.5mA LVDS driver, test pattern off, 1-lane
X"03" & "10010110" & -- test pattern msb '96'
X"04" & "11110010"; -- test pattern lsb 'F2'
constant C_SPI_ADC2_DATA1 : std_logic_vector( 79 downto 0 ) := X"00" & "10000000" & -- software reset
X"01" & "00100000" & -- two's complement enabled
X"02" & "00000010" & -- 3.5mA LVDS driver, test pattern off, 1-lane
X"03" & "11111111" & -- test pattern msb 'FF'
X"04" & "00000000"; -- test pattern lsb '00'
constant C_SPI_ADC_DATA1 : std_logic_vector( C_SPI_ADC1_DATA1'length + C_SPI_ADC2_DATA1'length - 1 downto 0 ) := C_SPI_ADC1_DATA1 & C_SPI_ADC2_DATA1;
-- SPI DATA version 2:
-- difference: test pattern on.
constant C_SPI_ADC1_DATA2 : std_logic_vector( 79 downto 0 ) := X"00" & "10000000" & -- software reset
X"01" & "00100000" & -- two's complement enabled
X"02" & "00000110" & -- 3.5mA LVDS driver, test pattern on, 1-lane
X"03" & "10010110" & -- test pattern msb '96'
X"04" & "11110010"; -- test pattern lsb 'F2'
constant C_SPI_ADC2_DATA2 : std_logic_vector( 79 downto 0 ) := X"00" & "10000000" & -- software reset
X"01" & "00100000" & -- two's complement enabled
X"02" & "00000110" & -- 3.5mA LVDS driver, test pattern on, 1-lane
X"03" & "11111110" & -- test pattern msb 'FE'
X"04" & "11111111"; -- test pattern lsb 'FF'
constant C_SPI_ADC_DATA2 : std_logic_vector( C_SPI_ADC1_DATA2'length + C_SPI_ADC2_DATA2'length - 1 downto 0 ) := C_SPI_ADC1_DATA2 & C_SPI_ADC2_DATA2;
 
constant C_SPI_ADC_LENGTH : integer := 16;
constant C_SPI_ADC_PACKETS : integer := 5;
constant C_SPI_ADC_PAUSE : integer := 300;
-- definition of swapped P&N wires:
constant C_FRAME_WIRES_SWAPPED_PN : std_logic := '1';
-- definition of swapped P&N wires in data lines. Direction conforms to .ucf file array.
constant C_DATA_WIRES_SWAPPED_PN : std_logic_vector( 0 to 3 ) := "0101";
end package;
 
package body kakona_package is
end package body;
/Designs/HAM Constructions/SDRX02A/HDL/project_src/lo_divider_wrapper.vhd
0,0 → 1,86
--------------------------------------------
-- wrapper for the local oscillator division logic
--
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
library sychro1;
 
entity lo_divider_wrapper is
generic (
G_DIVISOR : integer
);
port (
-- input clock:
IN_CLK_LO_N : IN std_logic;
IN_CLK_LO_P : IN std_logic;
in_clk_enable : in std_logic;
-- divided clock
OUT_CLK_LO_DIVIDED_N : OUT std_logic;
OUT_CLK_LO_DIVIDED_P : OUT std_logic
);
end lo_divider_wrapper;
 
architecture behavioral of lo_divider_wrapper is
 
-- clock signals for in->divide->out clock:
signal s_in_clk_lo : std_logic;
signal s_in_clk_lo_bufred : std_logic;
signal s_divided_lo : std_logic;
attribute clock_signal : string;
attribute clock_signal of s_divided_lo : signal is "yes";
 
begin
IBUFGDS_inst : IBUFGDS
generic map (
DIFF_TERM => TRUE
--IBUF_LOW_PWR => TRUE -- Low power (TRUE) vs. performance (FALSE) setting for refernced I/O standards
)
port map (
O => s_in_clk_lo, -- Clock buffer output
I => IN_CLK_LO_P, -- Diff_p clock buffer input (connect directly to top-level port)
IB => IN_CLK_LO_N -- Diff_n clock buffer input (connect directly to top-level port)
);
-- TEST2: misto counteru pouziju deleni v BUFR
BUFR_inst : BUFR
generic map (
BUFR_DIVIDE => "BYPASS", -- "BYPASS", "1", "2", "3", "4", "5", "6", "7", "8"
SIM_DEVICE => "VIRTEX6") -- Specify target device, "VIRTEX4", "VIRTEX5", "VIRTEX6"
port map (
O => s_in_clk_lo_bufred, -- Clock buffer output
CE => in_clk_enable, -- Clock enable input
CLR => '0', -- Clock buffer reset input
I => s_in_clk_lo -- Clock buffer input
);
-- TEST3: opravil jsem clock_divider, zkusim ho sem dat zpatky
-- -> BUFR -> BYPASS
-- zpatky clock_divider
 
-- TEMP1: vyhozeni counteru
divider_inst : entity sychro1.clock_divider
generic map( G_DIVISOR => G_DIVISOR )
port map( i_clk => s_in_clk_lo_bufred, i_rst => '0', o_clk => s_divided_lo );
--s_divided_lo <= s_in_clk_lo_bufred;
 
OBUFDS_inst : OBUFDS
generic map (
IOSTANDARD => "DEFAULT" )
port map (
O => OUT_CLK_LO_DIVIDED_P, -- Diff_p output (connect directly to top-level port)
OB => OUT_CLK_LO_DIVIDED_N, -- Diff_n output (connect directly to top-level port)
I => s_divided_lo -- Buffer input
);
 
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/multiplexer_from_fifos.vhd
0,0 → 1,92
--------------------------------------------
-- Multiplexer from FIFOs
--
-- Waits until all i_valid signals are asserted. Then, if i_full == '0', cycles through all inputs and puts them to output.
-- If at that time i_full == '1', all the inputs are discarded.
 
library ieee;
use ieee.std_logic_1164.all;
 
 
entity multiplexer_from_fifos is
generic
( G_NUM_CHANNELS : natural := 2; -- number of channels
G_DATA_WIDTH : natural := 32 -- data width of individual packets
);
port (
clk : in std_logic;
rst : in std_logic;
-- input side
i_data : in std_logic_vector( G_DATA_WIDTH*G_NUM_CHANNELS - 1 downto 0 );
i_valid : in std_logic_vector( G_NUM_CHANNELS - 1 downto 0 );
o_rden : out std_logic_vector( G_NUM_CHANNELS - 1 downto 0 );
-- output side
o_data : out std_logic_vector( G_DATA_WIDTH - 1 downto 0 );
o_valid : out std_logic;
i_full : in std_logic
 
);
end multiplexer_from_fifos;
 
architecture behavioral of multiplexer_from_fifos is
 
subtype t_counter is natural range 0 to G_NUM_CHANNELS;
signal s_counter : t_counter := 0;
 
signal s_all_i_valid : std_logic;
signal s_drop_data : std_logic;
 
begin
 
assert( G_NUM_CHANNELS > 1 ) report "The number of channels must be higher than 1." severity failure;
 
s_all_i_valid <= '1' when i_valid = ( i_valid'range => '1' ) else
'0';
counter_process : process( clk )
begin
if( rising_edge( clk ) ) then
s_drop_data <= '0';
if( rst = '1' ) then
-- reset
s_counter <= 0;
elsif( s_counter = 0 and s_all_i_valid = '1' and i_full = '0' and s_drop_data = '0' ) then
-- counter is stopped, i_data have new data and the following FIFO is ready to receive.
-- start the counter.
s_counter <= 1;
elsif( s_counter = 0 and s_all_i_valid = '1' and i_full = '1' ) then
-- discard the complete set of data because the following FIFO is full.
s_drop_data <= '1';
elsif( s_counter > 0 and s_counter < t_counter'high ) then
-- the counter is running and is somewhere in between, just increase the value.
s_counter <= s_counter + 1;
elsif( s_counter = t_counter'high and s_all_i_valid = '1' and i_full = '0' ) then
-- the counter has reached maximum value and there are new data waiting
-- start the counter right away
s_counter <= 1;
else
-- stop the counter
s_counter <= 0;
end if;
end if;
end process;
----------------------------------------------
-- OUTPUT SIGNALS:
o_data <= i_data( G_DATA_WIDTH*s_counter - 1 downto G_DATA_WIDTH*s_counter - G_DATA_WIDTH ) when s_counter > 0 and rst = '0' else
( others => '0' );
o_valid <= i_valid( s_counter - 1 ) when s_counter > 0 and rst = '0' else
'0';
o_rden_gen : for i in 0 to G_NUM_CHANNELS - 1 generate
o_rden(i) <= '1' when ( s_counter = i + 1 or s_drop_data = '1' ) and i_valid(i) = '1' else
'0';
end generate;
----------------------------------------------
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/myserdes_ddr.vhd
0,0 → 1,247
-- file: selectio_iserdes_8bit_ddr_diffin.vhd
-- (c) Copyright 2009 - 2011 Xilinx, Inc. All rights reserved.
--
-- This file contains confidential and proprietary information
-- of Xilinx, Inc. and is protected under U.S. and
-- international copyright and other intellectual property
-- laws.
--
-- DISCLAIMER
-- This disclaimer is not a license and does not grant any
-- rights to the materials distributed herewith. Except as
-- otherwise provided in a valid license issued to you by
-- Xilinx, and to the maximum extent permitted by applicable
-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
-- (2) Xilinx shall not be liable (whether in contract or tort,
-- including negligence, or under any other theory of
-- liability) for any loss or damage of any kind or nature
-- related to, arising under or in connection with these
-- materials, including for any direct, or any indirect,
-- special, incidental, or consequential loss or damage
-- (including loss of data, profits, goodwill, or any type of
-- loss or damage suffered as a result of any action brought
-- by a third party) even if such damage or loss was
-- reasonably foreseeable or Xilinx had been advised of the
-- possibility of the same.
--
-- CRITICAL APPLICATIONS
-- Xilinx products are not designed or intended to be fail-
-- safe, or for use in any application requiring fail-safe
-- performance, such as life-support or safety devices or
-- systems, Class III medical devices, nuclear facilities,
-- applications related to the deployment of airbags, or any
-- other applications that could lead to death, personal
-- injury, or severe property or environmental damage
-- (individually and collectively, "Critical
-- Applications"). Customer assumes the sole risk and
-- liability of any use of Xilinx products in Critical
-- Applications, subject only to applicable laws and
-- regulations governing limitations on product liability.
--
-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
-- PART OF THIS FILE AT ALL TIMES.
------------------------------------------------------------------------------
-- User entered comments
------------------------------------------------------------------------------
-- None
------------------------------------------------------------------------------
--
-- EDIT: the clocking logic has been moved outside
 
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
library unisim;
use unisim.vcomponents.all;
 
entity myserdes_ddr is
generic
(-- width of the data for the system
sys_w : integer := 1;
-- width of the data for the device
dev_w : integer := 8);
port
(
-- From the system into the device
DATA_IN_FROM_PINS_P : in std_logic_vector(sys_w-1 downto 0);
DATA_IN_FROM_PINS_N : in std_logic_vector(sys_w-1 downto 0);
DATA_IN_TO_DEVICE : out std_logic_vector(dev_w-1 downto 0);
 
BITSLIP : in std_logic; -- Bitslip module is enabled in NETWORKING mode
-- User should tie it to '0' if not needed
-- Clock and reset signals
CLK_IN : in std_logic; -- Fast clock from IOB, after IBUFGDS and BUFIO
CLK_DIV_IN : in std_logic; -- Divided fast clock from IBUFGDS and BUFR
 
IO_RESET : in std_logic); -- Reset signal for IO circuit
end myserdes_ddr;
 
architecture xilinx of myserdes_ddr is
attribute CORE_GENERATION_INFO : string;
attribute CORE_GENERATION_INFO of xilinx : architecture is "selectio_iserdes_8bit_ddr_diffin,selectio_wiz_v4_1,{component_name=selectio_iserdes_8bit_ddr_diffin,bus_dir=INPUTS,bus_sig_type=DIFF,bus_io_std=LVDS_25,use_serialization=true,use_phase_detector=false,serialization_factor=8,enable_bitslip=false,enable_train=false,system_data_width=1,bus_in_delay=NONE,bus_out_delay=NONE,clk_sig_type=DIFF,clk_io_std=LVCMOS18,clk_buf=BUFIO2,active_edge=RISING,clk_delay=NONE,v6_bus_in_delay=NONE,v6_bus_out_delay=NONE,v6_clk_buf=BUFIO,v6_active_edge=DDR,v6_ddr_alignment=SAME_EDGE_PIPELINED,v6_oddr_alignment=SAME_EDGE,ddr_alignment=C0,v6_interface_type=NETWORKING,interface_type=NETWORKING,v6_bus_in_tap=0,v6_bus_out_tap=0,v6_clk_io_std=LVDS_25,v6_clk_sig_type=DIFF}";
constant clock_enable : std_logic := '1';
signal unused : std_logic;
 
 
-- After the buffer
signal data_in_from_pins_int : std_logic_vector(sys_w-1 downto 0);
-- Between the delay and serdes
signal data_in_from_pins_delay : std_logic_vector(sys_w-1 downto 0);
constant num_serial_bits : integer := dev_w/sys_w;
type serdarr is array (0 to 9) of std_logic_vector(sys_w-1 downto 0);
-- Array to use intermediately from the serdes to the internal
-- devices. bus "0" is the leftmost bus
-- * fills in starting with 0
signal iserdes_q : serdarr := (( others => (others => '0')));
signal serdesstrobe : std_logic;
signal icascade1 : std_logic_vector(sys_w-1 downto 0);
signal icascade2 : std_logic_vector(sys_w-1 downto 0);
signal clk_in_inv : std_logic;
 
 
 
begin
-- We have multiple bits- step over every bit, instantiating the required elements
pins: for pin_count in 0 to sys_w-1 generate
begin
-- Instantiate the buffers
----------------------------------
-- Instantiate a buffer for every bit of the data bus
ibufds_inst : IBUFDS
generic map (
DIFF_TERM => TRUE, -- Differential termination
IOSTANDARD => "LVDS_25")
port map (
I => DATA_IN_FROM_PINS_P (pin_count),
IB => DATA_IN_FROM_PINS_N (pin_count),
O => data_in_from_pins_int(pin_count));
 
 
-- Pass through the delay
-----------------------------------
data_in_from_pins_delay(pin_count) <= data_in_from_pins_int(pin_count);
 
-- Instantiate the serdes primitive
----------------------------------
 
clk_in_inv <= not (CLK_IN);
 
-- declare the iserdes
iserdese1_master : ISERDESE1
generic map (
DATA_RATE => "DDR",
DATA_WIDTH => 8,
INTERFACE_TYPE => "NETWORKING",
DYN_CLKDIV_INV_EN => FALSE,
DYN_CLK_INV_EN => FALSE,
NUM_CE => 2,
OFB_USED => FALSE,
IOBDELAY => "NONE", -- Use input at D to output the data on Q1-Q6
SERDES_MODE => "MASTER")
port map (
Q1 => iserdes_q(0)(pin_count),
Q2 => iserdes_q(1)(pin_count),
Q3 => iserdes_q(2)(pin_count),
Q4 => iserdes_q(3)(pin_count),
Q5 => iserdes_q(4)(pin_count),
Q6 => iserdes_q(5)(pin_count),
SHIFTOUT1 => icascade1(pin_count), -- Cascade connection to Slave ISERDES
SHIFTOUT2 => icascade2(pin_count), -- Cascade connection to Slave ISERDES
BITSLIP => BITSLIP, -- 1-bit Invoke Bitslip. This can be used with any
-- DATA_WIDTH, cascaded or not.
CE1 => clock_enable, -- 1-bit Clock enable input
CE2 => clock_enable, -- 1-bit Clock enable input
CLK => CLK_IN, -- Fast Source Synchronous SERDES clock from BUFIO
CLKB => clk_in_inv, -- Locally inverted clock
CLKDIV => CLK_DIV_IN, -- Slow clock driven by BUFR
D => data_in_from_pins_delay(pin_count), -- 1-bit Input signal from IOB.
DDLY => '0',
RST => IO_RESET, -- 1-bit Asynchronous reset only.
SHIFTIN1 => '0',
SHIFTIN2 => '0',
-- unused connections
DYNCLKDIVSEL => '0',
DYNCLKSEL => '0',
OFB => '0',
OCLK => '0',
O => open); -- unregistered output of ISERDESE1
 
iserdese1_slave : ISERDESE1
generic map (
DATA_RATE => "DDR",
DATA_WIDTH => 8,
INTERFACE_TYPE => "NETWORKING",
DYN_CLKDIV_INV_EN => FALSE,
DYN_CLK_INV_EN => FALSE,
NUM_CE => 2,
OFB_USED => FALSE,
IOBDELAY => "NONE", -- Use input at D to output the data on Q1-Q6
SERDES_MODE => "SLAVE")
port map (
Q1 => open,
Q2 => open,
Q3 => iserdes_q(6)(pin_count),
Q4 => iserdes_q(7)(pin_count),
Q5 => iserdes_q(8)(pin_count),
Q6 => iserdes_q(9)(pin_count),
SHIFTOUT1 => open,
SHIFTOUT2 => open,
SHIFTIN1 => icascade1(pin_count), -- Cascade connections from Master ISERDES
SHIFTIN2 => icascade2(pin_count), -- Cascade connections from Master ISERDES
BITSLIP => BITSLIP, -- 1-bit Invoke Bitslip. This can be used with any
-- DATA_WIDTH, cascaded or not.
CE1 => clock_enable, -- 1-bit Clock enable input
CE2 => clock_enable, -- 1-bit Clock enable input
CLK => CLK_IN, -- Fast source synchronous serdes clock
CLKB => clk_in_inv, -- locally inverted clock
CLKDIV => CLK_DIV_IN, -- Slow clock sriven by BUFR.
D => '0', -- Slave ISERDES module. No need to connect D, DDLY
DDLY => '0',
RST => IO_RESET, -- 1-bit Asynchronous reset only.
-- unused connections
DYNCLKDIVSEL => '0',
DYNCLKSEL => '0',
OFB => '0',
OCLK => '0',
O => open); -- unregistered output of ISERDESE1
 
-- Concatenate the serdes outputs together. Keep the timesliced
-- bits together, and placing the earliest bits on the right
-- ie, if data comes in 0, 1, 2, 3, 4, 5, 6, 7, ...
-- the output will be 3210, 7654, ...
-------------------------------------------------------------
 
in_slices: for slice_count in 0 to num_serial_bits-1 generate begin
-- This places the first data in time on the right
-- DATA_IN_TO_DEVICE(slice_count) <=
-- iserdes_q(num_serial_bits-slice_count-1)(0);
-- To place the first data in time on the left, use the
-- following code, instead
DATA_IN_TO_DEVICE(slice_count) <=
iserdes_q(slice_count)(0);
end generate in_slices;
 
 
end generate pins;
 
 
 
 
 
end xilinx;
 
 
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/HDL/project_src/myserdes_ddr_wrapper.vhd
0,0 → 1,78
--------------------------------------------
-- wrapper for the iserdes_ddr and pack_data
--
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
entity myserdes_ddr_wrapper is
generic
(-- width of the data for the system
sys_w : integer := 1;
-- width of the data for the device
dev_w : integer := 8);
port (
-- CLOCK:
clk_in : in std_logic;
clk_in_div : in std_logic;
-- PADS IN:
data_in_from_pins_p : in std_logic;
data_in_from_pins_n : in std_logic;
data_in_to_device : out std_logic_vector( dev_w - 1 downto 0 );
bitslip : in std_logic;
rst_in : in std_logic );
end myserdes_ddr_wrapper;
 
architecture behavioral of myserdes_ddr_wrapper is
 
component myserdes_ddr is
generic
(-- width of the data for the system
sys_w : integer := 1;
-- width of the data for the device
dev_w : integer := 8);
port
(
-- From the system into the device
DATA_IN_FROM_PINS_P : in std_logic_vector(sys_w-1 downto 0);
DATA_IN_FROM_PINS_N : in std_logic_vector(sys_w-1 downto 0);
DATA_IN_TO_DEVICE : out std_logic_vector(dev_w-1 downto 0);
 
BITSLIP : in std_logic; -- Bitslip module is enabled in NETWORKING mode
-- User should tie it to '0' if not needed
 
-- Clock and reset signals
CLK_IN : in std_logic; -- Fast clock from IOB, after IBUFGDS and BUFIO
CLK_DIV_IN : in std_logic; -- Divided fast clock from IBUFGDS and BUFR
 
IO_RESET : in std_logic); -- Reset signal for IO circuit
end component;
 
-- data in signal:
signal s_data_in_from_pins_p : std_logic_vector( sys_w-1 downto 0 );
signal s_data_in_from_pins_n : std_logic_vector( sys_w-1 downto 0 );
begin
-- convert std_logic to std_logic_vector
s_data_in_from_pins_n(0) <= data_in_from_pins_n;
s_data_in_from_pins_p(0) <= data_in_from_pins_p;
-- instantiate the myserdes_ddr
myserdes_ddr_inst : myserdes_ddr
port map (
DATA_IN_FROM_PINS_P => s_data_in_from_pins_p, DATA_IN_FROM_PINS_N => s_data_in_from_pins_n,
DATA_IN_TO_DEVICE => data_in_to_device,
BITSLIP => bitslip, CLK_IN => clk_in, CLK_DIV_IN => clk_in_div, IO_RESET => rst_in );
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/processing_block.vhd
0,0 → 1,185
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
library utilities;
 
entity processing_block is
port (
-- clock:
clk_iserdes_in : in std_logic;
clk_iserdes_in_div : in std_logic;
clk_global : in std_logic;
-- reset:
rst : in std_logic;
-- bitslip:
bitslip : in std_logic;
bitslip_done : in std_logic; -- todo: use this
bitslip_drop_byte : in std_logic;
-- input signal:
in_data_p : in std_logic;
in_data_n : in std_logic;
in_data_swap_pn : in std_logic;
-- input switch for counter output:
in_output_counting : in std_logic;
-- output after iserdes and pack16 for bitslip:
o_iserdes_output : out std_logic_vector( 15 downto 0 );
o_iserdes_output_valid : out std_logic;
-- output fwft FIFO:
o_data : out std_logic_vector( 31 downto 0 );
o_valid : out std_logic;
i_rden : in std_logic
);
end processing_block;
 
architecture behavioral of processing_block is
component swap_endianness
port (
i_data : in std_logic_vector;
o_data : out std_logic_vector
);
end component;
 
component fifo_32x512_dualclk_fwft
port (
rst : in std_logic;
wr_clk : in std_logic;
rd_clk : in std_logic;
din : in std_logic_vector(31 downto 0);
wr_en : in std_logic;
rd_en : in std_logic;
dout : out std_logic_vector(31 downto 0);
full : out std_logic;
empty : out std_logic;
valid : out std_logic
);
end component;
 
component myserdes_ddr_wrapper
generic
( sys_w : integer := 1;
dev_w : integer := 8);
port (
-- CLOCK:
clk_in : in std_logic;
clk_in_div : in std_logic;
-- PADS IN:
data_in_from_pins_p : in std_logic;
data_in_from_pins_n : in std_logic;
-- DATA OUT:
data_in_to_device : out std_logic_vector( dev_w - 1 downto 0 );
bitslip : in std_logic;
rst_in : in std_logic );
end component;
component saw_generator_wrapper
generic (
G_INCREASE_EVERY_NTH : positive := 4
);
port (
i_clk : in std_logic;
i_rst : in std_logic;
o_valid : out std_logic;
o_data : out std_logic_vector
);
end component;
-- Frame signal
signal s_in_frame_for_data : std_logic_vector( 7 downto 0 );
signal s_in_frame_for_data_precorrect : std_logic_vector( 7 downto 0 );
signal s_in_frame_for_data_packed16 : std_logic_vector( 15 downto 0 );
signal s_in_frame_for_data_packed16_le : std_logic_vector( 15 downto 0 );
signal s_in_frame_for_data_packed16_swapped : std_logic_vector( 15 downto 0 );
signal s_in_frame_for_data_packed16_valid : std_logic;
signal s_in_frame_for_data_packed16_valid_wbitslip_done : std_logic;
signal s_in_frame_for_data_packed32 : std_logic_vector( 31 downto 0 );
signal s_in_frame_for_data_packed32_valid : std_logic;
signal s_rst_n : std_logic;
-- counter:
signal s_counter_valid : std_logic;
signal s_counter_data : std_logic_vector( 31 downto 0 );
-- selection signals for the final FIFO:
signal s_selected_source_valid : std_logic;
signal s_selected_source_data : std_logic_vector( 31 downto 0 );
-- byte drop request
signal s_bitslip_drop_byte_n : std_logic;
begin
s_rst_n <= not rst;
s_bitslip_drop_byte_n <= not bitslip_drop_byte;
-- iserdes wrapper:
myserdes_ddr_wrapper_inst : myserdes_ddr_wrapper
port map (
clk_in => clk_iserdes_in, clk_in_div => clk_iserdes_in_div,
data_in_from_pins_p => in_data_p, data_in_from_pins_n => in_data_n, data_in_to_device => s_in_frame_for_data_precorrect,
bitslip => bitslip, rst_in => rst );
-- correct hardware swapping of P&N wires:
s_in_frame_for_data <= s_in_frame_for_data_precorrect when in_data_swap_pn = '0' else
not s_in_frame_for_data_precorrect;
-- glue two parts to 16-bit full data:
glue_data_inst : entity work.glue_data
port map (
i_clk => clk_iserdes_in_div, i_reset_n => s_rst_n,
i_data => s_in_frame_for_data, i_valid => s_bitslip_drop_byte_n, o_enable => open,
o_data => s_in_frame_for_data_packed16, o_valid => s_in_frame_for_data_packed16_valid, i_enable => '1' );
-- output the 16-bit to manage bitslip:
o_iserdes_output <= s_in_frame_for_data_packed16;
o_iserdes_output_valid <= s_in_frame_for_data_packed16_valid;
-- these data go further after bitslip has been set:
s_in_frame_for_data_packed16_le <= s_in_frame_for_data_packed16;
s_in_frame_for_data_packed16_valid_wbitslip_done <= bitslip_done and s_in_frame_for_data_packed16_valid;
-- insert the pack block to 32 bits:
pack_data32_inst : entity utilities.pack_data
generic map (
G_OUTPUT_WIDTH => 32 )
port map (
i_clk => clk_iserdes_in_div, i_reset_n => s_rst_n,
i_data => s_in_frame_for_data_packed16_le, i_valid => s_in_frame_for_data_packed16_valid_wbitslip_done, o_enable => open,
o_data => s_in_frame_for_data_packed32, o_valid => s_in_frame_for_data_packed32_valid, i_enable => '1' );
-- counter:
counter_inst : saw_generator_wrapper
generic map( G_INCREASE_EVERY_NTH => 4 )
port map(
i_clk => clk_iserdes_in_div, i_rst => rst, o_valid => s_counter_valid, o_data => s_counter_data );
-- output either the grabbed data or the counter, based on request:
s_selected_source_valid <= s_counter_valid when in_output_counting = '1' else s_in_frame_for_data_packed32_valid;
s_selected_source_data <= s_counter_data when in_output_counting = '1' else s_in_frame_for_data_packed32;
-- insert the cross-domain FIFO:
cross_domain_fifo_inst : fifo_32x512_dualclk_fwft
port map (
rst => rst, wr_clk => clk_iserdes_in_div, rd_clk => clk_global,
din => s_selected_source_data, wr_en => s_selected_source_valid, full => open,
dout => o_data, valid => o_valid, rd_en => i_rden, empty => open );
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/saw_generator_wrapper.vhd
0,0 → 1,47
---------------------------------------------
-- increase output every fourth clock cycle
--
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
library sychro1;
 
entity saw_generator_wrapper is
generic (
G_INCREASE_EVERY_NTH : positive := 4
);
port (
i_clk : in std_logic;
i_rst : in std_logic;
o_valid : out std_logic;
o_data : out std_logic_vector
);
end saw_generator_wrapper;
 
architecture behavioral of saw_generator_wrapper is
signal s_modulo_counter_carry : std_logic;
begin
 
-- first counter that counts modulo G_INCREASE_EVERY_NTH to generate a valid signal for the second counter
-- and the output:
modulo_up_counter : entity sychro1.up_counter
generic map ( G_MIN_NUMBER => 0, G_MAX_NUMBER => G_INCREASE_EVERY_NTH - 1 )
port map ( i_clk => i_clk, i_rst => i_rst, i_valid => '1', o_data => open, o_carry => s_modulo_counter_carry );
-- the second counter:
main_up_counter : entity sychro1.up_counter_stdlv
generic map ( G_BITS => o_data'length, G_MIN_NUMBER => ( o_data'range => '0' ), G_MAX_NUMBER => ( o_data'range => '1' ) )
port map( i_clk => i_clk, i_rst => i_rst, i_valid => s_modulo_counter_carry, o_data => o_data, o_carry => open );
-- signal connection:
o_valid <= s_modulo_counter_carry;
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/spi_transmitter_wrapper2.vhd
0,0 → 1,123
-----------------------------------------------
-- wrapper for the SPI master transmitter logic
--
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
library comm;
 
entity spi_transmitter_wrapper is
generic (
G_DATA1 : std_logic_vector;
G_DATA2 : std_logic_vector;
G_NUM_BITS_PACKET : integer;
G_NUM_PACKETS : integer;
G_NUM_BITS_PAUSE : integer
);
port (
-- input clock:
i_clk125 : in std_logic;
i_reset : in std_logic;
i_data_selector : in std_logic;
o_done : out std_logic;
-- SPI output:
OUT_SPI_N_CE : OUT std_logic_vector;
OUT_SPI_DOUT : OUT std_logic;
OUT_SPI_CLK : OUT std_logic
);
end spi_transmitter_wrapper;
 
architecture behavioral of spi_transmitter_wrapper is
 
component clk_125MHz_to_6MHz
port
(-- Clock in ports
CLK_IN_125 : in std_logic;
-- Clock out ports
CLK_OUT_6 : out std_logic
);
end component;
 
-- divided clock:
signal s_spi_input_clk : std_logic;
signal s_clk_6MHz : std_logic;
signal s_clk_125kHz_tmp : std_logic;
attribute clock_signal : string;
attribute clock_signal of s_spi_input_clk : signal is "yes";
-- SPI output pins registers:
signal s_out_spi_n_ce_d : std_logic_vector( OUT_SPI_N_CE'range );
signal s_out_spi_dout_d : std_logic;
signal s_out_spi_clk_d : std_logic;
-- pack the OUT registers to IOB so that the timing is better:
attribute iob : string;
attribute iob of OUT_SPI_N_CE : signal is "FORCE";
attribute iob of OUT_SPI_DOUT : signal is "FORCE";
attribute iob of OUT_SPI_CLK : signal is "FORCE";
 
begin
 
-- IP Core clock wizard:
clk_125MHz_to_6MHz_inst : clk_125MHz_to_6MHz
port map ( CLK_IN_125 => i_clk125, CLK_OUT_6 => s_clk_6MHz );
 
-- ~1MHz clock:
BUFR_inst : BUFR
generic map (
BUFR_DIVIDE => "6", SIM_DEVICE => "VIRTEX6" )
port map (
O => s_clk_125kHz_tmp, -- s_spi_input_clk
CE => '1',
CLR => '0',
I => s_clk_6MHz
);
BUFR2_inst : BUFR
generic map (
BUFR_DIVIDE => "8", SIM_DEVICE => "VIRTEX6" )
port map (
O => s_spi_input_clk,
CE => '1',
CLR => '0',
I => s_clk_125kHz_tmp
);
 
-- SPI master transmitter:
spi_transmit_inst : entity comm.spi_master_transmit
generic map(
G_DATA1 => G_DATA1,
G_DATA2 => G_DATA2,
G_NUM_BITS_PACKET => G_NUM_BITS_PACKET,
G_NUM_PACKETS => G_NUM_PACKETS,
G_NUM_BITS_PAUSE => G_NUM_BITS_PAUSE )
port map(
i_clk => s_spi_input_clk, i_rst => i_reset, i_data_selector => i_data_selector,
o_done => o_done,
o_n_ce => s_out_spi_n_ce_d,
o_dout => s_out_spi_dout_d,
o_clk => s_out_spi_clk_d
);
-- registers:
registered_spi_output : process( s_clk_6MHz )
begin
if( rising_edge( s_clk_6MHz ) ) then
OUT_SPI_N_CE <= s_out_spi_n_ce_d;
OUT_SPI_DOUT <= s_out_spi_dout_d;
OUT_SPI_CLK <= s_out_spi_clk_d;
end if;
end process;
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/swap_endianness.vhd
0,0 → 1,24
library ieee;
use ieee.std_logic_1164.all;
 
entity swap_endianness is
port (
i_data : in std_logic_vector;
o_data : out std_logic_vector
);
end swap_endianness;
 
architecture behavioral of swap_endianness is
begin
 
assert ( i_data'length = o_data'length ) report "The input and output data lengths have to match." severity failure;
assert ( i_data'length mod 8 = 0 ) report "The data length has to be divisible by 8. (Whole bytes)." severity failure;
swap_gen : for i in 0 to ((i_data'length / 8) - 1) generate
o_data( 8*(i+1) - 1 downto 8*i ) <= i_data( i_data'length - 8*i - 1 downto i_data'length - 8*(i+1) );
end generate;
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/userlogiccmp_template.vhd
0,0 → 1,82
-- Dummy user_logic_cmp_winfo
--
--
-- Uses only data1 stream and simply adds to each byte a given number
--
-- uses the information_block entity for version/type control
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
entity user_logic_cmp is
port (
i_clk : in std_logic;
i_rst : in std_logic;
-- data1 interface:
i_data1in_data : in std_logic_vector( 31 downto 0 );
i_data1in_valid : in std_logic;
o_data1in_enable : out std_logic;
o_data1out_data : out std_logic_vector( 31 downto 0 );
o_data1out_valid : out std_logic;
i_data1out_enable : in std_logic;
-- data2 interface:
i_data2in_data : in std_logic_vector( 31 downto 0 );
i_data2in_valid : in std_logic;
o_data2in_enable : out std_logic;
o_data2out_data : out std_logic_vector( 31 downto 0 );
o_data2out_valid : out std_logic;
i_data2out_enable : in std_logic;
-- control interface:
i_controlin_data : in std_logic_vector( 31 downto 0 );
i_controlin_valid : in std_logic;
o_controlin_enable : out std_logic;
o_controlout_data : out std_logic_vector( 31 downto 0 );
o_controlout_valid : out std_logic;
i_controlout_enable : in std_logic
);
end entity;
 
architecture behavioral of user_logic_cmp is
 
component information_block is
port (
clk : in std_logic; rst : in std_logic;
-- Input side:
i_data : in std_logic_vector( 31 downto 0 ); i_valid : in std_logic; o_enable : out std_logic;
-- Output side:
o_data : out std_logic_vector( 31 downto 0 ); o_valid : out std_logic; i_enable : in std_logic );
end component;
 
begin
 
-- Example how to read and transmit data:
sum_process : process( i_clk )
begin
if( rising_edge( i_clk ) ) then
if( i_rst = '1' ) then
o_data1out_data <= ( others => '0' );
o_data1out_valid <= '0';
else
o_data1out_data( 31 downto 24 ) <= std_logic_vector( unsigned(i_data1in_data( 31 downto 24 )) + to_unsigned(1,8) );
o_data1out_data( 23 downto 16 ) <= std_logic_vector( unsigned(i_data1in_data( 23 downto 16 )) + to_unsigned(2,8) );
o_data1out_data( 15 downto 8 ) <= std_logic_vector( unsigned(i_data1in_data( 15 downto 8 )) + to_unsigned(3,8) );
o_data1out_data( 7 downto 0 ) <= std_logic_vector( unsigned(i_data1in_data( 7 downto 0 )) + to_unsigned(4,8) );
o_data1out_valid <= i_data1in_valid;
end if;
end if;
end process;
o_data1in_enable <= i_data1out_enable;
-- information_block:
info_block_inst : information_block
port map (
clk => i_clk, rst => i_rst,
i_data => i_controlin_data, i_valid => i_controlin_valid, o_enable => o_controlin_enable,
o_data => o_controlout_data, o_valid => o_controlout_valid, i_enable => i_controlout_enable );
end architecture;
/Designs/HAM Constructions/SDRX02A/HDL/project_src/xilly/xilly_toplevel.userlogiccmp_kakona.vhd
0,0 → 1,543
library ieee;
use ieee.std_logic_1164.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
library sychro1;
library utilities;
library comm;
 
library kakona;
use kakona.kakona_package.all;
 
entity xilly_toplevel is
port (
-- FMC & other ports:
-- local oscillator to be divided
IN_CLK_LO_N : IN std_logic;
IN_CLK_LO_P : IN std_logic;
-- divided clock
OUT_CLK_LO_DIVIDED_N : OUT std_logic;
OUT_CLK_LO_DIVIDED_P : OUT std_logic;
-- input data:
-- clock:
IN_CLK_FOR_DATA_P : IN std_logic;
IN_CLK_FOR_DATA_N : IN std_logic;
-- frame signal:
IN_FRAME_FOR_DATA_N : IN std_logic;
IN_FRAME_FOR_DATA_P : IN std_logic;
-- data from ADCs:
IN_DATA_ADC_P : IN std_logic_vector( C_NUM_INPUT_ADC_DATA_PORTS - 1 downto 0 );
IN_DATA_ADC_N : IN std_logic_vector( C_NUM_INPUT_ADC_DATA_PORTS - 1 downto 0 );
-- our LEDs:
GPIO_LED2 : OUT std_logic_vector(3 DOWNTO 0);
-- SPI communication block:
OUT_SPI_N_CE : OUT std_logic_vector( C_NUM_INPUT_ADC_MODULES-1 downto 0 );
OUT_SPI_DOUT : OUT std_logic;
OUT_SPI_CLK : OUT std_logic;
-- test:
--OUT_TEST1 : OUT std_logic;
-- dummy inputs due to incorrect soldering -- pins are hardconnected to ground.
IN_DUMMY : IN std_logic_vector( 1 downto 0 );
-- GPIO_DIP_SWITCH:
GPIO_DIP_SW : IN std_logic_vector( 7 downto 0 );
-- original xillybus-only ports:
PCIE_PERST_B_LS : IN std_logic;
PCIE_REFCLK_N : IN std_logic;
PCIE_REFCLK_P : IN std_logic;
PCIE_RX_N : IN std_logic_vector(3 DOWNTO 0);
PCIE_RX_P : IN std_logic_vector(3 DOWNTO 0);
GPIO_LED : OUT std_logic_vector(3 DOWNTO 0);
PCIE_TX_N : OUT std_logic_vector(3 DOWNTO 0);
PCIE_TX_P : OUT std_logic_vector(3 DOWNTO 0));
end xilly_toplevel;
 
architecture behavioral of xilly_toplevel is
 
component multiplexer_from_fifos
generic
( G_NUM_CHANNELS : natural := 2; -- number of channels
G_DATA_WIDTH : natural := 32 -- data width of individual packets
);
port (
clk : in std_logic;
rst : in std_logic;
-- input side
i_data : in std_logic_vector( G_DATA_WIDTH*G_NUM_CHANNELS - 1 downto 0 );
i_valid : in std_logic_vector( G_NUM_CHANNELS - 1 downto 0 );
o_rden : out std_logic_vector( G_NUM_CHANNELS - 1 downto 0 );
-- output side
o_data : out std_logic_vector( G_DATA_WIDTH - 1 downto 0 );
o_valid : out std_logic;
i_full : in std_logic
 
);
end component;
 
COMPONENT fifo_32x512_walmostfull
PORT (
clk : IN STD_LOGIC;
srst : IN STD_LOGIC;
din : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
wr_en : IN STD_LOGIC;
rd_en : IN STD_LOGIC;
dout : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
full : OUT STD_LOGIC;
empty : OUT STD_LOGIC;
valid : OUT STD_LOGIC;
prog_full : OUT STD_LOGIC
);
END COMPONENT;
 
component bitslip_compensation
port (
clk : in std_logic;
rst : in std_logic;
i_data : in std_logic_vector( 15 downto 0 );
i_valid : in std_logic;
o_bitslip : out std_logic;
o_bitslip_done : out std_logic;
o_bitslip_drop_byte : out std_logic;
o_bitslip_failed : out std_logic
);
end component;
 
component iserdes_clock_generator
port
(
-- Clock and reset signals
CLK_IN_P : in std_logic; -- Differential fast clock from IOB
CLK_IN_N : in std_logic;
CLK_OUT : out std_logic; -- Fast clock output (synchronous to data)
CLK_DIV_OUT : out std_logic; -- Slow clock output
CLK_RESET : in std_logic); -- Reset signal for Clock circuit
 
end component;
 
 
component xillybus
port (
PCIE_PERST_B_LS : IN std_logic;
PCIE_REFCLK_N : IN std_logic;
PCIE_REFCLK_P : IN std_logic;
PCIE_RX_N : IN std_logic_vector(3 DOWNTO 0);
PCIE_RX_P : IN std_logic_vector(3 DOWNTO 0);
GPIO_LED : OUT std_logic_vector(3 DOWNTO 0);
PCIE_TX_N : OUT std_logic_vector(3 DOWNTO 0);
PCIE_TX_P : OUT std_logic_vector(3 DOWNTO 0);
bus_clk : OUT std_logic;
quiesce : OUT std_logic;
user_r_control_r_rden : OUT std_logic;
user_r_control_r_empty : IN std_logic := '0';
user_r_control_r_data : IN std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_r_control_r_eof : IN std_logic := '0';
user_r_control_r_open : OUT std_logic;
user_w_control_w_wren : OUT std_logic;
user_w_control_w_full : IN std_logic := '0';
user_w_control_w_data : OUT std_logic_vector(31 DOWNTO 0);
user_w_control_w_open : OUT std_logic;
user_r_data1_r_rden : OUT std_logic;
user_r_data1_r_empty : IN std_logic;
user_r_data1_r_data : IN std_logic_vector(31 DOWNTO 0);
user_r_data1_r_eof : IN std_logic;
user_r_data1_r_open : OUT std_logic;
user_w_data1_w_wren : OUT std_logic;
user_w_data1_w_full : IN std_logic;
user_w_data1_w_data : OUT std_logic_vector(31 DOWNTO 0);
user_w_data1_w_open : OUT std_logic;
user_r_data2_r_rden : OUT std_logic;
user_r_data2_r_empty : IN std_logic := '0';
user_r_data2_r_data : IN std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_r_data2_r_eof : IN std_logic := '0';
user_r_data2_r_open : OUT std_logic;
user_w_data2_w_wren : OUT std_logic;
user_w_data2_w_full : IN std_logic := '0';
user_w_data2_w_data : OUT std_logic_vector(31 DOWNTO 0);
user_w_data2_w_open : OUT std_logic);
end component;
 
component xilly_userlogiccmp_wrapper
port (
i_clk : in std_logic;
i_rst : in std_logic;
user_r_control_r_rden : in std_logic := '0';
user_r_control_r_empty : out std_logic := '1';
user_r_control_r_data : out std_logic_vector(31 DOWNTO 0);
user_w_control_w_wren : in std_logic := '0';
user_w_control_w_full : out std_logic := '0';
user_w_control_w_data : in std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_r_data1_r_rden : in std_logic := '0';
user_r_data1_r_empty : out std_logic := '1';
user_r_data1_r_data : out std_logic_vector(31 DOWNTO 0);
user_w_data1_w_wren : in std_logic := '0';
user_w_data1_w_full : out std_logic := '0';
user_w_data1_w_data : in std_logic_vector(31 DOWNTO 0) := ( others => '0' );
user_r_data2_r_rden : in std_logic := '0';
user_r_data2_r_empty : out std_logic := '1';
user_r_data2_r_data : out std_logic_vector(31 DOWNTO 0);
user_w_data2_w_wren : in std_logic := '0';
user_w_data2_w_full : out std_logic := '0';
user_w_data2_w_data : in std_logic_vector(31 DOWNTO 0) := ( others => '0' )
);
end component;
signal bus_clk : std_logic;
signal quiesce : std_logic;
 
signal user_r_control_r_rden : std_logic;
signal user_r_control_r_empty : std_logic;
signal user_r_control_r_data : std_logic_vector(31 DOWNTO 0);
--signal user_r_control_r_eof : std_logic;
signal user_r_control_r_open : std_logic;
signal user_w_control_w_wren : std_logic;
signal user_w_control_w_full : std_logic;
signal user_w_control_w_data : std_logic_vector(31 DOWNTO 0);
signal user_w_control_w_open : std_logic;
signal user_r_data1_r_rden : std_logic;
signal user_r_data1_r_empty : std_logic;
signal user_r_data1_r_data : std_logic_vector(31 DOWNTO 0);
--signal user_r_data1_r_eof : std_logic;
signal user_r_data1_r_open : std_logic;
signal user_w_data1_w_wren : std_logic;
signal user_w_data1_w_full : std_logic;
signal user_w_data1_w_data : std_logic_vector(31 DOWNTO 0);
signal user_w_data1_w_open : std_logic;
signal user_r_data2_r_rden : std_logic;
signal user_r_data2_r_empty : std_logic;
signal user_r_data2_r_data : std_logic_vector(31 DOWNTO 0);
--signal user_r_data2_r_eof : std_logic;
signal user_r_data2_r_open : std_logic;
signal user_w_data2_w_wren : std_logic;
signal user_w_data2_w_full : std_logic;
signal user_w_data2_w_data : std_logic_vector(31 DOWNTO 0);
signal user_w_data2_w_open : std_logic;
-- reset signal from xillybus. '1' when no device is open
signal s_reset : std_logic;
 
-- generated clock from ADC by iserdes_clock_generator:
signal s_iserdes_clk : std_logic;
signal s_iserdes_clk_div : std_logic;
-- Frame signal
signal s_data16_to_bitslip : std_logic_vector( 15 downto 0 );
signal s_data16_to_bitslip_valid : std_logic;
signal s_bitslip : std_logic;
signal s_bitslip_done : std_logic;
signal s_bitslip_drop_byte : std_logic;
signal s_bitslip_failed : std_logic;
signal s_bitslip_regged : std_logic;
signal s_bitslip_drop_byte_regged : std_logic;
-- from all ADC processing blocks:
signal s_from_processing_blocks_data : std_logic_vector( (C_NUM_INPUT_ADC_DATA_PORTS+1)*32 - 1 downto 0 ); -- +1 is space for output from frame
signal s_from_processing_blocks_valid : std_logic_vector( C_NUM_INPUT_ADC_DATA_PORTS+1 - 1 downto 0 );
signal s_from_processing_blocks_rden : std_logic_vector( C_NUM_INPUT_ADC_DATA_PORTS+1 - 1 downto 0 );
-- from multiplexer:
signal s_from_multiplexer_data : std_logic_vector( 31 downto 0 );
signal s_from_multiplexer_valid : std_logic;
signal s_from_multiplexer_full : std_logic;
-- SPI communication module:
signal s_spi_done : std_logic;
-- GPIO_DIP_SW register
signal s_gpio_dip_sw : std_logic_vector( 7 downto 0 );
signal s_valid_for_bitslip_processing : std_logic;
begin
-- Xillybus instantiation:
xillybus_ins : xillybus
port map (
-- Ports related to /dev/xillybus_control_r
-- FPGA to CPU signals:
user_r_control_r_rden => user_r_control_r_rden,
user_r_control_r_empty => user_r_control_r_empty,
user_r_control_r_data => user_r_control_r_data,
user_r_control_r_eof => '0',
user_r_control_r_open => user_r_control_r_open,
 
-- Ports related to /dev/xillybus_control_w
-- CPU to FPGA signals:
user_w_control_w_wren => user_w_control_w_wren,
user_w_control_w_full => user_w_control_w_full,
user_w_control_w_data => user_w_control_w_data,
user_w_control_w_open => user_w_control_w_open,
-- Ports related to /dev/xillybus_data1_r
-- FPGA to CPU signals:
user_r_data1_r_rden => user_r_data1_r_rden,
user_r_data1_r_empty => user_r_data1_r_empty,
user_r_data1_r_data => user_r_data1_r_data,
user_r_data1_r_eof => '0',
user_r_data1_r_open => user_r_data1_r_open,
 
-- Ports related to /dev/xillybus_data1_w
-- CPU to FPGA signals:
user_w_data1_w_wren => user_w_data1_w_wren,
user_w_data1_w_full => user_w_data1_w_full,
user_w_data1_w_data => user_w_data1_w_data,
user_w_data1_w_open => user_w_data1_w_open,
 
-- Ports related to /dev/xillybus_data2_r
-- FPGA to CPU signals:
user_r_data2_r_rden => user_r_data2_r_rden,
user_r_data2_r_empty => user_r_data2_r_empty,
user_r_data2_r_data => user_r_data2_r_data,
user_r_data2_r_eof => '0',
user_r_data2_r_open => user_r_data2_r_open,
 
-- Ports related to /dev/xillybus_data2_w
-- CPU to FPGA signals:
user_w_data2_w_wren => user_w_data2_w_wren,
user_w_data2_w_full => user_w_data2_w_full,
user_w_data2_w_data => user_w_data2_w_data,
user_w_data2_w_open => user_w_data2_w_open,
 
-- General signals
PCIE_PERST_B_LS => PCIE_PERST_B_LS,
PCIE_REFCLK_N => PCIE_REFCLK_N,
PCIE_REFCLK_P => PCIE_REFCLK_P,
PCIE_RX_N => PCIE_RX_N,
PCIE_RX_P => PCIE_RX_P,
GPIO_LED => GPIO_LED,
PCIE_TX_N => PCIE_TX_N,
PCIE_TX_P => PCIE_TX_P,
bus_clk => bus_clk,
quiesce => quiesce
);
 
s_reset <= '0' when user_r_control_r_open = '1' or
user_w_control_w_open = '1' or
user_r_data1_r_open = '1' or
user_w_data1_w_open = '1' or
user_r_data2_r_open = '1' or
user_w_data2_w_open = '1' or
s_gpio_dip_sw(0) = '0' else
'1';
-- register the gpio_dip_sw(0) with the 125MHz clock:
registers_for_gpio0 : process( bus_clk )
begin
if( rising_edge( bus_clk ) ) then
s_gpio_dip_sw(0) <= gpio_dip_sw(0);
s_gpio_dip_sw(2) <= gpio_dip_sw(2); -- used for SPI confifuration block that is clocked with bus_clk
end if;
end process;
-- register the gpio_dip_sw(1) with the clk_div clock:
registers_for_gpio1 : process( s_iserdes_clk_div )
begin
if( rising_edge( s_iserdes_clk_div ) ) then
s_gpio_dip_sw(1) <= gpio_dip_sw(1);
end if;
end process;
-- xilly_userlogiccmp_wrapper instantiation:
xilly_userlogiccmp_wrapper_inst : xilly_userlogiccmp_wrapper
port map (
i_clk => bus_clk,
i_rst => s_reset,
user_r_control_r_rden => user_r_control_r_rden,
user_r_control_r_empty => user_r_control_r_empty,
user_r_control_r_data => user_r_control_r_data,
user_w_control_w_wren => user_w_control_w_wren,
user_w_control_w_full => user_w_control_w_full,
user_w_control_w_data => user_w_control_w_data,
user_r_data1_r_rden => user_r_data1_r_rden,
user_r_data1_r_empty => user_r_data1_r_empty,
user_r_data1_r_data => user_r_data1_r_data,
user_w_data1_w_wren => user_w_data1_w_wren,
user_w_data1_w_full => user_w_data1_w_full,
user_w_data1_w_data => user_w_data1_w_data,
-- user_r_data2_r_rden => user_r_data2_r_rden,
-- user_r_data2_r_empty => user_r_data2_r_empty,
-- user_r_data2_r_data => user_r_data2_r_data,
-- user_w_data2_w_wren => user_w_data2_w_wren,
-- user_w_data2_w_full => user_w_data2_w_full,
-- user_w_data2_w_data => user_w_data2_w_data
user_r_data2_r_rden => open,
user_r_data2_r_empty => open,
user_r_data2_r_data => open,
user_w_data2_w_wren => open,
user_w_data2_w_full => open,
user_w_data2_w_data => open
);
 
 
 
 
 
 
 
-- tie outputs:
--OUT_TEST1 <= '0';
GPIO_LED2(0) <= s_bitslip_done;
GPIO_LED2(1) <= s_bitslip_failed;
GPIO_LED2(2) <= s_bitslip_drop_byte_regged;
GPIO_LED2(3) <= s_bitslip_regged;
 
ddd : process( s_iserdes_clk_div )
begin
if( rising_edge( s_iserdes_clk_div ) ) then
if( s_reset = '1' ) then
s_bitslip_regged <= '0';
s_bitslip_drop_byte_regged <= '0';
else
s_bitslip_regged <= s_bitslip_regged or s_bitslip;
s_bitslip_drop_byte_regged <= s_bitslip_drop_byte_regged or s_bitslip_drop_byte;
end if;
end if;
end process;
 
-----------------------------------------------------------------------------------------------
-- DATA PROCESSING:
-- Clock generator:
iserdes_clock_generator_inst : iserdes_clock_generator
port map (
CLK_IN_P => IN_CLK_FOR_DATA_P, CLK_IN_N => IN_CLK_FOR_DATA_N,
CLK_OUT => s_iserdes_clk, CLK_DIV_OUT => s_iserdes_clk_div, CLK_RESET => '0' );
-- FRAME signal processing block:
frame_processing_block_inst : entity work.processing_block
port map (
clk_iserdes_in => s_iserdes_clk, clk_iserdes_in_div => s_iserdes_clk_div, clk_global => bus_clk,
rst => s_reset,
bitslip => s_bitslip, bitslip_done => s_bitslip_done, bitslip_drop_byte => s_bitslip_drop_byte,
in_data_p => IN_FRAME_FOR_DATA_P, in_data_n => IN_FRAME_FOR_DATA_N,
in_data_swap_pn => C_FRAME_WIRES_SWAPPED_PN,
in_output_counting => s_gpio_dip_sw(1),
o_iserdes_output => s_data16_to_bitslip,
o_iserdes_output_valid => s_data16_to_bitslip_valid,
o_data => s_from_processing_blocks_data( 31 downto 0 ),
o_valid => s_from_processing_blocks_valid( 0 ),
i_rden => s_from_processing_blocks_rden( 0 )
);
-- bitslip processing:
s_valid_for_bitslip_processing <= s_data16_to_bitslip_valid and s_spi_done;
bitslip_compensation_inst : bitslip_compensation
port map (
clk => s_iserdes_clk_div, rst => s_reset,
i_data => s_data16_to_bitslip, i_valid => s_valid_for_bitslip_processing,
o_bitslip => s_bitslip, o_bitslip_done => s_bitslip_done, o_bitslip_drop_byte => s_bitslip_drop_byte, o_bitslip_failed => s_bitslip_failed );
-- ADCs signal processing blocks:
adc_proc_block_gen : for i in 0 to C_NUM_INPUT_ADC_DATA_PORTS - 1 generate
adc_processing_block_inst : entity work.processing_block
port map (
clk_iserdes_in => s_iserdes_clk, clk_iserdes_in_div => s_iserdes_clk_div, clk_global => bus_clk,
rst => s_reset,
bitslip => s_bitslip, bitslip_done => s_bitslip_done, bitslip_drop_byte => s_bitslip_drop_byte,
in_data_p => IN_DATA_ADC_P(i), in_data_n => IN_DATA_ADC_N(i),
in_data_swap_pn => C_DATA_WIRES_SWAPPED_PN(i),
in_output_counting => '0',
o_iserdes_output => open, o_iserdes_output_valid => open,
o_data => s_from_processing_blocks_data( 32*(i+1+1) - 1 downto 32*(i+1) ), -- i+1, because 31 downto 0 is used by the FRAME result
o_valid => s_from_processing_blocks_valid( i + 1 ),
i_rden => s_from_processing_blocks_rden( i + 1 )
);
end generate;
-- multiplexer:
multiplexer_from_fifos_inst : multiplexer_from_fifos
generic map (
G_NUM_CHANNELS => C_NUM_INPUT_ADC_DATA_PORTS + 1,
G_DATA_WIDTH => 32 )
port map (
clk => bus_clk, rst => s_reset,
i_data => s_from_processing_blocks_data, i_valid => s_from_processing_blocks_valid,
o_rden => s_from_processing_blocks_rden,
o_data => s_from_multiplexer_data, o_valid => s_from_multiplexer_valid, i_full => s_from_multiplexer_full
);
-- interface to xillybus:
-- FIFO_OUT instantiation:
data2_frame_fifo_out_inst : fifo_32x512_walmostfull
port map (
clk => bus_clk, srst => s_reset,
din => s_from_multiplexer_data, wr_en => s_from_multiplexer_valid, full => open, prog_full => s_from_multiplexer_full,
dout => user_r_data2_r_data, rd_en => user_r_data2_r_rden, empty => user_r_data2_r_empty, valid => open );
-----------------------------------------------------------------------------------------------
-- LO - Local Oscillator division module:
-- TODO: not tested: addition of the CE input. Will the ADCs configure themselves without CLOCK?
lo_divider_wrapper_inst : entity work.lo_divider_wrapper
generic map ( G_DIVISOR => 30 )
port map (
IN_CLK_LO_N => IN_CLK_LO_N, IN_CLK_LO_P => IN_CLK_LO_P, in_clk_enable => '1',
OUT_CLK_LO_DIVIDED_N => OUT_CLK_LO_DIVIDED_N, OUT_CLK_LO_DIVIDED_P => OUT_CLK_LO_DIVIDED_P );
-----------------------------------------------------------------------------------------------
-- SPI MASTER COMMUNICATION MODULE
spi_transmitter_wrapper_inst : entity work.spi_transmitter_wrapper
generic map(
G_DATA1 => C_SPI_ADC_DATA1,
G_DATA2 => C_SPI_ADC_DATA2,
G_NUM_BITS_PACKET => C_SPI_ADC_LENGTH,
G_NUM_PACKETS => C_SPI_ADC_PACKETS,
G_NUM_BITS_PAUSE => C_SPI_ADC_PAUSE )
port map(
i_clk125 => bus_clk, i_reset => s_reset, i_data_selector => s_gpio_dip_sw(2),
o_done => s_spi_done,
OUT_SPI_N_CE => OUT_SPI_N_CE, OUT_SPI_DOUT => OUT_SPI_DOUT, OUT_SPI_CLK => OUT_SPI_CLK );
end architecture;
 
/Designs/HAM Constructions/SDRX02A/HDL/project_src/xillybus_ml605_kakona.ucf
0,0 → 1,197
CONFIG PART = xc6vlx240t-ff1156-1;
 
# The location constraints for REFCLK are implicitly given by the choice
# of the input buffer.
 
#NET "PCIE_REFCLK_P" LOC = V6;
#NET "PCIE_REFCLK_N" LOC = V5;
INST "*/pcieclk_ibuf" LOC = IBUFDS_GTXE1_X0Y4;
 
INST "*/pcie/pcie_2_0_i/pcie_gt_i/gtx_v6_i/GTXD[0].GTX" LOC = GTXE1_X0Y15;
INST "*/pcie/pcie_2_0_i/pcie_gt_i/gtx_v6_i/GTXD[1].GTX" LOC = GTXE1_X0Y14;
INST "*/pcie/pcie_2_0_i/pcie_gt_i/gtx_v6_i/GTXD[2].GTX" LOC = GTXE1_X0Y13;
INST "*/pcie/pcie_2_0_i/pcie_gt_i/gtx_v6_i/GTXD[3].GTX" LOC = GTXE1_X0Y12;
INST "*/pcie/pcie_2_0_i/pcie_block_i" LOC = PCIE_X0Y1;
 
INST "*/pcie/pcie_clocking_i/mmcm_adv_i" LOC = MMCM_ADV_X0Y7;
 
NET "PCIE_REFCLK_P" TNM_NET = "SYSCLK" ;
NET "*/pcie/pcie_clocking_i/clk_125" TNM_NET = "CLK_125" ;
NET "*/pcie/TxOutClk_bufg" TNM_NET = "TXOUTCLKBUFG";
 
TIMESPEC "TS_SYSCLK" = PERIOD "SYSCLK" 250 MHz HIGH 50 % PRIORITY 100 ;
TIMESPEC "TS_CLK_125" = PERIOD "CLK_125" TS_SYSCLK/2 HIGH 50 % PRIORITY 1 ;
TIMESPEC "TS_TXOUTCLKBUFG" = PERIOD "TXOUTCLKBUFG" 250 MHz HIGH 50 % PRIORITY 100 ;
 
PIN "*/pcie/trn_reset_n_int_i.CLR" TIG ;
PIN "*/pcie/trn_reset_n_i.CLR" TIG ;
PIN "*/pcie/pcie_clocking_i/mmcm_adv_i.RST" TIG ;
 
NET "PCIE_PERST_B_LS" TIG;
NET "PCIE_PERST_B_LS" LOC = AE13 | IOSTANDARD = LVCMOS25 | PULLUP | NODELAY ;
 
NET "GPIO_LED[0]" LOC = "AC22"; # DS12
NET "GPIO_LED[1]" LOC = "AC24"; # DS11
NET "GPIO_LED[2]" LOC = "AE22"; # DS9
NET "GPIO_LED[3]" LOC = "AE23"; # DS10
 
#################################################################
############## SYCHRO1
 
# Incoming clock to be divided:
NET "IN_CLK_LO_N" LOC = "B10"; ## H5 on J63 FMC_LPC_CLK0_M2C_N
NET "IN_CLK_LO_P" LOC = "A10"; ## H4 on J63 FMC_LPC_CLK0_M2C_P
# Timing for that:
NET "IN_CLK_LO_P" TNM_NET = "LOCLK";
TIMESPEC "TS_LOCLK" = PERIOD "LOCLK" 300 MHz HIGH 50% PRIORITY 50;
 
# Divided clock:
NET "OUT_CLK_LO_DIVIDED_N" LOC = "E31"; ## D9 on J63 FMC_LPC_LA01_CC_N
NET "OUT_CLK_LO_DIVIDED_P" LOC = "F31"; ## D8 on J63 FMC_LPC_LA01_CC_P
#nejde NET "OUT_CLK_LO_DIVIDED_N" LOC = "M5"; ## D5 on J63 "FMC_LPC_GBTCLK0_M2C_N"
#nejde NET "OUT_CLK_LO_DIVIDED_P" LOC = "M6"; ## D4 on J63 "FMC_LPC_GBTCLK0_M2C_P"
 
##################################
# INCOMING DATA FROM ADCs
 
# Incoming clock synchronous to incoming data:
NET "IN_CLK_FOR_DATA_N" LOC = "G33"; ## G3 on J63 FMC_LPC_CLK1_M2C_N
NET "IN_CLK_FOR_DATA_P" LOC = "F33"; ## G2 on J63 FMC_LPC_CLK1_M2C_P
 
# Timing for that:
NET "IN_CLK_FOR_DATA_P" TNM_NET = "ADCDATACLK";
#TIMESPEC "TS_ADCDATACLK" = PERIOD "ADCDATACLK" 40 MHz HIGH 50% PRIORITY 50;
TIMESPEC "TS_ADCDATACLK" = PERIOD "ADCDATACLK" 80 MHz HIGH 50% PRIORITY 50; # freq to ADC is 10MHz
 
# Incoming frame signal:
NET "IN_FRAME_FOR_DATA_N" LOC = "L30"; ## C23 on J63 FMC_LPC_LA18_CC_N
NET "IN_FRAME_FOR_DATA_P" LOC = "L29"; ## C22 on J63 FMC_LPC_LA18_CC_P
 
# Incoming data signal:
NET "IN_DATA_ADC_N[0]" LOC = "B33"; ## G19 on J63 FMC_LPC_LA16_N SAS-P2_0_N
NET "IN_DATA_ADC_P[0]" LOC = "A33"; ## G18 on J63 FMC_LPC_LA16_P SAS-P2_0_P
NET "IN_DATA_ADC_N[1]" LOC = "D32"; ## H17 on J63 FMC_LPC_LA11_N SAS-P2_1_N
NET "IN_DATA_ADC_P[1]" LOC = "D31"; ## H16 on J63 FMC_LPC_LA11_P SAS-P2_1_P
NET "IN_DATA_ADC_N[2]" LOC = "N29"; ## D21 on J63 FMC_LPC_LA17_CC_N SAS-P3_0_N
NET "IN_DATA_ADC_P[2]" LOC = "N28"; ## D20 on J63 FMC_LPC_LA17_CC_P SAS-P3_0_P
NET "IN_DATA_ADC_N[3]" LOC = "B32"; ## H20 on J63 FMC_LPC_LA15_N SAS-P3_1_N
NET "IN_DATA_ADC_P[3]" LOC = "C32"; ## H19 on J63 FMC_LPC_LA15_P SAS-P3_1_P
 
# MiniSAS channels P0 and P1
#NET "IN_DATA_ADC_N[0]" LOC = "J32"; ## G10 on J63 FMC_LPC_LA03_N SAS-P0_0_N
#NET "IN_DATA_ADC_P[0]" LOC = "J31"; ## G9 on J63 FMC_LPC_LA03_P SAS-P0_0_P
#NET "IN_DATA_ADC_N[1]" LOC = "J29"; ## H11 on J63 FMC_LPC_LA04_N SAS-P0_1_N
#NET "IN_DATA_ADC_P[1]" LOC = "K28"; ## H10 on J63 FMC_LPC_LA04_P SAS-P0_1_P
#NET "IN_DATA_ADC_N[2]" LOC = "K29"; ## G13 on J63 FMC_LPC_LA08_N SAS-P1_0_N
#NET "IN_DATA_ADC_P[2]" LOC = "J30"; ## G12 on J63 FMC_LPC_LA08_P SAS-P1_0_P
#NET "IN_DATA_ADC_N[3]" LOC = "H32"; ## H14 on J63 FMC_LPC_LA07_N SAS-P1_1_N
#NET "IN_DATA_ADC_P[3]" LOC = "G32"; ## H13 on J63 FMC_LPC_LA07_P SAS-P1_1_P
 
 
#NET "IN_DATA_ADC_N[0]" LOC = "R27"; ## D24 on J63 FMC_LPC_LA23_N
#NET "IN_DATA_ADC_P[0]" LOC = "R28"; ## D23 on J63 FMC_LPC_LA23_P
#NET "IN_DATA_ADC_N[1]" LOC = "M32"; ## D27 on J63 FMC_LPC_LA26_N
#NET "IN_DATA_ADC_P[1]" LOC = "L33"; ## D26 on J63 FMC_LPC_LA26_P
#NET "IN_DATA_ADC_N[2]" LOC = "J29"; ## H11 on J63 "FMC_LPC_LA04_N"
#NET "IN_DATA_ADC_P[2]" LOC = "K28"; ## H10 on J63 "FMC_LPC_LA04_P"
#NET "IN_DATA_ADC_N[3]" LOC = "H33"; ## D12 on J63 "FMC_LPC_LA05_N"
#NET "IN_DATA_ADC_P[3]" LOC = "H34"; ## D11 on J63 "FMC_LPC_LA05_P"
#NET "IN_DATA_ADC_N[4]" LOC = "J34"; ## C11 on J63 "FMC_LPC_LA06_N"
#NET "IN_DATA_ADC_P[4]" LOC = "K33"; ## C10 on J63 "FMC_LPC_LA06_P"
#NET "IN_DATA_ADC_N[5]" LOC = "H32"; ## H14 on J63 "FMC_LPC_LA07_N"
#NET "IN_DATA_ADC_P[5]" LOC = "G32"; ## H13 on J63 "FMC_LPC_LA07_P"
#NET "IN_DATA_ADC_N[6]" LOC = "K29"; ## G13 on J63 "FMC_LPC_LA08_N"
#NET "IN_DATA_ADC_P[6]" LOC = "J30"; ## G12 on J63 "FMC_LPC_LA08_P"
#NET "IN_DATA_ADC_N[7]" LOC = "L26"; ## D15 on J63 "FMC_LPC_LA09_N"
#NET "IN_DATA_ADC_P[7]" LOC = "L25"; ## D14 on J63 "FMC_LPC_LA09_P"
#NET "IN_DATA_ADC_N[8]" LOC = "G30"; ## C15 on J63 "FMC_LPC_LA10_N"
#NET "IN_DATA_ADC_P[8]" LOC = "F30"; ## C14 on J63 "FMC_LPC_LA10_P"
#NET "IN_DATA_ADC_N[9]" LOC = "D32"; ## H17 on J63 "FMC_LPC_LA11_N"
#NET "IN_DATA_ADC_P[9]" LOC = "D31"; ## H16 on J63 "FMC_LPC_LA11_P"
#NET "IN_DATA_ADC_N[10]" LOC = "E33"; ## G16 on J63 "FMC_LPC_LA12_N"
#NET "IN_DATA_ADC_P[10]" LOC = "E32"; ## G15 on J63 "FMC_LPC_LA12_P"
#NET "IN_DATA_ADC_N[11]" LOC = "C34"; ## D18 on J63 "FMC_LPC_LA13_N"
#NET "IN_DATA_ADC_P[11]" LOC = "D34"; ## D17 on J63 "FMC_LPC_LA13_P"
#NET "IN_DATA_ADC_N[12]" LOC = "B34"; ## C19 on J63 "FMC_LPC_LA14_N"
#NET "IN_DATA_ADC_P[12]" LOC = "C33"; ## C18 on J63 "FMC_LPC_LA14_P"
#NET "IN_DATA_ADC_N[13]" LOC = "B32"; ## H20 on J63 "FMC_LPC_LA15_N"
#NET "IN_DATA_ADC_P[13]" LOC = "C32"; ## H19 on J63 "FMC_LPC_LA15_P"
#NET "IN_DATA_ADC_N[14]" LOC = "B33"; ## G19 on J63 "FMC_LPC_LA16_N"
#NET "IN_DATA_ADC_P[14]" LOC = "A33"; ## G18 on J63 "FMC_LPC_LA16_P"
#NET "IN_DATA_ADC_N[15]" LOC = "N29"; ## D21 on J63 "FMC_LPC_LA17_CC_N"
#NET "IN_DATA_ADC_P[15]" LOC = "N28"; ## D20 on J63 "FMC_LPC_LA17_CC_P"
 
##########################################################
 
# four other LEDs:
NET "GPIO_LED2[0]" LOC = "AB23"; ## 2 on LED DS15, 5 on J62
NET "GPIO_LED2[1]" LOC = "AG23"; ## 2 on LED DS14, 6 on J62
NET "GPIO_LED2[2]" LOC = "AE24"; ## 2 on LED DS22, 7 on J62
NET "GPIO_LED2[3]" LOC = "AD24"; ## 2 on LED DS21, 8 on J62
 
##########################################################
 
## SAS-interface AUX 1 ~ 8
#NET "SAS-AUX[1]" LOC = "B34"; ## C19 on J63 FMC_LPC_LA14_N
#NET "SAS-AUX[2]" LOC = "C33"; ## C18 on J63 FMC_LPC_LA14_P
#NET "SAS-AUX[3]" LOC = "E33"; ## G16 on J63 FMC_LPC_LA12_N
#NET "SAS-AUX[4]" LOC = "E32"; ## G15 on J63 FMC_LPC_LA12_P
#NET "SAS-AUX[5]" LOC = "C34"; ## D18 on J63 FMC_LPC_LA13_N ## SOLDERED TO GND
#NET "SAS-AUX[6]" LOC = "D34"; ## D17 on J63 FMC_LPC_LA13_P
#NET "SAS-AUX[7]" LOC = "L26"; ## D15 on J63 FMC_LPC_LA09_N
#NET "SAS-AUX[8]" LOC = "L25"; ## D14 on J63 FMC_LPC_LA09_P ## SOLDERED TO GND
 
## SAS-interface LVDS lines:
#NET "SAS-P0_0_N" LOC = "J32"; ## G10 on J63 FMC_LPC_LA03_N SAS-P0_0_N
#NET "SAS-P0_0_P" LOC = "J31"; ## G9 on J63 FMC_LPC_LA03_P SAS-P0_0_P
#NET "SAS-P0_1_N" LOC = "J29"; ## H11 on J63 FMC_LPC_LA04_N SAS-P0_1_N
#NET "SAS-P0_1_P" LOC = "K28"; ## H10 on J63 FMC_LPC_LA04_P SAS-P0_1_P
#NET "SAS-P1_0_N" LOC = "K29"; ## G13 on J63 FMC_LPC_LA08_N SAS-P1_0_N
#NET "SAS-P1_0_P" LOC = "J30"; ## G12 on J63 FMC_LPC_LA08_P SAS-P1_0_P
#NET "SAS-P1_1_N" LOC = "H32"; ## H14 on J63 FMC_LPC_LA07_N SAS-P1_1_N
#NET "SAS-P1_1_P" LOC = "G32"; ## H13 on J63 FMC_LPC_LA07_P SAS-P1_1_P
 
#NET "SAS-P2_0_N" LOC = "B33"; ## G19 on J63 FMC_LPC_LA16_N SAS-P2_0_N
#NET "SAS-P2_0_P" LOC = "A33"; ## G18 on J63 FMC_LPC_LA16_P SAS-P2_0_P
#NET "SAS-P2_1_N" LOC = "D32"; ## H17 on J63 FMC_LPC_LA11_N SAS-P2_1_N
#NET "SAS-P2_1_P" LOC = "D31"; ## H16 on J63 FMC_LPC_LA11_P SAS-P2_1_P
#NET "SAS-P3_0_N" LOC = "N29"; ## D21 on J63 FMC_LPC_LA17_CC_N SAS-P3_0_N
#NET "SAS-P3_0_P" LOC = "N28"; ## D20 on J63 FMC_LPC_LA17_CC_P SAS-P3_0_P
#NET "SAS-P3_1_N" LOC = "B32"; ## H20 on J63 FMC_LPC_LA15_N SAS-P3_1_N
#NET "SAS-P3_1_P" LOC = "C32"; ## H19 on J63 FMC_LPC_LA15_P SAS-P3_1_P
 
 
 
##########################################################
 
# SPI interface:
NET "OUT_SPI_DOUT" LOC = "B34" | SLEW = SLOW | DRIVE = 2; ## C19 on J63 FMC_LPC_LA14_N SAS-AUX[1]
NET "OUT_SPI_CLK" LOC = "C33" | SLEW = SLOW | DRIVE = 2; ## C18 on J63 FMC_LPC_LA14_P SAS-AUX[2]
NET "OUT_SPI_N_CE[0]" LOC = "E33" | SLEW = SLOW | DRIVE = 2; ## G16 on J63 FMC_LPC_LA12_N SAS-AUX[3]
NET "OUT_SPI_N_CE[1]" LOC = "E32" | SLEW = SLOW | DRIVE = 2; ## G15 on J63 FMC_LPC_LA12_P SAS-AUX[4]
 
# Locate the BUFR near the output pins so that the timing can be reached.
INST "spi_transmitter_wrapper_inst/BUFR_inst" LOC = BUFR_X0Y8;
 
# test:
#NET "OUT_TEST1" LOC = "E32" | SLEW = FAST; ## G15 on J63 FMC_LPC_LA12_P
 
# DUMMY hard-connected to ground.
NET "IN_DUMMY[0]" LOC = "C34"; ## D18 on J63 FMC_LPC_LA13_N ## SOLDERED TO GND
NET "IN_DUMMY[1]" LOC = "L25"; ## D14 on J63 FMC_LPC_LA09_P ## SOLDERED TO GND
 
###############################################
 
# DIP switch
NET "GPIO_DIP_SW<0>" LOC = "D22"; ## 1 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<1>" LOC = "C22"; ## 2 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<2>" LOC = "L21"; ## 3 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<3>" LOC = "L20"; ## 4 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<4>" LOC = "C18"; ## 5 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<5>" LOC = "B18"; ## 6 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<6>" LOC = "K22"; ## 7 on SW1 DIP switch (active-high)
NET "GPIO_DIP_SW<7>" LOC = "K21"; ## 8 on SW1 DIP switch (active-high)
 
 
 
 
/Designs/HAM Constructions/SDRX02A/PrjInfo.txt
6,10 → 6,10
UHF SDR přijímač
[InfoLongDescription.en]
New design of software defined receiver for high radio bands in GHz range. This construction have bandwidth of several MHz allowing demodulation of more sophisticated signals. Primary receiver interface is USB 2.0
New design of software defined receiver for high radio bands in GHz range. The receiver have extra wide bandwidth allowing demodulation of wide spread spectra signals. Primary data interface is PCI Express or Thunderbolt.
 
[InfoLongDescription.cs]
Konstrukce SDR přijímače pro vyšší rádiová pásma do několika GHz. Přijímač má rozšířenou šířko přijímaného pásma na několik MHz, což umožňuje sofistikovanější demodulaci signálů. Hlavní metodou připojení přijímače je USB port.
Konstrukce SDR přijímače pro vyšší rádiová pásma do několika GHz. Přijímač má velkou šířku pásma použitelnou pro příjem kmitočtově rozprostřených signálů. Hlavním datovým přenosovým rozhraním je PCI Express nebo Thunderbolt.
 
[InfoBuyUST]
 
/Designs/HAM Constructions/SDRX02A/SCH/Coherent_UHF_SDR_receiver.dia
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/Designs/HAM Constructions/SDRX02A/SCH/Coherent_UHF_SDR_receiver.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/Designs/HAM Constructions/SDRX02A/SCH/Coherent_UHF_SDR_receiver_demonstrator.dia
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/SCH/UHF_SDR_receiver.dia
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/Designs/HAM Constructions/SDRX02A/SCH/UHF_SDR_receiver.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/Designs/HAM Constructions/SDRX02A/SW/GRC/AM_receiver.grc
0,0 → 1,1805
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Mon Jun 2 17:32:41 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>Records_player</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>4096, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(235, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 494)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 425)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 357)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(335, 291)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(529, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 229)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(506, 325)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(504, 378)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 440)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(497, 493)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(131, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>audio_sink</key>
<param>
<key>id</key>
<value>audio_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>samp_rate</key>
<value>48000</value>
</param>
<param>
<key>device_name</key>
<value></value>
</param>
<param>
<key>ok_to_block</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1013, 974)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(653, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(893, 84)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['RF signal', 'Scope', 'Demod']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(245, 934)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(41, 214)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/dev/xillybus_data2_r</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(150, 96)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(935, 477)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1167, 343)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Demodulated Audio</value>
</param>
<param>
<key>samp_rate</key>
<value>48e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hamming</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(995, 729)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>variable_slider_0</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(793, 921)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>1024</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1024, 500</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1174, 134)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(863, 255)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>low_pass_filter</key>
<param>
<key>id</key>
<value>low_pass_filter_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fir_filter_ccf</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/20e3)</value>
</param>
<param>
<key>interp</key>
<value>1</value>
</param>
<param>
<key>gain</key>
<value>1</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>cutoff_freq</key>
<value>12e3</value>
</param>
<param>
<key>width</key>
<value>1e4</value>
</param>
<param>
<key>win</key>
<value>firdes.WIN_HAMMING</value>
</param>
<param>
<key>beta</key>
<value>6.76</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(114, 780)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>analog_am_demod_cf</key>
<param>
<key>id</key>
<value>analog_am_demod_cf_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>chan_rate</key>
<value>20e3</value>
</param>
<param>
<key>audio_decim</key>
<value>1</value>
</param>
<param>
<key>audio_pass</key>
<value>5000</value>
</param>
<param>
<key>audio_stop</key>
<value>6000</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(499, 826)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>rational_resampler_xxx</key>
<param>
<key>id</key>
<value>rational_resampler_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fff</value>
</param>
<param>
<key>interp</key>
<value>48</value>
</param>
<param>
<key>decim</key>
<value>20</value>
</param>
<param>
<key>taps</key>
<value></value>
</param>
<param>
<key>fbw</key>
<value>0</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 938)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>20e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(423, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>1</value>
</param>
<param>
<key>taps</key>
<value>[1]</value>
</param>
<param>
<key>center_freq</key>
<value>-20e3</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(867, 359)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable_slider</key>
<param>
<key>id</key>
<value>variable_slider_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>Volume</value>
</param>
<param>
<key>value</key>
<value>0.1</value>
</param>
<param>
<key>min</key>
<value>0</value>
</param>
<param>
<key>max</key>
<value>1</value>
</param>
<param>
<key>num_steps</key>
<value>100</value>
</param>
<param>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
</param>
<param>
<key>converver</key>
<value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>_coordinate</key>
<value>(111, 599)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rational_resampler_xxx_0</source_block_id>
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>analog_am_demod_cf_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_am_demod_cf_0</source_block_id>
<sink_block_id>rational_resampler_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/FM_receiver.grc
0,0 → 1,1797
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Mon Jun 2 17:39:40 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>Records_player</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>4096, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(235, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 494)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 425)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 357)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(335, 291)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(529, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 229)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(506, 325)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(504, 378)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 440)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(497, 493)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(131, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>audio_sink</key>
<param>
<key>id</key>
<value>audio_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>samp_rate</key>
<value>48000</value>
</param>
<param>
<key>device_name</key>
<value></value>
</param>
<param>
<key>ok_to_block</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1013, 974)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(653, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(893, 84)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['RF signal', 'Scope', 'Demod']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(245, 934)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(41, 214)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/dev/xillybus_data2_r</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(150, 96)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(935, 477)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1167, 343)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>500e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(423, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>analog_wfm_rcv</key>
<param>
<key>id</key>
<value>analog_wfm_rcv_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>quad_rate</key>
<value>500e3</value>
</param>
<param>
<key>audio_decimation</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(470, 841)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>rational_resampler_xxx</key>
<param>
<key>id</key>
<value>rational_resampler_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fff</value>
</param>
<param>
<key>interp</key>
<value>48</value>
</param>
<param>
<key>decim</key>
<value>500</value>
</param>
<param>
<key>taps</key>
<value></value>
</param>
<param>
<key>fbw</key>
<value>0</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 938)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Demodulated Audio</value>
</param>
<param>
<key>samp_rate</key>
<value>48e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hamming</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(995, 729)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>variable_slider_0</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(793, 921)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>1024</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1024, 500</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1174, 134)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(863, 255)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>1</value>
</param>
<param>
<key>taps</key>
<value>[1]</value>
</param>
<param>
<key>center_freq</key>
<value>-200e3</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(867, 359)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>low_pass_filter</key>
<param>
<key>id</key>
<value>low_pass_filter_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fir_filter_ccf</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/500e3)</value>
</param>
<param>
<key>interp</key>
<value>1</value>
</param>
<param>
<key>gain</key>
<value>1</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>cutoff_freq</key>
<value>100e3</value>
</param>
<param>
<key>width</key>
<value>1e5</value>
</param>
<param>
<key>win</key>
<value>firdes.WIN_HAMMING</value>
</param>
<param>
<key>beta</key>
<value>6.76</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(115, 780)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>variable_slider</key>
<param>
<key>id</key>
<value>variable_slider_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>Volume</value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>min</key>
<value>0</value>
</param>
<param>
<key>max</key>
<value>100</value>
</param>
<param>
<key>num_steps</key>
<value>100</value>
</param>
<param>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
</param>
<param>
<key>converver</key>
<value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>_coordinate</key>
<value>(111, 599)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>analog_wfm_rcv_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rational_resampler_xxx_0</source_block_id>
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_wfm_rcv_0</source_block_id>
<sink_block_id>rational_resampler_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/FM_stanice.txt
0,0 → 1,7
Naladit LO na: 88.402564 MHz
 
sudo ./usbsoftrock -m 2 set freq 88.402564
 
Nastavit vzorkovaci frekvenci na 5MHz
sudo ./setSi570.py 0 150
 
/Designs/HAM Constructions/SDRX02A/SW/GRC/Grabber.grc
0,0 → 1,1842
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Fri May 2 16:25:22 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>MLAB_ADC_Grabber</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value>MLAB ADC Grabber</value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value>Basic software for reading ADC data from ADCdual01A modules trought ML602 development board.</value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(235, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>prefix</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"/home/localuser/gnuradio/"</value>
</param>
<param>
<key>_coordinate</key>
<value>(523, 20)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>recfile</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat"</value>
</param>
<param>
<key>_coordinate</key>
<value>(338, 90)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 494)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 425)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 357)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(335, 291)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(529, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 229)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(504, 378)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(131, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>import</key>
<param>
<key>id</key>
<value>import_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>import</key>
<value>from datetime import datetime</value>
</param>
<param>
<key>_coordinate</key>
<value>(374, 16)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(41, 214)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>dc_blocker_xx</key>
<param>
<key>id</key>
<value>dc_blocker_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>cc</value>
</param>
<param>
<key>length</key>
<value>32</value>
</param>
<param>
<key>long_form</key>
<value>True</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(986, 279)</value>
</param>
<param>
<key>_rotation</key>
<value>90</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value>2, 2, 1 ,1</value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,0</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(894, 81)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(506, 325)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(827, 573)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 440)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(497, 493)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['Time wiev', 'Frequency wiev','numbers']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(98, 750)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_numbersink2</key>
<param>
<key>id</key>
<value>wxgui_numbersink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Number Plot</value>
</param>
<param>
<key>units</key>
<value>Units</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>min_value</key>
<value>-100</value>
</param>
<param>
<key>max_value</key>
<value>100</value>
</param>
<param>
<key>factor</key>
<value>1.0</value>
</param>
<param>
<key>decimal_places</key>
<value>10</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>number_rate</key>
<value>15</value>
</param>
<param>
<key>peak_hold</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>show_gauge</key>
<value>True</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,2</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 654)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value>1, 1, 1 ,1</value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1102, 97)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>dc_blocker_xx</key>
<param>
<key>id</key>
<value>dc_blocker_xx_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>cc</value>
</param>
<param>
<key>length</key>
<value>32</value>
</param>
<param>
<key>long_form</key>
<value>True</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(904, 656)</value>
</param>
<param>
<key>_rotation</key>
<value>90</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value>1, 2, 1 ,1</value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,0</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(679, 612)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>wxgui_numbersink2</key>
<param>
<key>id</key>
<value>wxgui_numbersink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Number Plot</value>
</param>
<param>
<key>units</key>
<value>Units</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>min_value</key>
<value>-100</value>
</param>
<param>
<key>max_value</key>
<value>100</value>
</param>
<param>
<key>factor</key>
<value>1.0</value>
</param>
<param>
<key>decimal_places</key>
<value>10</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>number_rate</key>
<value>15</value>
</param>
<param>
<key>peak_hold</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>show_gauge</key>
<value>True</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,2</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(516, 646)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(878, 322)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/dev/xillybus_data2_r</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(176, 124)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value>2, 1, 1 ,1</value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(977, 491)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_fftsink2</key>
<param>
<key>id</key>
<value>wxgui_fftsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC 2 FFT Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>y_per_div</key>
<value>10</value>
</param>
<param>
<key>y_divs</key>
<value>10</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>2048</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>peak_hold</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,1</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(988, 719)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_fftsink2</key>
<param>
<key>id</key>
<value>wxgui_fftsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC 1 FFT Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>y_per_div</key>
<value>10</value>
</param>
<param>
<key>y_divs</key>
<value>10</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>2048</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>peak_hold</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0,1</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1133, 342)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_sink</key>
<param>
<key>id</key>
<value>blocks_file_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>file</key>
<value>recfile</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>unbuffered</key>
<value>False</value>
</param>
<param>
<key>append</key>
<value>False</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(127, 594)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_file_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>dc_blocker_xx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dc_blocker_xx_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>dc_blocker_xx_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>wxgui_fftsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>wxgui_fftsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_numbersink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_numbersink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>dc_blocker_xx_1</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/Grabber_QT.grc
0,0 → 1,1167
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Wed Apr 9 16:47:01 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>top_block</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value></value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>qt_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(9, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1e7</value>
</param>
<param>
<key>_coordinate</key>
<value>(235, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 494)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 425)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 357)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(335, 291)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(131, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(795, 627)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/dev/xillybus_data2_r</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(124, 114)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(799, 545)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(534, 382)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(536, 329)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(787, 264)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_null_sink</key>
<param>
<key>id</key>
<value>blocks_null_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(716, 27)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(531, 444)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 497)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(993, 660)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>name</key>
<value>QT GUI Plot</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1097, 805)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(997, 354)</value>
</param>
<param>
<key>_rotation</key>
<value>90</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>name</key>
<value>QT GUI Plot</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1099, 260)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(529, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 229)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>qtgui_time_sink_x</key>
<param>
<key>id</key>
<value>qtgui_time_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>name</key>
<value>QT GUI Plot</value>
</param>
<param>
<key>size</key>
<value>1024</value>
</param>
<param>
<key>srate</key>
<value>samp_rate</value>
</param>
<param>
<key>ymin</key>
<value>-1</value>
</param>
<param>
<key>ymax</key>
<value>1</value>
</param>
<param>
<key>nconnections</key>
<value>2</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>tr_mode</key>
<value>qtgui.TRIG_MODE_FREE</value>
</param>
<param>
<key>tr_slope</key>
<value>qtgui.TRIG_SLOPE_POS</value>
</param>
<param>
<key>tr_level</key>
<value>0.0</value>
</param>
<param>
<key>tr_delay</key>
<value>0</value>
</param>
<param>
<key>tr_chan</key>
<value>0</value>
</param>
<param>
<key>tr_tag</key>
<value>""</value>
</param>
<param>
<key>entags</key>
<value>True</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(849, 102)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>blocks_throttle_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>blocks_null_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>blocks_null_sink_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_1</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_0</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>qtgui_time_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>qtgui_time_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/MLAB_ADC_Grabber.py
0,0 → 1,273
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: MLAB ADC Grabber
# Author: Jakub Kakona
# Description: Basic software for reading ADC data from ADCdual01A modules trought ML602 development board.
# Generated: Mon Jun 2 15:58:15 2014
##################################################
 
from datetime import datetime
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import fftsink2
from gnuradio.wxgui import numbersink2
from gnuradio.wxgui import scopesink2
from gnuradio.wxgui import waterfallsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx
 
class MLAB_ADC_Grabber(grc_wxgui.top_block_gui):
 
def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="MLAB ADC Grabber")
_icon_path = "/usr/local/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
 
##################################################
# Variables
##################################################
self.prefix = prefix = "/home/localuser/gnuradio/"
self.samp_rate = samp_rate = 5e6
self.recfile = recfile = prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat"
 
##################################################
# Blocks
##################################################
self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Time wiev")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Frequency wiev")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "numbers")
self.Add(self.notebook_0)
self.wxgui_waterfallsink2_0_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC1 Waterfall Plot",
)
self.notebook_0.GetPage(0).GridAdd(self.wxgui_waterfallsink2_0_0.win, 1, 1, 1, 1)
self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC2 Waterfall Plot",
win=window.hanning,
)
self.notebook_0.GetPage(0).GridAdd(self.wxgui_waterfallsink2_0.win, 2, 1, 1, 1)
self.wxgui_scopesink2_1 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(0).GetWin(),
title="Scope Plot",
sample_rate=samp_rate/2,
v_scale=0,
v_offset=0,
t_scale=1e-2,
ac_couple=False,
xy_mode=False,
num_inputs=2,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(0).GridAdd(self.wxgui_scopesink2_1.win, 2, 2, 1, 1)
self.wxgui_scopesink2_0 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(0).GetWin(),
title="Scope Plot",
sample_rate=samp_rate,
v_scale=0,
v_offset=0,
t_scale=0,
ac_couple=False,
xy_mode=False,
num_inputs=4,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(0).GridAdd(self.wxgui_scopesink2_0.win, 1, 2, 1, 1)
self.wxgui_numbersink2_1 = numbersink2.number_sink_f(
self.notebook_0.GetPage(2).GetWin(),
unit="Units",
minval=-100,
maxval=100,
factor=1.0,
decimal_places=10,
ref_level=0,
sample_rate=samp_rate,
number_rate=15,
average=False,
avg_alpha=None,
label="Number Plot",
peak_hold=False,
show_gauge=True,
)
self.notebook_0.GetPage(2).Add(self.wxgui_numbersink2_1.win)
self.wxgui_numbersink2_0 = numbersink2.number_sink_f(
self.notebook_0.GetPage(2).GetWin(),
unit="Units",
minval=-100,
maxval=100,
factor=1.0,
decimal_places=10,
ref_level=0,
sample_rate=samp_rate,
number_rate=15,
average=False,
avg_alpha=None,
label="Number Plot",
peak_hold=False,
show_gauge=True,
)
self.notebook_0.GetPage(2).Add(self.wxgui_numbersink2_0.win)
self.wxgui_fftsink2_1 = fftsink2.fft_sink_c(
self.notebook_0.GetPage(1).GetWin(),
baseband_freq=0,
y_per_div=10,
y_divs=10,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=2048,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC 1 FFT Plot",
peak_hold=False,
win=window.hanning,
)
self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_1.win)
self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
self.notebook_0.GetPage(1).GetWin(),
baseband_freq=0,
y_per_div=10,
y_divs=10,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=2048,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC 2 FFT Plot",
peak_hold=False,
win=window.hanning,
)
self.notebook_0.GetPage(1).Add(self.wxgui_fftsink2_0.win)
self.dc_blocker_xx_1 = filter.dc_blocker_cc(32, True)
self.dc_blocker_xx_0 = filter.dc_blocker_cc(32, True)
self.blocks_vector_to_streams_0 = blocks.vector_to_streams(gr.sizeof_short*1, 10)
self.blocks_throttle_2 = blocks.throttle(gr.sizeof_short*10, samp_rate/2)
self.blocks_short_to_float_2_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_2 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0 = blocks.short_to_float(1, 1)
self.blocks_interleave_0_2 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_1 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_float_to_complex_0_0 = blocks.float_to_complex(1)
self.blocks_float_to_complex_0 = blocks.float_to_complex(1)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_short*10, "/dev/xillybus_data2_r", False)
 
##################################################
# Connections
##################################################
self.connect((self.blocks_vector_to_streams_0, 2), (self.blocks_interleave_0_2, 0))
self.connect((self.blocks_vector_to_streams_0, 3), (self.blocks_interleave_0_2, 1))
self.connect((self.blocks_vector_to_streams_0, 4), (self.blocks_interleave_0_1, 0))
self.connect((self.blocks_vector_to_streams_0, 5), (self.blocks_interleave_0_1, 1))
self.connect((self.blocks_vector_to_streams_0, 6), (self.blocks_interleave_0_0, 0))
self.connect((self.blocks_vector_to_streams_0, 7), (self.blocks_interleave_0_0, 1))
self.connect((self.blocks_vector_to_streams_0, 8), (self.blocks_interleave_0, 0))
self.connect((self.blocks_vector_to_streams_0, 9), (self.blocks_interleave_0, 1))
self.connect((self.blocks_short_to_float_1, 0), (self.blocks_float_to_complex_0, 1))
self.connect((self.blocks_short_to_float_0, 0), (self.blocks_float_to_complex_0, 0))
self.connect((self.blocks_short_to_float_0_0, 0), (self.blocks_float_to_complex_0_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.blocks_float_to_complex_0_0, 1))
self.connect((self.blocks_vector_to_streams_0, 0), (self.blocks_short_to_float_2, 0))
self.connect((self.blocks_vector_to_streams_0, 1), (self.blocks_short_to_float_2_0, 0))
self.connect((self.blocks_short_to_float_2, 0), (self.wxgui_scopesink2_1, 0))
self.connect((self.blocks_short_to_float_2_0, 0), (self.wxgui_scopesink2_1, 1))
self.connect((self.blocks_short_to_float_0_0, 0), (self.wxgui_scopesink2_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.wxgui_scopesink2_0, 1))
self.connect((self.blocks_short_to_float_0, 0), (self.wxgui_scopesink2_0, 2))
self.connect((self.blocks_short_to_float_1, 0), (self.wxgui_scopesink2_0, 3))
self.connect((self.blocks_interleave_0_2, 0), (self.blocks_short_to_float_0_0, 0))
self.connect((self.blocks_interleave_0_1, 0), (self.blocks_short_to_float_1_0, 0))
self.connect((self.blocks_interleave_0_0, 0), (self.blocks_short_to_float_0, 0))
self.connect((self.blocks_interleave_0, 0), (self.blocks_short_to_float_1, 0))
self.connect((self.blocks_throttle_2, 0), (self.blocks_vector_to_streams_0, 0))
self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_2, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.dc_blocker_xx_0, 0))
self.connect((self.dc_blocker_xx_0, 0), (self.wxgui_waterfallsink2_0_0, 0))
self.connect((self.blocks_float_to_complex_0, 0), (self.dc_blocker_xx_1, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.wxgui_fftsink2_1, 0))
self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_fftsink2_0, 0))
self.connect((self.blocks_short_to_float_0, 0), (self.wxgui_numbersink2_1, 0))
self.connect((self.blocks_short_to_float_1, 0), (self.wxgui_numbersink2_0, 0))
self.connect((self.dc_blocker_xx_1, 0), (self.wxgui_waterfallsink2_0, 0))
 
 
# QT sink close method reimplementation
 
def get_prefix(self):
return self.prefix
 
def set_prefix(self, prefix):
self.prefix = prefix
self.set_recfile(self.prefix + datetime.now().strftime("%Y.%m.%d.%H.%M.%S") + ".dat")
 
def get_samp_rate(self):
return self.samp_rate
 
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.blocks_throttle_2.set_sample_rate(self.samp_rate/2)
self.wxgui_scopesink2_1.set_sample_rate(self.samp_rate/2)
self.wxgui_waterfallsink2_0_0.set_sample_rate(self.samp_rate)
self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate)
self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate)
self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate)
self.wxgui_fftsink2_1.set_sample_rate(self.samp_rate)
 
def get_recfile(self):
return self.recfile
 
def set_recfile(self, recfile):
self.recfile = recfile
 
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = MLAB_ADC_Grabber()
tb.Start(True)
tb.Wait()
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/SW/GRC/Player.grc
0,0 → 1,2271
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Fri May 30 02:00:44 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>Records_player</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>4096, 4096</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>LO</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>286078822.488</value>
</param>
<param>
<key>_coordinate</key>
<value>(1263, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>filename</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"2014.05.02.14.58.50.dat"</value>
</param>
<param>
<key>_coordinate</key>
<value>(488, 17)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>outfile_ADC2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>out_dir+filename+"ADC2.wav"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2284, 772)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>outfile_ADC1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>out_dir+filename+"ADC1.wav"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2293, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(200, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>srcfile</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>prefix+filename</value>
</param>
<param>
<key>_coordinate</key>
<value>(461, 103)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>normalize</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1/200.0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1384, 727)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>prefix</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"/media/kaklik/Radio_zaloha/2014-05-02/"</value>
</param>
<param>
<key>_coordinate</key>
<value>(276, 100)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>cutoff</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1000</value>
</param>
<param>
<key>_coordinate</key>
<value>(1609, 392)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>out_sample_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>int(2e3)</value>
</param>
<param>
<key>_coordinate</key>
<value>(1589, 487)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>out_dir</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"/home/kaklik/git/pysdr/"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2315, 32)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(68, 212)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(445, 484)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 348)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 416)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 485)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(452, 369)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(283, 282)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(449, 431)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>1</value>
</param>
<param>
<key>taps</key>
<value>[1]</value>
</param>
<param>
<key>center_freq</key>
<value>143050000-LO/2</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1360, 47)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(454, 316)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['RF signal', 'Scope', 'Demod']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(308, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(854, 369)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(624, 601)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(863, 255)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(383, 244)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(380, 191)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>1</value>
</param>
<param>
<key>taps</key>
<value>[1]</value>
</param>
<param>
<key>center_freq</key>
<value>143050000-LO/2</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1351, 417)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_wavfile_sink</key>
<param>
<key>id</key>
<value>blocks_wavfile_sink_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>outfile_ADC1</value>
</param>
<param>
<key>nchan</key>
<value>2</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>bits_per_sample</key>
<value>16</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2287, 279)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_wavfile_sink</key>
<param>
<key>id</key>
<value>blocks_wavfile_sink_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>outfile_ADC2</value>
</param>
<param>
<key>nchan</key>
<value>2</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>bits_per_sample</key>
<value>16</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2297, 657)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(694, 134)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_conjugate_cc</key>
<param>
<key>id</key>
<value>blocks_multiply_conjugate_cc_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1868, 493)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1200, 400</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1815, 856)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1200,400</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1804, 51)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>1024</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(950, 31)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(967, 546)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>low_pass_filter</key>
<param>
<key>id</key>
<value>low_pass_filter_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fir_filter_ccf</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/out_sample_rate)</value>
</param>
<param>
<key>interp</key>
<value>1</value>
</param>
<param>
<key>gain</key>
<value>normalize</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>cutoff_freq</key>
<value>cutoff</value>
</param>
<param>
<key>width</key>
<value>1e3</value>
</param>
<param>
<key>win</key>
<value>firdes.WIN_HAMMING</value>
</param>
<param>
<key>beta</key>
<value>6.76</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1528, 206)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_complex_to_float</key>
<param>
<key>id</key>
<value>blocks_complex_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1868, 329)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2108, 474)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>low_pass_filter</key>
<param>
<key>id</key>
<value>low_pass_filter_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fir_filter_ccf</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/out_sample_rate)</value>
</param>
<param>
<key>interp</key>
<value>1</value>
</param>
<param>
<key>gain</key>
<value>normalize</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>cutoff_freq</key>
<value>cutoff</value>
</param>
<param>
<key>width</key>
<value>1e3</value>
</param>
<param>
<key>win</key>
<value>firdes.WIN_HAMMING</value>
</param>
<param>
<key>beta</key>
<value>6.76</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1554, 607)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_complex_to_float</key>
<param>
<key>id</key>
<value>blocks_complex_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1815, 725)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(20, 211)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_file_sink</key>
<param>
<key>id</key>
<value>blocks_file_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>file</key>
<value></value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>unbuffered</key>
<value>False</value>
</param>
<param>
<key>append</key>
<value>False</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(129, 593)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/home/localuser/gnuradio/2014.05.02.15.40.33.dat</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(151, 96)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>blocks_complex_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0_0</source_block_id>
<sink_block_id>blocks_complex_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0_0</source_block_id>
<sink_block_id>low_pass_filter_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1_0</sink_block_id>
<source_key>1</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1</sink_block_id>
<source_key>1</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0_0</source_block_id>
<sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_conjugate_cc_0</source_block_id>
<sink_block_id>wxgui_scopesink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_file_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/Player_balance.grc
0,0 → 1,2486
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Fri May 30 01:35:13 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>Records_player</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>4096, 4096</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>out_sample_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>int(2e3)</value>
</param>
<param>
<key>_coordinate</key>
<value>(1419, 542)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>normalize</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1/200.0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1476, 734)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>tune</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>143050000-LO/2</value>
</param>
<param>
<key>_coordinate</key>
<value>(1426, 617)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>filename</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"2014.05.02.15.59.35.dat"</value>
</param>
<param>
<key>_coordinate</key>
<value>(488, 17)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>cutoff</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>1000</value>
</param>
<param>
<key>_coordinate</key>
<value>(1584, 367)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>srcfile</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>prefix+filename</value>
</param>
<param>
<key>_coordinate</key>
<value>(461, 103)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>prefix</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"/media/kaklik/Radio_zaloha/2014-05-02/"</value>
</param>
<param>
<key>_coordinate</key>
<value>(276, 100)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>out_dir</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>"/home/kaklik/git/pysdr/"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2316, 31)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(200, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>outfile_ADC1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>out_dir+filename+"ADC1.wav"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2293, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>LO</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>284078796.988</value>
</param>
<param>
<key>_coordinate</key>
<value>(1263, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>outfile_ADC2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>out_dir+filename+"ADC2.wav"</value>
</param>
<param>
<key>_coordinate</key>
<value>(2284, 769)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(68, 212)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(445, 484)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 348)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 416)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(282, 485)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(452, 369)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(283, 282)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(449, 431)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(454, 316)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['RF signal', 'Scope', 'Demod']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(308, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(624, 601)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(383, 244)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(380, 191)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(694, 134)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(863, 255)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>1024</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1161, 2)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>channels_iqbal_gen</key>
<param>
<key>id</key>
<value>channels_iqbal_gen_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>mag</key>
<value>1</value>
</param>
<param>
<key>phase</key>
<value>0</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1053, 224)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(854, 369)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1193, 738)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>channels_iqbal_gen</key>
<param>
<key>id</key>
<value>channels_iqbal_gen_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>mag</key>
<value>1</value>
</param>
<param>
<key>phase</key>
<value>0</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1037, 429)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1200, 400</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1815, 856)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value>1200,400</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1804, 51)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_wavfile_sink</key>
<param>
<key>id</key>
<value>blocks_wavfile_sink_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>file</key>
<value>outfile_ADC2</value>
</param>
<param>
<key>nchan</key>
<value>2</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>bits_per_sample</key>
<value>16</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2297, 657)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable_slider</key>
<param>
<key>id</key>
<value>variable_slider_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>value</key>
<value>0</value>
</param>
<param>
<key>min</key>
<value>-2.5e6</value>
</param>
<param>
<key>max</key>
<value>2.5e6</value>
</param>
<param>
<key>num_steps</key>
<value>int(1e3)</value>
</param>
<param>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
</param>
<param>
<key>converver</key>
<value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>_coordinate</key>
<value>(1395, 232)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_complex_to_float</key>
<param>
<key>id</key>
<value>blocks_complex_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(2053, 739)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 195)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>analog_wfm_rcv</key>
<param>
<key>id</key>
<value>analog_wfm_rcv_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>quad_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>audio_decimation</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(2046, 825)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2104, 399)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_complex_to_float</key>
<param>
<key>id</key>
<value>blocks_complex_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1836, 329)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_wavfile_sink</key>
<param>
<key>id</key>
<value>blocks_wavfile_sink_1</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>file</key>
<value>outfile_ADC1</value>
</param>
<param>
<key>nchan</key>
<value>2</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>bits_per_sample</key>
<value>16</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2287, 279)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2327, 476)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>srcfile</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(151, 96)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/out_sample_rate)</value>
</param>
<param>
<key>taps</key>
<value>firdes.low_pass(normalize, samp_rate, cutoff, cutoff, firdes.WIN_HAMMING)</value>
</param>
<param>
<key>center_freq</key>
<value>variable_slider_1</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1356, 419)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>freq_xlating_fir_filter_xxx</key>
<param>
<key>id</key>
<value>freq_xlating_fir_filter_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>ccc</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/out_sample_rate)</value>
</param>
<param>
<key>taps</key>
<value>firdes.low_pass(normalize, samp_rate, cutoff, cutoff, firdes.WIN_HAMMING)</value>
</param>
<param>
<key>center_freq</key>
<value>variable_slider_1</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1361, 48)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_conjugate_cc</key>
<param>
<key>id</key>
<value>blocks_multiply_conjugate_cc_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(1863, 456)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>audio_sink</key>
<param>
<key>id</key>
<value>audio_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>samp_rate</key>
<value>48000</value>
</param>
<param>
<key>device_name</key>
<value></value>
</param>
<param>
<key>ok_to_block</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(2298, 921)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>analog_nbfm_rx</key>
<param>
<key>id</key>
<value>analog_nbfm_rx_0</value>
</param>
<param>
<key>_enabled</key>
<value>False</value>
</param>
<param>
<key>audio_rate</key>
<value>48000</value>
</param>
<param>
<key>quad_rate</key>
<value>out_sample_rate</value>
</param>
<param>
<key>tau</key>
<value>75e-6</value>
</param>
<param>
<key>max_dev</key>
<value>5e3</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(2048, 913)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1_0</sink_block_id>
<source_key>1</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_complex_to_float_0</source_block_id>
<sink_block_id>blocks_wavfile_sink_1</sink_block_id>
<source_key>1</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>channels_iqbal_gen_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>channels_iqbal_gen_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>channels_iqbal_gen_0</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>channels_iqbal_gen_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>channels_iqbal_gen_1</source_block_id>
<sink_block_id>freq_xlating_fir_filter_xxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>channels_iqbal_gen_1</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0_0</source_block_id>
<sink_block_id>blocks_complex_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_wfm_rcv_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>analog_wfm_rcv_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_nbfm_rx_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_conjugate_cc_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0_0</source_block_id>
<sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>analog_nbfm_rx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_conjugate_cc_0</source_block_id>
<sink_block_id>blocks_complex_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_conjugate_cc_0</source_block_id>
<sink_block_id>wxgui_scopesink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>freq_xlating_fir_filter_xxx_0</source_block_id>
<sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/Player_fm.grc
0,0 → 1,1789
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Mon May 12 22:03:48 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>Records_player</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value>Jakub Kakona</value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>4096, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>wx_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>5e6</value>
</param>
<param>
<key>_coordinate</key>
<value>(235, 14)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 494)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 425)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(334, 357)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_interleave</key>
<param>
<key>id</key>
<value>blocks_interleave_0_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(335, 291)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(529, 166)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(527, 229)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(506, 325)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(504, 378)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 440)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_short_to_float</key>
<param>
<key>id</key>
<value>blocks_short_to_float_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>scale</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(497, 493)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_vector_to_streams</key>
<param>
<key>id</key>
<value>blocks_vector_to_streams_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>num_streams</key>
<value>10</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(131, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(863, 255)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(835, 598)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>variable_slider_0</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(814, 929)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>low_pass_filter</key>
<param>
<key>id</key>
<value>low_pass_filter_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fir_filter_ccf</value>
</param>
<param>
<key>decim</key>
<value>int(samp_rate/500e3)</value>
</param>
<param>
<key>interp</key>
<value>1</value>
</param>
<param>
<key>gain</key>
<value>1</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>cutoff_freq</key>
<value>100e3</value>
</param>
<param>
<key>width</key>
<value>1e6</value>
</param>
<param>
<key>win</key>
<value>firdes.WIN_HAMMING</value>
</param>
<param>
<key>beta</key>
<value>6.76</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(81, 799)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>audio_sink</key>
<param>
<key>id</key>
<value>audio_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>samp_rate</key>
<value>48000</value>
</param>
<param>
<key>device_name</key>
<value></value>
</param>
<param>
<key>ok_to_block</key>
<value>True</value>
</param>
<param>
<key>num_inputs</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1013, 974)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>0</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>4</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(653, 609)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC2 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hanning</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1079, 539)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
<value>wxgui_scopesink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Scope Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate/2</value>
</param>
<param>
<key>v_scale</key>
<value>0</value>
</param>
<param>
<key>v_offset</key>
<value>0</value>
</param>
<param>
<key>t_scale</key>
<value>1e-2</value>
</param>
<param>
<key>ac_couple</key>
<value>False</value>
</param>
<param>
<key>xy_mode</key>
<value>False</value>
</param>
<param>
<key>num_inputs</key>
<value>2</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 1</value>
</param>
<param>
<key>trig_mode</key>
<value>wxgui.TRIG_MODE_AUTO</value>
</param>
<param>
<key>y_axis_label</key>
<value>Counts</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(893, 84)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>notebook</key>
<param>
<key>id</key>
<value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>style</key>
<value>wx.NB_TOP</value>
</param>
<param>
<key>labels</key>
<value>['RF signal', 'Scope', 'Demod']</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(245, 934)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable_slider</key>
<param>
<key>id</key>
<value>variable_slider_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>min</key>
<value>0</value>
</param>
<param>
<key>max</key>
<value>10</value>
</param>
<param>
<key>num_steps</key>
<value>100</value>
</param>
<param>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
</param>
<param>
<key>converver</key>
<value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>_coordinate</key>
<value>(78, 634)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>IF Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>500e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.blackmanharris</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(339, 647)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>title</key>
<value>Demodulated Audio</value>
</param>
<param>
<key>samp_rate</key>
<value>48e3</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>512</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>window.hamming</value>
</param>
<param>
<key>win_size</key>
<value></value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 2</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(971, 758)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>wxgui_waterfallsink2</key>
<param>
<key>id</key>
<value>wxgui_waterfallsink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>title</key>
<value>ADC1 Waterfall Plot</value>
</param>
<param>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>baseband_freq</key>
<value>0</value>
</param>
<param>
<key>dynamic_range</key>
<value>100</value>
</param>
<param>
<key>ref_level</key>
<value>0</value>
</param>
<param>
<key>ref_scale</key>
<value>2.0</value>
</param>
<param>
<key>fft_size</key>
<value>4096</value>
</param>
<param>
<key>fft_rate</key>
<value>15</value>
</param>
<param>
<key>average</key>
<value>False</value>
</param>
<param>
<key>avg_alpha</key>
<value>0</value>
</param>
<param>
<key>win</key>
<value>None</value>
</param>
<param>
<key>win_size</key>
<value>4096, 500</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>notebook</key>
<value>notebook_0, 0</value>
</param>
<param>
<key>freqvar</key>
<value>None</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(1062, 148)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>analog_wfm_rcv</key>
<param>
<key>id</key>
<value>analog_wfm_rcv_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>quad_rate</key>
<value>500e3</value>
</param>
<param>
<key>audio_decimation</key>
<value>1</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(501, 860)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>rational_resampler_xxx</key>
<param>
<key>id</key>
<value>rational_resampler_xxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>fff</value>
</param>
<param>
<key>interp</key>
<value>48</value>
</param>
<param>
<key>decim</key>
<value>500</value>
</param>
<param>
<key>taps</key>
<value></value>
</param>
<param>
<key>fbw</key>
<value>0</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(509, 953)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_2</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate/2</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(41, 214)</value>
</param>
<param>
<key>_rotation</key>
<value>270</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/home/localuser/gnuradio/2014.05.02.15.40.33.dat</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>repeat</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(150, 96)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
</block>
<block>
<key>blocks_file_sink</key>
<param>
<key>id</key>
<value>blocks_file_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/home/localuser/data_example_2014.05.02.15.40.33.dat</value>
</param>
<param>
<key>type</key>
<value>short</value>
</param>
<param>
<key>vlen</key>
<value>10</value>
</param>
<param>
<key>unbuffered</key>
<value>False</value>
</param>
<param>
<key>append</key>
<value>False</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(88, 540)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>2</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_2</sink_block_id>
<source_key>3</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>4</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_1</sink_block_id>
<source_key>5</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>6</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0_0</sink_block_id>
<source_key>7</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>8</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_interleave_0</sink_block_id>
<source_key>9</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_vector_to_streams_0</source_block_id>
<sink_block_id>blocks_short_to_float_2_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_2_0</source_block_id>
<sink_block_id>wxgui_scopesink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_0</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>2</sink_key>
</connection>
<connection>
<source_block_id>blocks_short_to_float_1</source_block_id>
<sink_block_id>wxgui_scopesink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>3</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_2</source_block_id>
<sink_block_id>blocks_short_to_float_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_1</source_block_id>
<sink_block_id>blocks_short_to_float_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0_0</source_block_id>
<sink_block_id>blocks_short_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_interleave_0</source_block_id>
<sink_block_id>blocks_short_to_float_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_vector_to_streams_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_throttle_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>analog_wfm_rcv_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rational_resampler_xxx_0</source_block_id>
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>audio_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>low_pass_filter_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>wxgui_waterfallsink2_2</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_wfm_rcv_0</source_block_id>
<sink_block_id>rational_resampler_xxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_2</source_block_id>
<sink_block_id>blocks_file_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0_0</source_block_id>
<sink_block_id>low_pass_filter_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
/Designs/HAM Constructions/SDRX02A/SW/GRC/Records_player.py
0,0 → 1,335
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Records Player
# Author: Jakub Kakona
# Generated: Fri May 30 01:39:46 2014
##################################################
 
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import scopesink2
from gnuradio.wxgui import waterfallsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx
 
class Records_player(grc_wxgui.top_block_gui):
 
def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="Records Player")
_icon_path = "/usr/local/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
 
##################################################
# Variables
##################################################
self.prefix = prefix = "/media/kaklik/Radio_zaloha/2014-05-02/"
self.out_dir = out_dir = "/home/kaklik/git/pysdr/"
self.filename = filename = "2014.05.02.14.58.50.dat"
self.srcfile = srcfile = prefix+filename
self.samp_rate = samp_rate = 5e6
self.outfile_ADC2 = outfile_ADC2 = out_dir+filename+"ADC2.wav"
self.outfile_ADC1 = outfile_ADC1 = out_dir+filename+"ADC1.wav"
self.out_sample_rate = out_sample_rate = int(2e3)
self.normalize = normalize = 1/200.0
self.cutoff = cutoff = 1000
self.LO = LO = 286078822.488
 
##################################################
# Blocks
##################################################
self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF signal")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Scope")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod")
self.Add(self.notebook_0)
self.wxgui_waterfallsink2_1_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(2).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=out_sample_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="IF Plot",
win=window.blackmanharris,
size=(1200, 400),
)
self.notebook_0.GetPage(2).Add(self.wxgui_waterfallsink2_1_0.win)
self.wxgui_waterfallsink2_1 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(2).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=out_sample_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="IF Plot",
win=window.blackmanharris,
size=(1200,400),
)
self.notebook_0.GetPage(2).Add(self.wxgui_waterfallsink2_1.win)
self.wxgui_waterfallsink2_0_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=1024,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC1 Waterfall Plot",
)
self.notebook_0.GetPage(0).Add(self.wxgui_waterfallsink2_0_0.win)
self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC2 Waterfall Plot",
win=window.hanning,
)
self.notebook_0.GetPage(0).Add(self.wxgui_waterfallsink2_0.win)
self.wxgui_scopesink2_2 = scopesink2.scope_sink_c(
self.GetWin(),
title="Scope Plot",
sample_rate=out_sample_rate,
v_scale=0,
v_offset=0,
t_scale=0,
ac_couple=False,
xy_mode=True,
num_inputs=1,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.Add(self.wxgui_scopesink2_2.win)
self.wxgui_scopesink2_1 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(1).GetWin(),
title="Scope Plot",
sample_rate=samp_rate/2,
v_scale=0,
v_offset=0,
t_scale=1e-2,
ac_couple=False,
xy_mode=False,
num_inputs=2,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(1).Add(self.wxgui_scopesink2_1.win)
self.wxgui_scopesink2_0 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(1).GetWin(),
title="Scope Plot",
sample_rate=samp_rate,
v_scale=0,
v_offset=0,
t_scale=0,
ac_couple=False,
xy_mode=False,
num_inputs=4,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(1).Add(self.wxgui_scopesink2_0.win)
self.low_pass_filter_0_0 = filter.fir_filter_ccf(int(samp_rate/out_sample_rate), firdes.low_pass(
normalize, samp_rate, cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0 = filter.fir_filter_ccf(int(samp_rate/out_sample_rate), firdes.low_pass(
normalize, samp_rate, cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc(1, ([1]), 143050000-LO/2, samp_rate)
self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(1, ([1]), 143050000-LO/2, samp_rate)
self.blocks_wavfile_sink_1_0 = blocks.wavfile_sink(outfile_ADC2, 2, out_sample_rate, 16)
self.blocks_wavfile_sink_1 = blocks.wavfile_sink(outfile_ADC1, 2, out_sample_rate, 16)
self.blocks_vector_to_streams_0 = blocks.vector_to_streams(gr.sizeof_short*1, 10)
self.blocks_short_to_float_2_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_2 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0 = blocks.short_to_float(1, 1)
self.blocks_multiply_conjugate_cc_0 = blocks.multiply_conjugate_cc(1)
self.blocks_interleave_0_2 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_1 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_float_to_complex_0_0 = blocks.float_to_complex(1)
self.blocks_float_to_complex_0 = blocks.float_to_complex(1)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_short*10, srcfile, False)
self.blocks_complex_to_float_0_0 = blocks.complex_to_float(1)
self.blocks_complex_to_float_0 = blocks.complex_to_float(1)
 
##################################################
# Connections
##################################################
self.connect((self.blocks_vector_to_streams_0, 2), (self.blocks_interleave_0_2, 0))
self.connect((self.blocks_vector_to_streams_0, 3), (self.blocks_interleave_0_2, 1))
self.connect((self.blocks_vector_to_streams_0, 4), (self.blocks_interleave_0_1, 0))
self.connect((self.blocks_vector_to_streams_0, 5), (self.blocks_interleave_0_1, 1))
self.connect((self.blocks_vector_to_streams_0, 6), (self.blocks_interleave_0_0, 0))
self.connect((self.blocks_vector_to_streams_0, 7), (self.blocks_interleave_0_0, 1))
self.connect((self.blocks_vector_to_streams_0, 8), (self.blocks_interleave_0, 0))
self.connect((self.blocks_vector_to_streams_0, 9), (self.blocks_interleave_0, 1))
self.connect((self.blocks_file_source_0, 0), (self.blocks_vector_to_streams_0, 0))
self.connect((self.blocks_interleave_0, 0), (self.blocks_short_to_float_1, 0))
self.connect((self.blocks_interleave_0_0, 0), (self.blocks_short_to_float_0, 0))
self.connect((self.blocks_short_to_float_1, 0), (self.wxgui_scopesink2_0, 3))
self.connect((self.blocks_short_to_float_0, 0), (self.wxgui_scopesink2_0, 2))
self.connect((self.blocks_interleave_0_1, 0), (self.blocks_short_to_float_1_0, 0))
self.connect((self.blocks_interleave_0_2, 0), (self.blocks_short_to_float_0_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.blocks_complex_to_float_0, 0))
self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.low_pass_filter_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.wxgui_waterfallsink2_1, 0))
self.connect((self.low_pass_filter_0_0, 0), (self.blocks_complex_to_float_0_0, 0))
self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.low_pass_filter_0_0, 0))
self.connect((self.low_pass_filter_0_0, 0), (self.wxgui_waterfallsink2_1_0, 0))
self.connect((self.blocks_short_to_float_2_0, 0), (self.wxgui_scopesink2_1, 1))
self.connect((self.blocks_short_to_float_2, 0), (self.wxgui_scopesink2_1, 0))
self.connect((self.blocks_vector_to_streams_0, 1), (self.blocks_short_to_float_2_0, 0))
self.connect((self.blocks_vector_to_streams_0, 0), (self.blocks_short_to_float_2, 0))
self.connect((self.blocks_float_to_complex_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0))
self.connect((self.blocks_short_to_float_0_0, 0), (self.blocks_float_to_complex_0_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.blocks_float_to_complex_0_0, 1))
self.connect((self.blocks_short_to_float_1, 0), (self.blocks_float_to_complex_0, 1))
self.connect((self.blocks_short_to_float_0, 0), (self.blocks_float_to_complex_0, 0))
self.connect((self.blocks_short_to_float_0_0, 0), (self.wxgui_scopesink2_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.wxgui_scopesink2_0, 1))
self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_waterfallsink2_0, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.wxgui_waterfallsink2_0_0, 0))
self.connect((self.blocks_complex_to_float_0_0, 0), (self.blocks_wavfile_sink_1_0, 0))
self.connect((self.blocks_complex_to_float_0_0, 1), (self.blocks_wavfile_sink_1_0, 1))
self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_wavfile_sink_1, 0))
self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_wavfile_sink_1, 1))
self.connect((self.low_pass_filter_0, 0), (self.blocks_multiply_conjugate_cc_0, 0))
self.connect((self.low_pass_filter_0_0, 0), (self.blocks_multiply_conjugate_cc_0, 1))
self.connect((self.blocks_multiply_conjugate_cc_0, 0), (self.wxgui_scopesink2_2, 0))
 
 
# QT sink close method reimplementation
 
def get_prefix(self):
return self.prefix
 
def set_prefix(self, prefix):
self.prefix = prefix
self.set_srcfile(self.prefix+self.filename)
 
def get_out_dir(self):
return self.out_dir
 
def set_out_dir(self, out_dir):
self.out_dir = out_dir
self.set_outfile_ADC2(self.out_dir+self.filename+"ADC2.wav")
self.set_outfile_ADC1(self.out_dir+self.filename+"ADC1.wav")
 
def get_filename(self):
return self.filename
 
def set_filename(self, filename):
self.filename = filename
self.set_outfile_ADC2(self.out_dir+self.filename+"ADC2.wav")
self.set_outfile_ADC1(self.out_dir+self.filename+"ADC1.wav")
self.set_srcfile(self.prefix+self.filename)
 
def get_srcfile(self):
return self.srcfile
 
def set_srcfile(self, srcfile):
self.srcfile = srcfile
self.blocks_file_source_0.open(self.srcfile, False)
 
def get_samp_rate(self):
return self.samp_rate
 
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate)
self.wxgui_scopesink2_1.set_sample_rate(self.samp_rate/2)
self.wxgui_waterfallsink2_0_0.set_sample_rate(self.samp_rate)
self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate)
self.low_pass_filter_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
 
def get_outfile_ADC2(self):
return self.outfile_ADC2
 
def set_outfile_ADC2(self, outfile_ADC2):
self.outfile_ADC2 = outfile_ADC2
self.blocks_wavfile_sink_1_0.open(self.outfile_ADC2)
 
def get_outfile_ADC1(self):
return self.outfile_ADC1
 
def set_outfile_ADC1(self, outfile_ADC1):
self.outfile_ADC1 = outfile_ADC1
self.blocks_wavfile_sink_1.open(self.outfile_ADC1)
 
def get_out_sample_rate(self):
return self.out_sample_rate
 
def set_out_sample_rate(self, out_sample_rate):
self.out_sample_rate = out_sample_rate
self.wxgui_waterfallsink2_1_0.set_sample_rate(self.out_sample_rate)
self.wxgui_waterfallsink2_1.set_sample_rate(self.out_sample_rate)
self.wxgui_scopesink2_2.set_sample_rate(self.out_sample_rate)
 
def get_normalize(self):
return self.normalize
 
def set_normalize(self, normalize):
self.normalize = normalize
self.low_pass_filter_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
 
def get_cutoff(self):
return self.cutoff
 
def set_cutoff(self, cutoff):
self.cutoff = cutoff
self.low_pass_filter_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
self.low_pass_filter_0_0.set_taps(firdes.low_pass(self.normalize, self.samp_rate, self.cutoff, 1e3, firdes.WIN_HAMMING, 6.76))
 
def get_LO(self):
return self.LO
 
def set_LO(self, LO):
self.LO = LO
self.freq_xlating_fir_filter_xxx_0.set_center_freq(143050000-self.LO/2)
self.freq_xlating_fir_filter_xxx_0_0.set_center_freq(143050000-self.LO/2)
 
if __name__ == '__main__':
import ctypes
import os
if os.name == 'posix':
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = Records_player()
tb.Start(True)
tb.Wait()
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/SW/GRC/top_block.py
0,0 → 1,265
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Top Block
# Author: Jakub Kakona
# Generated: Sat May 3 15:10:31 2014
##################################################
 
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import filter
from gnuradio import gr
from gnuradio import wxgui
from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import forms
from gnuradio.wxgui import scopesink2
from gnuradio.wxgui import waterfallsink2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx
 
class top_block(grc_wxgui.top_block_gui):
 
def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="Top Block")
_icon_path = "/usr/local/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
 
##################################################
# Variables
##################################################
self.variable_slider_0 = variable_slider_0 = 1
self.samp_rate = samp_rate = 5e6
 
##################################################
# Blocks
##################################################
self.notebook_0 = self.notebook_0 = wx.Notebook(self.GetWin(), style=wx.NB_TOP)
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "RF signal")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Scope")
self.notebook_0.AddPage(grc_wxgui.Panel(self.notebook_0), "Demod")
self.Add(self.notebook_0)
_variable_slider_0_sizer = wx.BoxSizer(wx.VERTICAL)
self._variable_slider_0_text_box = forms.text_box(
parent=self.notebook_0.GetPage(2).GetWin(),
sizer=_variable_slider_0_sizer,
value=self.variable_slider_0,
callback=self.set_variable_slider_0,
label='variable_slider_0',
converter=forms.float_converter(),
proportion=0,
)
self._variable_slider_0_slider = forms.slider(
parent=self.notebook_0.GetPage(2).GetWin(),
sizer=_variable_slider_0_sizer,
value=self.variable_slider_0,
callback=self.set_variable_slider_0,
minimum=0,
maximum=10,
num_steps=100,
style=wx.SL_HORIZONTAL,
cast=float,
proportion=1,
)
self.notebook_0.GetPage(2).Add(_variable_slider_0_sizer)
self.wxgui_waterfallsink2_2 = waterfallsink2.waterfall_sink_f(
self.notebook_0.GetPage(2).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=48e3,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="Demodulated Audio",
win=window.hamming,
)
self.notebook_0.GetPage(2).Add(self.wxgui_waterfallsink2_2.win)
self.wxgui_waterfallsink2_1 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(2).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=500e3,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="IF Plot",
win=window.blackmanharris,
)
self.notebook_0.GetPage(2).Add(self.wxgui_waterfallsink2_1.win)
self.wxgui_waterfallsink2_0_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=4096,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC1 Waterfall Plot",
size=(4096, 500),
)
self.notebook_0.GetPage(0).Add(self.wxgui_waterfallsink2_0_0.win)
self.wxgui_waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
self.notebook_0.GetPage(0).GetWin(),
baseband_freq=0,
dynamic_range=100,
ref_level=0,
ref_scale=2.0,
sample_rate=samp_rate,
fft_size=512,
fft_rate=15,
average=False,
avg_alpha=None,
title="ADC2 Waterfall Plot",
win=window.hanning,
)
self.notebook_0.GetPage(0).Add(self.wxgui_waterfallsink2_0.win)
self.wxgui_scopesink2_1 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(1).GetWin(),
title="Scope Plot",
sample_rate=samp_rate/2,
v_scale=0,
v_offset=0,
t_scale=1e-2,
ac_couple=False,
xy_mode=False,
num_inputs=2,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(1).Add(self.wxgui_scopesink2_1.win)
self.wxgui_scopesink2_0 = scopesink2.scope_sink_f(
self.notebook_0.GetPage(1).GetWin(),
title="Scope Plot",
sample_rate=samp_rate,
v_scale=0,
v_offset=0,
t_scale=0,
ac_couple=False,
xy_mode=False,
num_inputs=4,
trig_mode=wxgui.TRIG_MODE_AUTO,
y_axis_label="Counts",
)
self.notebook_0.GetPage(1).Add(self.wxgui_scopesink2_0.win)
self.rational_resampler_xxx_0 = filter.rational_resampler_fff(
interpolation=48,
decimation=500,
taps=None,
fractional_bw=None,
)
self.low_pass_filter_0 = filter.fir_filter_ccf(int(samp_rate/500e3), firdes.low_pass(
1, samp_rate, 100e3, 1e6, firdes.WIN_HAMMING, 6.76))
self.blocks_vector_to_streams_0 = blocks.vector_to_streams(gr.sizeof_short*1, 10)
self.blocks_throttle_2 = blocks.throttle(gr.sizeof_short*10, samp_rate/2)
self.blocks_short_to_float_2_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_2 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_1 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0_0 = blocks.short_to_float(1, 1)
self.blocks_short_to_float_0 = blocks.short_to_float(1, 1)
self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((variable_slider_0, ))
self.blocks_interleave_0_2 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_1 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_interleave_0 = blocks.interleave(gr.sizeof_short*1)
self.blocks_float_to_complex_0_0 = blocks.float_to_complex(1)
self.blocks_float_to_complex_0 = blocks.float_to_complex(1)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_short*10, "/home/kaklik/GNU_radio/2014.04.15.17.02.48.dat", True)
self.audio_sink_0 = audio.sink(48000, "", True)
self.analog_wfm_rcv_0 = analog.wfm_rcv(
quad_rate=500e3,
audio_decimation=1,
)
 
##################################################
# Connections
##################################################
self.connect((self.blocks_vector_to_streams_0, 2), (self.blocks_interleave_0_2, 0))
self.connect((self.blocks_vector_to_streams_0, 3), (self.blocks_interleave_0_2, 1))
self.connect((self.blocks_vector_to_streams_0, 4), (self.blocks_interleave_0_1, 0))
self.connect((self.blocks_vector_to_streams_0, 5), (self.blocks_interleave_0_1, 1))
self.connect((self.blocks_vector_to_streams_0, 6), (self.blocks_interleave_0_0, 0))
self.connect((self.blocks_vector_to_streams_0, 7), (self.blocks_interleave_0_0, 1))
self.connect((self.blocks_vector_to_streams_0, 8), (self.blocks_interleave_0, 0))
self.connect((self.blocks_vector_to_streams_0, 9), (self.blocks_interleave_0, 1))
self.connect((self.blocks_short_to_float_1, 0), (self.blocks_float_to_complex_0, 1))
self.connect((self.blocks_short_to_float_0, 0), (self.blocks_float_to_complex_0, 0))
self.connect((self.blocks_short_to_float_0_0, 0), (self.blocks_float_to_complex_0_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.blocks_float_to_complex_0_0, 1))
self.connect((self.blocks_vector_to_streams_0, 0), (self.blocks_short_to_float_2, 0))
self.connect((self.blocks_vector_to_streams_0, 1), (self.blocks_short_to_float_2_0, 0))
self.connect((self.blocks_short_to_float_2, 0), (self.wxgui_scopesink2_1, 0))
self.connect((self.blocks_short_to_float_2_0, 0), (self.wxgui_scopesink2_1, 1))
self.connect((self.blocks_short_to_float_0_0, 0), (self.wxgui_scopesink2_0, 0))
self.connect((self.blocks_short_to_float_1_0, 0), (self.wxgui_scopesink2_0, 1))
self.connect((self.blocks_short_to_float_0, 0), (self.wxgui_scopesink2_0, 2))
self.connect((self.blocks_short_to_float_1, 0), (self.wxgui_scopesink2_0, 3))
self.connect((self.blocks_interleave_0_2, 0), (self.blocks_short_to_float_0_0, 0))
self.connect((self.blocks_interleave_0_1, 0), (self.blocks_short_to_float_1_0, 0))
self.connect((self.blocks_interleave_0_0, 0), (self.blocks_short_to_float_0, 0))
self.connect((self.blocks_interleave_0, 0), (self.blocks_short_to_float_1, 0))
self.connect((self.blocks_throttle_2, 0), (self.blocks_vector_to_streams_0, 0))
self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_2, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.wxgui_waterfallsink2_0_0, 0))
self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_waterfallsink2_0, 0))
self.connect((self.blocks_float_to_complex_0_0, 0), (self.low_pass_filter_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0))
self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0, 0))
self.connect((self.rational_resampler_xxx_0, 0), (self.blocks_multiply_const_vxx_0, 0))
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.audio_sink_0, 0))
self.connect((self.low_pass_filter_0, 0), (self.wxgui_waterfallsink2_1, 0))
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.wxgui_waterfallsink2_2, 0))
 
 
# QT sink close method reimplementation
 
def get_variable_slider_0(self):
return self.variable_slider_0
 
def set_variable_slider_0(self, variable_slider_0):
self.variable_slider_0 = variable_slider_0
self.blocks_multiply_const_vxx_0.set_k((self.variable_slider_0, ))
self._variable_slider_0_slider.set_value(self.variable_slider_0)
self._variable_slider_0_text_box.set_value(self.variable_slider_0)
 
def get_samp_rate(self):
return self.samp_rate
 
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.blocks_throttle_2.set_sample_rate(self.samp_rate/2)
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, 100e3, 1e6, firdes.WIN_HAMMING, 6.76))
self.wxgui_scopesink2_0.set_sample_rate(self.samp_rate)
self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate)
self.wxgui_scopesink2_1.set_sample_rate(self.samp_rate/2)
self.wxgui_waterfallsink2_0_0.set_sample_rate(self.samp_rate)
 
if __name__ == '__main__':
import ctypes
import os
if os.name == 'posix':
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = top_block()
tb.Start(True)
tb.Wait()
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02A/pdf/fiberoptics/cable.txt
0,0 → 1,0
http://www.aflglobal.com/Products/Fiber-Optic-Cable/Enterprise/Indoor-Outdoor-Cable/Copper-Fiber-Composite-Cable.aspx
/Designs/HAM Constructions/SDRX02B/SW/GRC/MLAB_ADC_Grabber.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02B/SW/GRC/Grabber.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/FM_receiver.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/Grabber_QT.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/top_block.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02B/SW/GRC/Records_player.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/Designs/HAM Constructions/SDRX02B/SW/GRC/Player.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/FM_stanice.txt
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/Player_fm.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/AM_receiver.grc
File deleted
/Designs/HAM Constructions/SDRX02B/SW/GRC/Player_balance.grc
File deleted
/Designs/HAM Constructions/SDRX02B/DOC/2014-05-12KakonaDiplThesisCTU-Prague.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property