aboutsummaryrefslogtreecommitdiffstats
path: root/hdl/complicated.v
diff options
context:
space:
mode:
authorbryan newbold <bnewbold@leaflabs.com>2013-11-12 20:04:08 -0500
committerbryan newbold <bnewbold@leaflabs.com>2013-11-12 20:04:13 -0500
commit8e55b5eee512c3088ff01719875249640cf1efca (patch)
tree3428f69c78cf83f1b0b00e7697fbd0ac35f6e897 /hdl/complicated.v
parent4782465ef5d08bd7e7a36085a3013ed379e90ec2 (diff)
downloadbasic-hdl-template-8e55b5eee512c3088ff01719875249640cf1efca.tar.gz
basic-hdl-template-8e55b5eee512c3088ff01719875249640cf1efca.zip
add a "complicated" Makefile for testing
Also the corresponding top-level module (for Xula2)
Diffstat (limited to 'hdl/complicated.v')
-rw-r--r--hdl/complicated.v71
1 files changed, 71 insertions, 0 deletions
diff --git a/hdl/complicated.v b/hdl/complicated.v
new file mode 100644
index 0000000..4d31588
--- /dev/null
+++ b/hdl/complicated.v
@@ -0,0 +1,71 @@
+/*
+ * complicated.v
+ *
+ * Copyright: (C) 2013 LeafLabs, LLC
+ * License: MIT License (See LICENSE file)
+ * Author: Bryan Newbold <bnewbold@leaflabs.com>
+ * Date: November 2013
+ *
+ * This is an intentionally complicated top-level file.
+ *
+ * TODO if using this as a template for another design:
+ * - use a clock buffer, even if sticking with 12mhz
+ */
+
+module complicated (
+ input wire clock_12mhz,
+ inout wire [31:0] chan,
+ inout wire chan_clk,
+
+ //// Flash and microSD I/O
+ output wire microsd_cs,
+ output wire flash_cs,
+ output wire flash_sclk,
+ output wire flash_mosi,
+ output wire flash_miso
+ );
+
+ parameter GIT_COMMIT = 0;
+ parameter BUILD_UNIX_TIME = 0;
+
+ wire reset = chan[0];
+
+ reg [22:0] throb_counter = 0;
+ reg throb_led = 0;
+ assign chan[10] = throb_led;
+
+ bram bram_inst (
+ .clka(clock_12mhz),
+ .ena(1'b0),
+ .wea(1'b1),
+ .addra(10),
+ .dina(11),
+ .clkb(clock_12mhz),
+ .rstb(reset),
+ .enb(1'b0),
+ .addrb(13),
+ .doutb()
+ );
+
+ always @(posedge clock_12mhz) begin
+ if (reset) begin
+ throb_counter <= 0;
+ throb_led <= 0;
+ end else begin
+ if (throb_counter >= 23'd06_000_000) begin
+ throb_led <= !throb_led;
+ throb_counter <= 23'd0;
+ end else begin
+ throb_counter <= throb_counter + 23'd1;
+ end
+ end
+ end
+
+ // Tie off unused outputs
+ assign microsd_cs = 1'bZ;
+ assign flash_cs = 1'bZ;
+ assign flash_sclk = 1'bZ;
+ assign flash_mosi = 1'bZ;
+ assign flash_miso = 1'bZ;
+
+endmodule