aboutsummaryrefslogtreecommitdiffstats
path: root/examples/icestick
diff options
context:
space:
mode:
Diffstat (limited to 'examples/icestick')
-rw-r--r--examples/icestick/Makefile2
-rw-r--r--examples/icestick/example.v2
-rw-r--r--examples/icestick/icestick.pcf22
-rw-r--r--examples/icestick/rs232demo.v48
4 files changed, 37 insertions, 37 deletions
diff --git a/examples/icestick/Makefile b/examples/icestick/Makefile
index f40c8a3..9294608 100644
--- a/examples/icestick/Makefile
+++ b/examples/icestick/Makefile
@@ -1,4 +1,6 @@
PROJ = example
+# PROJ = rs232demo
+
PIN_DEF = icestick.pcf
DEVICE = hx1k
diff --git a/examples/icestick/example.v b/examples/icestick/example.v
index a934400..3eb7007 100644
--- a/examples/icestick/example.v
+++ b/examples/icestick/example.v
@@ -13,7 +13,7 @@ module top (
reg [BITS+LOG2DELAY-1:0] counter = 0;
reg [BITS-1:0] outcnt;
- always@(posedge clk) begin
+ always @(posedge clk) begin
counter <= counter + 1;
outcnt <= counter >> LOG2DELAY;
end
diff --git a/examples/icestick/icestick.pcf b/examples/icestick/icestick.pcf
index 23067be..8bf462e 100644
--- a/examples/icestick/icestick.pcf
+++ b/examples/icestick/icestick.pcf
@@ -1,11 +1,11 @@
-# full iCEstick pinout:
-# http://www.pighixxx.com/test/portfolio-items/icestick/
-
-set_io --warn-no-port RX 9
-set_io --warn-no-port TX 8
-set_io LED1 99
-set_io LED2 98
-set_io LED3 97
-set_io LED4 96
-set_io LED5 95
-set_io clk 21
+# full iCEstick pinout:
+# http://www.pighixxx.com/test/portfolio-items/icestick/
+
+set_io --warn-no-port RX 9
+set_io --warn-no-port TX 8
+set_io LED1 99
+set_io LED2 98
+set_io LED3 97
+set_io LED4 96
+set_io LED5 95
+set_io clk 21
diff --git a/examples/icestick/rs232demo.v b/examples/icestick/rs232demo.v
index fc7a770..f9e7546 100644
--- a/examples/icestick/rs232demo.v
+++ b/examples/icestick/rs232demo.v
@@ -12,46 +12,44 @@ module top (
parameter integer CLOCK_FREQ_HZ = 12000000;
localparam integer HALF_PERIOD = CLOCK_FREQ_HZ / (2 * BAUD_RATE);
- reg [9:0] buffer;
+ reg [7:0] buffer;
reg buffer_valid;
reg [$clog2(3*HALF_PERIOD):0] cycle_cnt;
reg [3:0] bit_cnt = 0;
- reg [0:0] state = 0;
+ reg recv = 0;
always @(posedge clk) begin
buffer_valid <= 0;
- case (state)
- 0: begin
- if (!RX) begin
- cycle_cnt <= HALF_PERIOD;
- bit_cnt <= 0;
- state <= 1;
- end
+ if (!recv) begin
+ if (!RX) begin
+ cycle_cnt <= HALF_PERIOD;
+ bit_cnt <= 0;
+ recv <= 1;
end
- 1: begin
- if (cycle_cnt == 2*HALF_PERIOD) begin
- cycle_cnt <= 0;
- buffer[bit_cnt] <= RX;
- bit_cnt <= bit_cnt + 1;
- if (bit_cnt == 9) begin
- buffer_valid <= 1;
- state <= 0;
- end
+ end else begin
+ if (cycle_cnt == 2*HALF_PERIOD) begin
+ cycle_cnt <= 0;
+ bit_cnt <= bit_cnt + 1;
+ if (bit_cnt == 9) begin
+ buffer_valid <= 1;
+ recv <= 0;
end else begin
- cycle_cnt <= cycle_cnt + 1;
+ buffer <= {RX, buffer[7:1]};
end
+ end else begin
+ cycle_cnt <= cycle_cnt + 1;
end
- endcase
+ end
end
always @(posedge clk) begin
if (buffer_valid) begin
- if (buffer[8:1] == "1") LED1 <= !LED1;
- if (buffer[8:1] == "2") LED2 <= !LED2;
- if (buffer[8:1] == "3") LED3 <= !LED3;
- if (buffer[8:1] == "4") LED4 <= !LED4;
- if (buffer[8:1] == "5") LED5 <= !LED5;
+ if (buffer == "1") LED1 <= !LED1;
+ if (buffer == "2") LED2 <= !LED2;
+ if (buffer == "3") LED3 <= !LED3;
+ if (buffer == "4") LED4 <= !LED4;
+ if (buffer == "5") LED5 <= !LED5;
end
end