From a140056324aee0c9345324d0c66d537bbdad0958 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Tue, 3 Jan 2017 02:19:29 +0100 Subject: Improvements in icestick rs232 demo --- examples/icestick/Makefile | 2 ++ examples/icestick/rs232demo.v | 48 +++++++++++++++++++++---------------------- 2 files changed, 25 insertions(+), 25 deletions(-) (limited to 'examples') 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 -- cgit v1.2.3