Import VerilogBoy RTL
diff --git a/verilog/rtl/serial.v b/verilog/rtl/serial.v
new file mode 100644
index 0000000..30b03fa
--- /dev/null
+++ b/verilog/rtl/serial.v
@@ -0,0 +1,104 @@
+`timescale 1ns / 1ps
+//////////////////////////////////////////////////////////////////////////////////
+// Company:
+// Engineer: Wenting Zhang
+//
+// Create Date: 13:13:04 04/13/2018
+// Module Name: serial
+// Project Name: VerilogBoy
+// Description:
+// Dummy serial interface
+// Dependencies:
+//
+// Additional Comments:
+//
+//////////////////////////////////////////////////////////////////////////////////
+module serial(
+ input clk,
+ input rst,
+ input wire [15:0] a,
+ output reg [7:0] dout,
+ input wire [7:0] din,
+ input wire rd,
+ input wire wr,
+ output reg int_serial_req,
+ input wire int_serial_ack
+ );
+
+ reg clk_spi; //8kHz SPI Clock
+
+ /*clk_div #(.WIDTH(10), .DIV(512)) spi_div(
+ .i(clk),
+ .o(clk_spi)
+ );*/
+
+ reg [8:0] counter;
+
+ always @(posedge clk)
+ begin
+ if (rst) begin
+ counter <= 9'h72;
+ clk_spi <= 1'b0;
+ end
+ else begin
+ if (counter == (512 / 2 - 1)) begin
+ clk_spi <= ~clk_spi;
+ counter <= 0;
+ end
+ else
+ counter <= counter + 1'b1;
+ end
+ end
+
+ //reg [7:0] reg_sb;
+ reg reg_sc_start;
+ reg reg_sc_int;
+
+ always @(*) begin
+ dout = 8'hff;
+ if (a == 16'hff01) dout = 8'hff; else
+ if (a == 16'hff02) dout = {reg_sc_start, 6'b111111, reg_sc_int};
+ end
+
+ reg [3:0] count;
+ reg last_clk;
+
+ always @(posedge clk) begin
+ if (rst) begin
+ //reg_sb <= 8'h00;
+ reg_sc_start <= 1'b0;
+ reg_sc_int <= 1'b0;
+ int_serial_req <= 1'b0;
+ count <= 4'd0;
+ last_clk <= 1'b0;
+ end
+ else begin
+ last_clk <= clk_spi;
+ //if (wr && (a == 16'hff01)) reg_sb <= din;
+ if (wr && (a == 16'hff02)) begin
+ reg_sc_start <= din[7];
+ reg_sc_int <= din[0];
+ if (din[7] && din[0]) count <= 4'd8;
+ else count <= 4'd0;
+ end
+ else begin
+ // Dummy serial interface
+ if (count != 4'd0) begin
+ if (!last_clk && clk_spi) begin
+ count <= count - 4'd1;
+ if ((count - 4'd1) == 0) begin
+ int_serial_req <= 1'b1;
+ end
+ end
+ end
+ else begin
+ if ((int_serial_req)&&(int_serial_ack)) begin
+ int_serial_req <= 1'b0;
+ end
+ end
+ end
+ end
+ end
+
+
+endmodule