mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 13:53:55 -07:00
fixing iso14443b (issue #103):
- revert removal of FPGA_HF_READER_RX_XCORR_848_KHZ. Need to be able to switch to 424kHz for ISO15693.
This commit is contained in:
parent
132a02179c
commit
da586b1702
4 changed files with 26 additions and 10 deletions
|
@ -732,7 +732,7 @@ static void GetSamplesFor14443bDemod(int n, bool quiet)
|
||||||
// Signal field is ON with the appropriate LED:
|
// Signal field is ON with the appropriate LED:
|
||||||
LED_D_ON();
|
LED_D_ON();
|
||||||
// And put the FPGA in the appropriate mode
|
// And put the FPGA in the appropriate mode
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR);
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR | FPGA_HF_READER_RX_XCORR_848_KHZ);
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
int behindBy = lastRxCounter - AT91C_BASE_PDC_SSC->PDC_RCR;
|
int behindBy = lastRxCounter - AT91C_BASE_PDC_SSC->PDC_RCR;
|
||||||
|
@ -929,7 +929,7 @@ void ReadSTMemoryIso14443b(uint32_t dwLast)
|
||||||
// Signal field is on with the appropriate LED
|
// Signal field is on with the appropriate LED
|
||||||
LED_D_ON();
|
LED_D_ON();
|
||||||
FpgaWriteConfWord(
|
FpgaWriteConfWord(
|
||||||
FPGA_MAJOR_MODE_HF_READER_RX_XCORR);
|
FPGA_MAJOR_MODE_HF_READER_RX_XCORR | FPGA_HF_READER_RX_XCORR_848_KHZ);
|
||||||
SpinDelay(200);
|
SpinDelay(200);
|
||||||
|
|
||||||
// First command: wake up the tag using the INITIATE command
|
// First command: wake up the tag using the INITIATE command
|
||||||
|
@ -1091,7 +1091,7 @@ void RAMFUNC SnoopIso14443b(void)
|
||||||
LEDsoff();
|
LEDsoff();
|
||||||
|
|
||||||
// And put the FPGA in the appropriate mode
|
// And put the FPGA in the appropriate mode
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR | FPGA_HF_READER_RX_XCORR_SNOOP);
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR | FPGA_HF_READER_RX_XCORR_848_KHZ | FPGA_HF_READER_RX_XCORR_SNOOP);
|
||||||
SetAdcMuxFor(GPIO_MUXSEL_HIPKD);
|
SetAdcMuxFor(GPIO_MUXSEL_HIPKD);
|
||||||
|
|
||||||
// Setup for the DMA.
|
// Setup for the DMA.
|
||||||
|
@ -1228,7 +1228,7 @@ void SendRawCommand14443B(uint32_t datalen, uint32_t recv, uint8_t powerfield, u
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// if(!GETBIT(GPIO_LED_D)) { // if field is off
|
// if(!GETBIT(GPIO_LED_D)) { // if field is off
|
||||||
// FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR);
|
// FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR | FPGA_HF_READER_RX_XCORR_848_KHZ);
|
||||||
// // Signal field is on with the appropriate LED
|
// // Signal field is on with the appropriate LED
|
||||||
// LED_D_ON();
|
// LED_D_ON();
|
||||||
// SpinDelay(200);
|
// SpinDelay(200);
|
||||||
|
|
BIN
fpga/fpga_hf.bit
BIN
fpga/fpga_hf.bit
Binary file not shown.
|
@ -67,8 +67,10 @@ assign major_mode = conf_word[7:5];
|
||||||
// some fraction of the buffers)
|
// some fraction of the buffers)
|
||||||
wire hi_read_tx_shallow_modulation = conf_word[0];
|
wire hi_read_tx_shallow_modulation = conf_word[0];
|
||||||
|
|
||||||
// For the high-frequency receive correlator:
|
// For the high-frequency receive correlator: frequency against which to
|
||||||
// whether to drive the coil (reader) or just short it (snooper)
|
// correlate.
|
||||||
|
wire hi_read_rx_xcorr_848 = conf_word[0];
|
||||||
|
// and whether to drive the coil (reader) or just short it (snooper)
|
||||||
wire hi_read_rx_xcorr_snoop = conf_word[1];
|
wire hi_read_rx_xcorr_snoop = conf_word[1];
|
||||||
|
|
||||||
// For the high-frequency simulated tag: what kind of modulation to use.
|
// For the high-frequency simulated tag: what kind of modulation to use.
|
||||||
|
@ -97,7 +99,7 @@ hi_read_rx_xcorr hrxc(
|
||||||
hrxc_ssp_frame, hrxc_ssp_din, ssp_dout, hrxc_ssp_clk,
|
hrxc_ssp_frame, hrxc_ssp_din, ssp_dout, hrxc_ssp_clk,
|
||||||
cross_hi, cross_lo,
|
cross_hi, cross_lo,
|
||||||
hrxc_dbg,
|
hrxc_dbg,
|
||||||
hi_read_rx_xcorr_snoop
|
hi_read_rx_xcorr_848, hi_read_rx_xcorr_snoop
|
||||||
);
|
);
|
||||||
|
|
||||||
hi_simulate hs(
|
hi_simulate hs(
|
||||||
|
|
|
@ -10,7 +10,7 @@ module hi_read_rx_xcorr(
|
||||||
ssp_frame, ssp_din, ssp_dout, ssp_clk,
|
ssp_frame, ssp_din, ssp_dout, ssp_clk,
|
||||||
cross_hi, cross_lo,
|
cross_hi, cross_lo,
|
||||||
dbg,
|
dbg,
|
||||||
snoop
|
xcorr_is_848, snoop
|
||||||
);
|
);
|
||||||
input pck0, ck_1356meg, ck_1356megb;
|
input pck0, ck_1356meg, ck_1356megb;
|
||||||
output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4;
|
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;
|
output ssp_frame, ssp_din, ssp_clk;
|
||||||
input cross_hi, cross_lo;
|
input cross_hi, cross_lo;
|
||||||
output dbg;
|
output dbg;
|
||||||
input snoop;
|
input xcorr_is_848, snoop;
|
||||||
|
|
||||||
// Carrier is steady on through this, unless we're snooping.
|
// Carrier is steady on through this, unless we're snooping.
|
||||||
assign pwr_hi = ck_1356megb & (~snoop);
|
assign pwr_hi = ck_1356megb & (~snoop);
|
||||||
|
@ -28,7 +28,21 @@ assign pwr_oe1 = 1'b0;
|
||||||
assign pwr_oe3 = 1'b0;
|
assign pwr_oe3 = 1'b0;
|
||||||
assign pwr_oe4 = 1'b0;
|
assign pwr_oe4 = 1'b0;
|
||||||
|
|
||||||
wire adc_clk = ck_1356megb;
|
(* clock_signal = "yes" *) reg fc_div_2;
|
||||||
|
always @(negedge ck_1356megb)
|
||||||
|
fc_div_2 <= fc_div_2 + 1;
|
||||||
|
|
||||||
|
(* clock_signal = "yes" *) reg adc_clk;
|
||||||
|
always @(xcorr_is_848, ck_1356megb, fc_div_2)
|
||||||
|
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_1356megb;
|
||||||
|
else
|
||||||
|
// The subcarrier frequency is fc/32; we will sample at fc/2, and
|
||||||
|
// the subcarrier will look identical.
|
||||||
|
adc_clk <= fc_div_2;
|
||||||
|
|
||||||
|
|
||||||
// When we're a reader, we just need to do the BPSK demod; but when we're an
|
// 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,
|
// eavesdropper, we also need to pick out the commands sent by the reader,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue