aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-01-03 02:19:29 +0100
committerClifford Wolf <clifford@clifford.at>2017-01-03 02:19:29 +0100
commita140056324aee0c9345324d0c66d537bbdad0958 (patch)
treeb72672f3aba78b982732184a56a0b37930d9c498 /examples
parent13e654fe2e9484aaddf69d9e2015722604418210 (diff)
downloadicestorm-a140056324aee0c9345324d0c66d537bbdad0958.tar.gz
icestorm-a140056324aee0c9345324d0c66d537bbdad0958.tar.bz2
icestorm-a140056324aee0c9345324d0c66d537bbdad0958.zip
Improvements in icestick rs232 demo
Diffstat (limited to 'examples')
-rw-r--r--examples/icestick/Makefile2
-rw-r--r--examples/icestick/rs232demo.v48
2 files changed, 25 insertions, 25 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/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