From 8d40aba58b77f348786e55f7ade2ae2d3e117fcc Mon Sep 17 00:00:00 2001 From: "henryk@ploetzli.ch" Date: Wed, 9 Dec 2009 02:31:01 +0000 Subject: [PATCH] Add capability to correlate against subcarriers of 212kHz (argument FPGA_HF_READER_RX_XCORR_QUARTER_FREQ | FPGA_HF_READER_RX_XCORR_848_KHZ) and 106kHz (argument FPGA_HF_READER_RX_XCORR_QUARTER_FREQ) --- armsrc/apps.h | 1 + fpga/fpga.bit | Bin 42172 -> 42172 bytes fpga/fpga.v | 6 +++++- fpga/hi_read_rx_xcorr.v | 40 ++++++++++++++++++++++++++++++---------- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/armsrc/apps.h b/armsrc/apps.h index 43324a5bd..d90d595a8 100644 --- a/armsrc/apps.h +++ b/armsrc/apps.h @@ -53,6 +53,7 @@ void SetAdcMuxFor(DWORD whichGpio); // Options for the HF reader, correlating against rx from tag #define FPGA_HF_READER_RX_XCORR_848_KHZ (1<<0) #define FPGA_HF_READER_RX_XCORR_SNOOP (1<<1) +#define FPGA_HF_READER_RX_XCORR_QUARTER_FREQ (1<<2) // Options for the HF simulated tag, how to modulate #define FPGA_HF_SIMULATOR_NO_MODULATION (0<<0) #define FPGA_HF_SIMULATOR_MODULATE_BPSK (1<<0) diff --git a/fpga/fpga.bit b/fpga/fpga.bit index 5e8ca76bed58fb7d007c1bdabc659831ec10c397..4e65514d68819bd63e5571f1c0fcb837cd8bb7b4 100644 GIT binary patch literal 42172 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%0Afhp-gWu?AZOKM!szrsE6-3wR=wPeJk* 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 literal 42172 zcmZSJ4~}pIf==sDSCOyDGW&rTt>yl24#hY1_lht4BSQr2A2AU zhWZL-3@HqphNf0VMph=~45-#AkrYa~d!xAoCdw7#tV^7*vuOgajCH1C|D`91&_1n7}G=5DpM?@Ty@r0M;xF zCUFof3&0XWU=jxbb2AQUurSL85OrUGA%Q`HfsKK&0m5it+`y2Dn-z5BSFuK4$fm@T|1cMO+j{^4v7O*)dSXCHy6leu7v@rc)*u|*u zzZ(Ve6)M z4)zmt9xzuy?DAlE!105@j)}jG`vJoX20H=$M&<_!9-tU(V7|lvPCpz1PZ&;enPl)x zV1CB%l3`Oy{{&_ghLa3NAQ2{rT@5U$O`Qjo95QA!9d&4AP%7Y_!llB{>7Z1=A;7G_ z0M6(VtU6BJI%)?vcQ`#!Sk0j1z&)Xfg}K>b(FKkPOl*+2;9y~4Xmn6;

2#!r1Ac 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

?GlJ?bCTRWw&42x5*u=oIfLVd*73eq-=mzaZ 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 Yn9zW#XEk700G@_}m~#*@Ed@0M00G0*YybcN diff --git a/fpga/fpga.v b/fpga/fpga.v index b22c9d5c7..c39109f9f 100644 --- a/fpga/fpga.v +++ b/fpga/fpga.v @@ -103,6 +103,10 @@ assign hi_read_rx_xcorr_848 = conf_word[0]; wire hi_read_rx_xcorr_snoop; assign hi_read_rx_xcorr_snoop = conf_word[1]; +// Divide the expected subcarrier frequency for hi_read_rx_xcorr by 4 +wire hi_read_rx_xcorr_quarter; +assign hi_read_rx_xcorr_quarter = conf_word[2]; + // For the high-frequency simulated tag: what kind of modulation to use. wire [2:0] hi_simulate_mod_type; assign hi_simulate_mod_type = conf_word[2:0]; @@ -158,7 +162,7 @@ hi_read_rx_xcorr hrxc( hrxc_ssp_frame, hrxc_ssp_din, ssp_dout, hrxc_ssp_clk, cross_hi, cross_lo, hrxc_dbg, - hi_read_rx_xcorr_848, hi_read_rx_xcorr_snoop + hi_read_rx_xcorr_848, hi_read_rx_xcorr_snoop, hi_read_rx_xcorr_quarter ); hi_simulate hs( diff --git a/fpga/hi_read_rx_xcorr.v b/fpga/hi_read_rx_xcorr.v index 253f50800..9d012f422 100644 --- a/fpga/hi_read_rx_xcorr.v +++ b/fpga/hi_read_rx_xcorr.v @@ -10,7 +10,7 @@ module hi_read_rx_xcorr( ssp_frame, ssp_din, ssp_dout, ssp_clk, cross_hi, cross_lo, dbg, - xcorr_is_848, snoop + xcorr_is_848, snoop, xcorr_quarter_freq ); input pck0, ck_1356meg, ck_1356megb; output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; @@ -20,7 +20,7 @@ module hi_read_rx_xcorr( output ssp_frame, ssp_din, ssp_clk; input cross_hi, cross_lo; output dbg; - input xcorr_is_848, snoop; + input xcorr_is_848, snoop, xcorr_quarter_freq; // Carrier is steady on through this, unless we're snooping. assign pwr_hi = ck_1356megb & (~snoop); @@ -36,17 +36,37 @@ reg fc_div_2; always @(posedge ck_1356meg) fc_div_2 = ~fc_div_2; +reg fc_div_4; +always @(posedge fc_div_2) + fc_div_4 = ~fc_div_4; + +reg fc_div_8; +always @(posedge fc_div_4) + fc_div_8 = ~fc_div_8; + reg adc_clk; -always @(xcorr_is_848 or fc_div_2 or ck_1356meg) - if(xcorr_is_848) - // The subcarrier frequency is fc/16; we will sample at fc, so that - // means the subcarrier is 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 ... - adc_clk <= ck_1356meg; +always @(xcorr_is_848 or xcorr_quarter_freq or ck_1356meg) + if(~xcorr_quarter_freq) + begin + if(xcorr_is_848) + // The subcarrier frequency is fc/16; we will sample at fc, so that + // means the subcarrier is 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 ... + adc_clk <= ck_1356meg; + else + // The subcarrier frequency is fc/32; we will sample at fc/2, and + // the subcarrier will look identical. + adc_clk <= fc_div_2; + end else - // The subcarrier frequency is fc/32; we will sample at fc/2, and - // the subcarrier will look identical. - adc_clk <= fc_div_2; + begin + if(xcorr_is_848) + // The subcarrier frequency is fc/64 + adc_clk <= fc_div_4; + else + // The subcarrier frequency is fc/128 + adc_clk <= fc_div_8; + end // When we're a reader, we just need to do the BPSK demod; but when we're an // eavesdropper, we also need to pick out the commands sent by the reader,