checkpoint
authoradam <adam@megacz.com>
Mon, 28 Jan 2008 06:09:20 +0000 (07:09 +0100)
committeradam <adam@megacz.com>
Mon, 28 Jan 2008 06:09:20 +0000 (07:09 +0100)
Makefile
ships/Memory.ship
ships/Stack.ship
src/edu/berkeley/fleet/fpga/Server.java
src/edu/berkeley/fleet/fpga/main.v

index d0f496f..6446b41 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 
 ## Fleeterpreter ##############################################################################
 
-cp                = -cp fleet.jar
+cp                = -cp fleet.jar:lib/RXTXcomm.jar
 java              = java -Xmx500m
 
 run: fleet.jar; $(java) $(cp) $(interpreter_class)
@@ -15,12 +15,12 @@ endif
 fleet.jar: $(shell find src -name \*.java) $(shell find ships -name \*.ship) src/edu/berkeley/fleet/assembler/fleet.g
        mkdir -p build/class/edu/berkeley/fleet/assembler/
        cp src/edu/berkeley/fleet/assembler/fleet.g build/class/edu/berkeley/fleet/assembler/
-       javac -classpath lib/edu.berkeley.sbp.jar -d build/class/ $(shell find src -name \*.java)
+       javac -classpath lib/RXTXcomm.jar:lib/edu.berkeley.sbp.jar -d build/class/ $(shell find src -name \*.java)
        cd build/class/; jar xf ../../lib/edu.berkeley.sbp.jar
        for A in `find ships -name \*.ship`;\
          do java -cp build/class edu.berkeley.fleet.Main expand $$A;\
          done
-       javac -classpath build/class${ps}lib/edu.berkeley.sbp.jar -d build/class/ `find build/java -name \*.java`
+       javac -classpath lib/RXTXcomm.jar:build/class${ps}lib/edu.berkeley.sbp.jar -d build/class/ `find build/java -name \*.java`
        echo 'Main-Class: edu.berkeley.fleet.Main' > build/class/manifest
        cd build/class/; jar cmf manifest ../../$@ .
 
@@ -68,8 +68,12 @@ runfpga: fleet.jar
 program: upload
        ssh root@goliath.megacz.com 'cd /afs/megacz.com/work/ml410/; ./program.sh ./main.bit'
 
+runserver:
+       java -Djava.library.path=lib -cp lib/RXTXcomm.jar:fleet.jar edu.berkeley.fleet.fpga.Server
+
 upload: fleet.jar build/fpga/main.bit
        mkdir -p build
+       rsync -are ssh --progress --verbose ./ root@goliath:fleet/
        rsync -zare ssh --progress --verbose build/fpga/main.bit root@goliath.megacz.com:/afs/megacz.com/work/ml410/
 
 uploadtest:
index bfe28c5..e9f1e51 100644 (file)
@@ -258,7 +258,24 @@ module memory (clk, rst,
   some_bram mybram(clk, rst, write_flag, in_addr, current_instruction_read_from, write_data, not_connected, ramread);
   assign out_d_ = ramread;
 
-  always @(posedge clk) begin
+  always @(posedge clk /*or negedge rst*/) begin
+
+    if (!rst) begin
+      ihorn_full <= 0;
+      dhorn_full <= 0;
+      command_valid <= 0;
+/*
+      preload_size <= 0;
+*/
+      launched <= 0;
+      command_valid_read <= 0;
+      write_flag <= 0;
+
+      dhorn_r <= 0;
+      ihorn_r <= 0;
+      out_r <= 0;
+
+    end else begin
 
     write_flag <= 0;
 
@@ -343,6 +360,9 @@ module memory (clk, rst,
           end
         end
       end
+
+    end
+
     end
   end
 endmodule
index 1143c5b..3e9871f 100644 (file)
@@ -54,7 +54,9 @@ the arbitration issues.
   reg    skip;
   initial depth = 0;
 
-  always @(posedge clk) begin
+  always @(posedge clk or negedge rst) begin
+    if (!rst) depth <= 0;
+    else begin
     skip = 0;
     if (depth > 0) begin
       `onwrite(pop_r, pop_a)
@@ -72,6 +74,7 @@ the arbitration issues.
         depth      <= depth + 1;
       end
     end
+    end
   end
 
 
index dfc8b22..7f1fbfd 100644 (file)
@@ -1,5 +1,6 @@
 package edu.berkeley.fleet.fpga;
 
+import gnu.io.*;
 import java.io.*;
 import java.net.*;
 import java.util.*;
@@ -8,45 +9,54 @@ public class Server {
 
     public static ServerSocket ss;
     public static void main(String[] args) throws Exception {
+        System.err.println("programming...");
+        Process proc = Runtime.getRuntime().exec(new String[] {
+                "/afs/megacz.com/work/ml410/program.sh",
+                "/afs/megacz.com/work/ml410/main.bit"
+            });
+        BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+        String str = null;
+        while((str = br.readLine()) != null) {
+            System.err.println("  " + str);
+        }
+        int ret = proc.waitFor();
+        if (ret != 0) {
+            System.err.println("programming error: " + ret);
+            return;
+        }
+        System.err.println("done programming.");
         ss = new ServerSocket(3133);
-        /*
-        new Listener(3).start();
-        new Listener(4).start();
-        new Listener(1).start();
-        new Listener(2).start();
-        */
-        new Listener(0).start();
+        while(true) {
+            try {
+                Socket s = ss.accept();
+                new Handler(s).start();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
     }
 
     public static String pass_string = "password=security_is_for_wimps ";
 
-    static class Listener extends Thread {
-        private int devnum;
-        public Listener(int devnum) { this.devnum = devnum; }
+    static class Handler extends Thread {
+        private Socket socket;
+        boolean closed = false;
+        private SerialPort sp;
+        public Handler(Socket s) { this.socket = s; this.sp = sp; }
         public void run() {
-            while(true) {
+            synchronized(Server.class) {
                 try {
-                    Socket s = null;
-                    synchronized(Server.class) {
-                        System.err.println("thread " + devnum + " listening");
-                        s = ss.accept();
-                        System.err.println("connection");
+                    this.sp = new RXTXPort("/dev/ttyS0");
+                    //sp.sendBreak(500);
+                    try {
+                        _run();
+                    } finally {
+                        sp.close();
                     }
-                    new Handler(s, devnum).run();
                 } catch (Exception e) { throw new RuntimeException(e); }
-                try { Thread.sleep(1000); } catch (Exception e) { }
             }
         }
-    }
-
-    static class Handler extends Thread {
-        private Socket socket;
-        boolean closed = false;
-        private int devnum;
-        public Handler(Socket s, int devnum) { this.socket = s; this.devnum = devnum; }
-        public void run() {
-            RandomAccessFile raf = null;
-            FileInputStream fis = null;
+        public void _run() {
             try {
                 final InputStream is = socket.getInputStream();
                 byte[] buf = new byte[1024];
@@ -59,42 +69,18 @@ public class Server {
                 }
                 System.err.println("login string: " + sb.toString());
                 if (!sb.toString().startsWith(pass_string)) return;
-                String file = sb.toString().substring(pass_string.length()).trim();
 
-                System.err.println("programming...");
-                Process proc = Runtime.getRuntime().exec(new String[] { "/afs/megacz.com/work/ml410/program.sh", "/afs/megacz.com/work/ml410/main.bit" });
-                BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
-                String s = null;
-                while((s = br.readLine()) != null) {
-                    System.err.println("  " + s);
-                }
-                int ret = proc.waitFor();
-                if (ret != 0) {
-                    System.err.println("programming error: " + ret);
-                    return;
-                }
-                /*
-                System.err.println("programming...");
-                ret = Runtime.getRuntime().exec(new String[] {
-                        "/usr/bin/user_program", ""+devnum, "/var/slipway/"+file }).waitFor();
-                if (ret != 0) {
-                    System.err.println("programming error: " + ret);
-                   return;
-                }
-                */
-                System.err.println("done programming.");
-                try { Thread.sleep(2000); } catch(Exception e) { }
+                //try { Thread.sleep(2000); } catch(Exception e) { }
                 final OutputStream os = socket.getOutputStream();
                 System.err.println("sending instructions...");
-                raf = new RandomAccessFile("/dev/ttyS"+devnum, "rw");
 
+                sp.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
+                final OutputStream fos = sp.getOutputStream();
+                final InputStream fis = sp.getInputStream();
 
-                final RandomAccessFile raf2 = raf;
                 new Thread() {
                     public void run() {
-                        FileOutputStream fos = null;
                         try {
-                            fos = new FileOutputStream(raf2.getFD());
                             byte[] buf = new byte[1024];
                             while(true) {
                                 int numread = is.read(buf, 0, buf.length);
@@ -104,18 +90,14 @@ public class Server {
                             }
                         } catch (Exception e) { throw new RuntimeException(e);
                         } finally {
-                            if (raf2 != null) {
-                                System.err.println("closing...");
-                                closed = true;
-                                try { raf2.close(); } catch (Throwable t) { t.printStackTrace(); }
-                                try { fos.close(); } catch (Throwable t) { t.printStackTrace(); }
-                            }
+                            System.err.println("closing...");
+                            closed = true;
+                            try { fos.close(); } catch (Throwable t) { t.printStackTrace(); }
                         }
                     }
                 }.start();
 
                 System.err.println("reading back...");
-                fis = new FileInputStream(raf.getFD());
                 while(true) {
                     long result = 0;
                     int val = 0;
@@ -148,11 +130,11 @@ public class Server {
             } catch (Exception e) { throw new RuntimeException(e);
             } finally {
                 try {
-                    if (raf != null) {
-                        System.err.println("closing...");
-                        raf.close();
-                    }
+                    System.err.println("closing...");
+                    /*
+                    fis.close();
                     if (fis != null) fis.close();
+                    */
                 } catch (Throwable t) { t.printStackTrace(); }
             }
         }
index cd05049..9c6fcb8 100644 (file)
@@ -19,7 +19,7 @@ module main
   assign clk = sys_clk_pin;
   wire break;
   wire rst;
-  assign rst = sys_rst_pin || break;
+  assign rst = sys_rst_pin;
 
   wire       data_to_host_full;
   wire       data_to_host_write_enable;
@@ -69,7 +69,7 @@ module main
    wire [7:0] root_in_d;
 
 
-   root my_root(clk, rst, 
+   root my_root(clk, rst && !break, 
                 root_in_r,  root_in_a,  root_in_d,
                 root_out_r, root_out_a, data_to_host);
 /*