commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5928 - gnuradio/branches/developers/matt/u2f/firmware


From: matt
Subject: [Commit-gnuradio] r5928 - gnuradio/branches/developers/matt/u2f/firmware
Date: Sun, 8 Jul 2007 23:18:49 -0600 (MDT)

Author: matt
Date: 2007-07-08 23:18:49 -0600 (Sun, 08 Jul 2007)
New Revision: 5928

Added:
   gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
   gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
   gnuradio/branches/developers/matt/u2f/firmware/eth.c
Modified:
   gnuradio/branches/developers/matt/u2f/firmware/Makefile
   gnuradio/branches/developers/matt/u2f/firmware/memory_map.h
   gnuradio/branches/developers/matt/u2f/firmware/sim_io.h
   gnuradio/branches/developers/matt/u2f/firmware/test1_main.c
   gnuradio/branches/developers/matt/u2f/firmware/u2_init.c
Log:
seems to be a basic working buffer pool


Modified: gnuradio/branches/developers/matt/u2f/firmware/Makefile
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/Makefile     2007-07-09 
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/Makefile     2007-07-09 
05:18:49 UTC (rev 5928)
@@ -13,15 +13,15 @@
 
 .PRECIOUS : %.bin
 
-ROMS = oldflash.rom test1.rom
-DUMPS = test1.dump 
+ROMS = oldflash.rom test1.rom eth.rom
+DUMPS = test1.dump eth.dump
 
 all: $(ROMS) $(DUMPS)
 
-oldflash.exe: oldbootstrap.o spi.o sim_io.o
+oldflash.exe: oldbootstrap.o spi.o buffer_pool.o sim_io.o
        $(CC) $^ -o $@
 
-test1.exe: test1_main.o u2_init.o spi.o sim_io.o
+test1.exe: test1_main.o u2_init.o spi.o buffer_pool.o sim_io.o
        $(CC) $^ -o $@
 
 clean:
@@ -31,9 +31,11 @@
        cp -a *.rom ../top/u2_sim
 
 # dependencies
-bootstrap.o: memory_map.h spi.h sim_io.h bootstrap.c
-oldbootstrap.o: memory_map.h spi.h sim_io.h oldbootstrap.c
+bootstrap.o: memory_map.h spi.h buffer_pool.h sim_io.h bootstrap.c
+oldbootstrap.o: memory_map.h spi.h buffer_pool.h sim_io.h oldbootstrap.c
 spi.o: memory_map.h spi.h spi.c
+buffer_pool.o: memory_map.h buffer_pool.h buffer_pool.c
 sim_io.o: sim_io.h
-test1_main.o: u2_init.h memory_map.h spi.h sim_io.h test1_main.c
+test1_main.o: u2_init.h memory_map.h spi.h buffer_pool.h sim_io.h test1_main.c
+eth.o: u2_init.h memory_map.h spi.h buffer_pool.h sim_io.h eth.c
 

Added: gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c                
                (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.c        
2007-07-09 05:18:49 UTC (rev 5928)
@@ -0,0 +1,21 @@
+#include "buffer_pool.h"
+#include "memory_map.h"
+
+void
+clear_buf(int bufnum) {
+  volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+  *addr = 1<<28;
+}
+
+void
+receive_to_buf(int bufnum, int step, int port, int fl, int ll) {
+  volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+  *addr = (port << 24) | (1<<23) | (step<<18) | (ll<<9) | fl;
+}
+
+void
+send_from_buf(int bufnum, int step, int port, int fl, int ll) {
+  volatile int *addr = (int *)(BUFFER_POOL_BASE + (bufnum<<2));
+  *addr = (port << 26) | (1<<22) | (step<<18) | (ll<<9) | fl;
+}
+

Added: gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h                
                (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/buffer_pool.h        
2007-07-09 05:18:49 UTC (rev 5928)
@@ -0,0 +1,5 @@
+
+// Buffer Pool Management
+void clear_buf(int bufnum);
+void receive_to_buf(int bufnum, int step, int port, int fl, int ll);
+void send_from_buf(int bufnum, int step, int port, int fl, int ll);

Added: gnuradio/branches/developers/matt/u2f/firmware/eth.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/eth.c                        
        (rev 0)
+++ gnuradio/branches/developers/matt/u2f/firmware/eth.c        2007-07-09 
05:18:49 UTC (rev 5928)
@@ -0,0 +1,41 @@
+#include "u2_init.h"
+#include "memory_map.h"
+#include "spi.h"
+
+int
+main(void)
+{
+  u2_init();
+
+  
+
+  int i;
+
+  // Write to buffer 0
+  int *buf = (int *)(BUFFER_BASE + BUFFER_0);
+  for(i=0;i<BUFFER_SIZE;i++)
+    buf[i] = i;
+
+  sim_puts("Filled buffer 0\n");
+
+  // Write to buffer 1
+  int *buffer = (int *)(BUFFER_BASE + BUFFER_1);
+  for(i=0;i<BUFFER_SIZE;i++)
+    buf[i] =  i + ((i^0xFFFF) << 16);
+
+  sim_puts("Filled buffer 1\n");
+
+  // Control LEDs
+  while(1) {
+    output_regs->leds = 0x00;
+    output_regs->leds = 0x01;
+    output_regs->leds = 0x00;
+    output_regs->leds = 0x01;
+    output_regs->leds = 0x01;
+    output_regs->leds = 0x01;
+    output_regs->leds = 0x03;
+    output_regs->leds = 0x02;
+  }
+
+  return 1;
+}

Modified: gnuradio/branches/developers/matt/u2f/firmware/memory_map.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/memory_map.h 2007-07-09 
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/memory_map.h 2007-07-09 
05:18:49 UTC (rev 5928)
@@ -116,49 +116,48 @@
 #define gpio_base ((gpio_regs_t *) GPIO_BASE)
 
 ///////////////////////////////////////////////////
-// Basic Outputs, Slave 5
-#define OUTPUTS_BASE 0xB000
+// Master Controller, Slave 5
 
-#define OUTPUTS_CLK 0
-#define OUTPUTS_SERDES 1
-#define OUTPUTS_ADC 2
-#define OUTPUTS_MISC 3
+///////////////////////////////////////////////////
+// Ethernet Core, Slave 6
+#define ETH_BASE 0xC000
 
+////////////////////////////////////////////////////
+// Settings Bus, Slave #7, Not Byte Addressable!
+#define SETTINGS_BASE 0xD000
+
+// Simple outputs
+#define OUTPUTS_BASE    0xD000
+#define OUTPUTS_CLK     0xD000
+#define OUTPUTS_SERDES  0xD004
+#define OUTPUTS_ADC     0xD008
+#define OUTPUTS_MISC    0xD00C
+
 #define SERDES_ENABLE 8
 #define SERDES_PRBSEN 4
 #define SERDES_LOOPEN 2
 #define SERDES_RXEN 1
 
+#define BUFFER_POOL_BASE  0xD100
+#define DSP_TX_BASE       0xD200
+#define DSP_RX_BASE       0xD280
+#define LAST_SETTING      0xD3FC
+
 typedef struct {
-  volatile unsigned char       clk_ctrl;
-  volatile unsigned char       serdes_ctrl;
-  volatile unsigned char       adc_ctrl;
-  volatile unsigned char       leds;           // misc?
+  volatile unsigned long       clk_ctrl;
+  volatile unsigned long       serdes_ctrl;
+  volatile unsigned long       adc_ctrl;
+  volatile unsigned long       leds;
 } output_regs_t;
 
 #define output_regs ((output_regs_t *) OUTPUTS_BASE)
 
-
-///////////////////////////////////////////////////
-// DSP Core, Slave 6
-#define DSP_BASE 0xC000
-
-#define DSP_IAMP 0
-#define DSP_QAMP 2
-#define DSP_FREQ 4
-#define DSP_ISCALE 8
-#define DSP_QSCALE 10
-
 typedef struct {
-  volatile short       i;
-  volatile short       q;
   volatile int         freq;
   volatile short       scale_i;
   volatile short       scale_q;
-} dsp_regs_t;
+  volatile int          interp_rate;
+  volatile int          run_tx;
+} dsp_tx_regs_t;
   
-#define dsp_regs ((dsp_regs_t *) DSP_BASE)
-
-////////////////////////////////////////////////////
-// Settings Bus, Slave #7
-#define SLAVE7_BASE 0xD000
+#define dsp_tx_regs ((dsp_tx_regs_t *) DSP_TX_BASE)

Modified: gnuradio/branches/developers/matt/u2f/firmware/sim_io.h
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/sim_io.h     2007-07-09 
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/sim_io.h     2007-07-09 
05:18:49 UTC (rev 5928)
@@ -62,3 +62,9 @@
   *p = 0;
 }
 
+static inline void
+sim_finish(void)
+{
+  volatile unsigned long *p = (unsigned long *) 0xC200;
+  *p = 0;
+}

Modified: gnuradio/branches/developers/matt/u2f/firmware/test1_main.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/test1_main.c 2007-07-09 
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/test1_main.c 2007-07-09 
05:18:49 UTC (rev 5928)
@@ -1,6 +1,8 @@
 #include "u2_init.h"
 #include "memory_map.h"
 #include "spi.h"
+#include "sim_io.h"
+#include "buffer_pool.h"
 
 int
 main(void)
@@ -17,33 +19,50 @@
   }
 #endif
   
+  // Control LEDs
+  output_regs->leds = 0x02;
+
   int i;
 
   // Write to buffer 0
   int *buf = (int *)(BUFFER_BASE + BUFFER_0);
+  sim_puthex_nl((int)buf);
+
   for(i=0;i<BUFFER_SIZE;i++)
     buf[i] = i;
 
   sim_puts("Filled buffer 0\n");
 
   // Write to buffer 1
-  int *buffer = (int *)(BUFFER_BASE + BUFFER_1);
+  buf = (int *)(BUFFER_BASE + BUFFER_1);
+  sim_puthex_nl((int)buf);
   for(i=0;i<BUFFER_SIZE;i++)
     buf[i] =  i + ((i^0xFFFF) << 16);
 
   sim_puts("Filled buffer 1\n");
 
-  // Control LEDs
-  while(1) {
-    output_regs->leds = 0x00;
-    output_regs->leds = 0x01;
-    output_regs->leds = 0x00;
-    output_regs->leds = 0x01;
-    output_regs->leds = 0x01;
-    output_regs->leds = 0x01;
-    output_regs->leds = 0x03;
-    output_regs->leds = 0x02;
-  }
+  // rx SERDES into buffer #2  (buf,step,port,fl,ll)
+  receive_to_buf(2, 1 , 0 , 10 , 300);
+  sim_puts("SERDES RX buffer setup\n");
 
+  // send SERDES from buffer #0
+  send_from_buf(0 /*buf#*/, 1 /*step*/, 0 /*port*/, 10 /*fl*/, 200 /*ll*/);
+  sim_puts("SERDES TX buffer setup\n");
+
+  // Set up TX Chain
+  dsp_tx_regs->freq = 0;
+  dsp_tx_regs->scale_i = 1;
+  dsp_tx_regs->scale_q = 1;
+  dsp_tx_regs->interp_rate = 32;
+
+  // send to DACs from buffer #1
+  send_from_buf(1 /*buf#*/, 1 /*step*/, 1 /*port*/, 20 /*fl*/, 200 /*ll*/);
+  sim_puts("DAC Buffer setup\n");
+
+  dsp_tx_regs->run_tx = 1;
+  
+  while(1) {};
+  sim_finish();
+  
   return 1;
 }

Modified: gnuradio/branches/developers/matt/u2f/firmware/u2_init.c
===================================================================
--- gnuradio/branches/developers/matt/u2f/firmware/u2_init.c    2007-07-09 
01:25:44 UTC (rev 5927)
+++ gnuradio/branches/developers/matt/u2f/firmware/u2_init.c    2007-07-09 
05:18:49 UTC (rev 5928)
@@ -53,11 +53,13 @@
 
 
   // write DSP registers...
+#if 0
   dsp_regs->i = 0x7FFF;
   dsp_regs->q = 0x7FFF;
   dsp_regs->freq = 0x12345678;
   dsp_regs->scale_i = 512;
   dsp_regs->scale_q = 123;
+#endif
 
   // Set up serdes
   //output_regs->serdes_ctrl = (SERDES_ENABLE | SERDES_LOOPEN | SERDES_RXEN);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]