Skip to content

Commit 05e9490

Browse files
committed
finally it works
1 parent 1bca492 commit 05e9490

File tree

2 files changed

+45
-13
lines changed

2 files changed

+45
-13
lines changed

SerialPortEcho/lib/quick_rs232.v

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ begin
339339
tx_buffer <= 0;
340340
tx_bit_counter <= 0;
341341
tx <= 1'b1; // IDLE state
342-
tx_data_bit_counter <= 1'b0; // Data bit counter = 0
342+
tx_data_bit_counter <= 4'b0000; // Data bit counter = 0
343343
tx_data_parity <= 1'b0;
344344
tx_stop_bit_counter_limit <= 0;
345345
i <= 0;
@@ -406,7 +406,7 @@ begin
406406
tx_buffer <= tx_data;
407407
tx_data_copied <= 1'b1;
408408
tx_busy <= 1'b1;
409-
tx_data_bit_counter <= 1'b0; // Data bit counter = 0
409+
tx_data_bit_counter <=4'b0000; // Data bit counter = 0
410410
end
411411
if (tx_transaction == 1'b0)
412412
begin
@@ -417,9 +417,10 @@ begin
417417
begin
418418
tx <= 1'b0;
419419
tx_bit_counter <= tx_bit_counter + 1;
420-
if (tx_bit_counter == TICKS_PER_UART_BIT)
420+
if (tx_bit_counter >= TICKS_PER_UART_BIT)
421421
begin
422422
tx_bit_counter <= 0;
423+
tx_data_bit_counter <= 0;
423424
tx_state <= DATA_BITS_EXCHANGE_STATE;
424425
end
425426
end
@@ -432,13 +433,21 @@ begin
432433
end
433434
else
434435
begin
435-
tx <= tx_buffer[tx_data_bit_counter];
436-
tx_bit_counter <= tx_bit_counter + 1;
437-
if (tx_bit_counter == TICKS_PER_UART_BIT)
438-
begin
439-
tx_bit_counter <= 0;
440-
tx_data_bit_counter <= tx_data_bit_counter + 4'b0001;
441-
end
436+
tx <= tx_buffer[tx_data_bit_counter];
437+
tx_bit_counter <= tx_bit_counter + 1;
438+
if (tx_bit_counter >= TICKS_PER_UART_BIT)
439+
begin
440+
tx_bit_counter <= 0;
441+
tx_data_bit_counter <= tx_data_bit_counter + 4'b0001;
442+
if (tx_data_bit_counter == 0)
443+
begin
444+
tx_data_parity <= tx_buffer[0];
445+
end
446+
else
447+
begin
448+
tx_data_parity <= tx_data_parity ^ tx_buffer[tx_data_bit_counter];
449+
end
450+
end
442451
end
443452
end
444453
PARITY_BIT_EXCHANGE_STATE:
@@ -458,14 +467,37 @@ begin
458467
begin
459468
tx <= 1'b0;
460469
end
461-
default:
470+
`EVEN_PARITY:
471+
begin
472+
if (tx_data_parity == 1'b1)
473+
begin
474+
tx <= 1'b1;
475+
end
476+
else
477+
begin
478+
tx <= 1'b0;
479+
end
480+
end
481+
`ODD_PARITY:
482+
begin
483+
if (tx_data_parity == 1'b1)
484+
begin
485+
tx <= 1'b0;
486+
end
487+
else
488+
begin
489+
tx <= 1'b1;
490+
end
491+
end
492+
/*default:
462493
begin
463494
tx_data_parity <= tx_buffer[0];
464495
for (i = 1; i < DEFAULT_BYTE_LEN; i = i + 1)
465496
begin
466497
tx_data_parity <= tx_data_parity ^ tx_buffer[i];
467498
end
468-
end
499+
// todo(UMV): NOT separated Even && Odd
500+
end*/
469501
endcase
470502
end
471503

@@ -490,7 +522,7 @@ begin
490522
begin
491523
tx <= 1'b1;
492524
tx_bit_counter <= tx_bit_counter + 1;
493-
if (tx_bit_counter == tx_stop_bit_counter_limit)
525+
if (tx_bit_counter >= tx_stop_bit_counter_limit)
494526
begin
495527
tx_bit_counter <= 0;
496528
tx_state <= SYNCH_STOP_EXCHANGE_STATE;

SerialPortEcho/serial_echo.jic

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)