mirror of
https://github.com/lowobservable/coax.git
synced 2026-02-27 01:19:52 +00:00
wip
This commit is contained in:
@@ -5,7 +5,7 @@ TINYPROG ?= tinyprog
|
||||
|
||||
all: top.bin
|
||||
|
||||
top.json: top.v
|
||||
top.json: top.v coax_rx_bit_timer.v
|
||||
|
||||
prog: top.bin
|
||||
$(TINYPROG) -p top.bin
|
||||
|
||||
@@ -47,7 +47,7 @@ module coax_rx_bit_timer(
|
||||
|
||||
SYNCHRONIZED:
|
||||
begin
|
||||
if (transition_counter < CLOCKS_PER_BIT * 1.25)
|
||||
if (transition_counter < (CLOCKS_PER_BIT + (CLOCKS_PER_BIT / 4)))
|
||||
next_transition_counter = transition_counter + 1;
|
||||
else
|
||||
next_state = UNSYNCHRONIZED;
|
||||
@@ -59,13 +59,13 @@ module coax_rx_bit_timer(
|
||||
else
|
||||
next_bit_counter = 0;
|
||||
|
||||
if (rx != previous_rx && transition_counter > CLOCKS_PER_BIT / 2)
|
||||
if (rx != previous_rx && transition_counter > (CLOCKS_PER_BIT / 2))
|
||||
begin
|
||||
next_transition_counter = 0;
|
||||
next_bit_counter = CLOCKS_PER_BIT / 2;
|
||||
end
|
||||
|
||||
if (bit_counter == CLOCKS_PER_BIT * 0.75)
|
||||
if (bit_counter == ((CLOCKS_PER_BIT / 4) * 3))
|
||||
sample = 1;
|
||||
end
|
||||
|
||||
@@ -76,7 +76,7 @@ module coax_rx_bit_timer(
|
||||
else
|
||||
next_bit_counter = 0;
|
||||
|
||||
if (bit_counter == CLOCKS_PER_BIT * 0.75)
|
||||
if (bit_counter == ((CLOCKS_PER_BIT / 4) * 3))
|
||||
sample = 1;
|
||||
end
|
||||
endcase
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
module top (
|
||||
input clk_16mhz,
|
||||
|
||||
// Receiver
|
||||
input rx,
|
||||
|
||||
input reset,
|
||||
output sample,
|
||||
output synchronized,
|
||||
|
||||
output usb_pu
|
||||
);
|
||||
// 19 MHz
|
||||
@@ -23,5 +30,24 @@ module top (
|
||||
.PLLOUTCORE(clk_19mhz)
|
||||
);
|
||||
|
||||
reg rx_0 = 0;
|
||||
reg rx_1 = 1;
|
||||
|
||||
always @(posedge clk_19mhz)
|
||||
begin
|
||||
rx_0 <= rx;
|
||||
rx_1 <= rx_0;
|
||||
end
|
||||
|
||||
coax_rx_bit_timer #(
|
||||
.CLOCKS_PER_BIT(8)
|
||||
) rx_bit_timer (
|
||||
.clk(clk_19mhz),
|
||||
.rx(rx_1),
|
||||
.reset(reset),
|
||||
.sample(sample),
|
||||
.synchronized(synchronized)
|
||||
);
|
||||
|
||||
assign usb_pu = 0;
|
||||
endmodule
|
||||
|
||||
832
interface2/tests/coax_rx_bit_timer_tb.vcd_snapshot
Normal file
832
interface2/tests/coax_rx_bit_timer_tb.vcd_snapshot
Normal file
@@ -0,0 +1,832 @@
|
||||
$date
|
||||
Mon Jun 15 21:59:45 2020
|
||||
$end
|
||||
$version
|
||||
Icarus Verilog
|
||||
$end
|
||||
$timescale
|
||||
1s
|
||||
$end
|
||||
$scope module coax_rx_bit_timer_tb $end
|
||||
$var wire 1 ! synchronized $end
|
||||
$var wire 1 " sample $end
|
||||
$var reg 1 # clk $end
|
||||
$var reg 1 $ reset $end
|
||||
$var reg 1 % rx $end
|
||||
$scope module dut $end
|
||||
$var wire 1 # clk $end
|
||||
$var wire 1 $ reset $end
|
||||
$var wire 1 % rx $end
|
||||
$var reg 4 & bit_counter [3:0] $end
|
||||
$var reg 4 ' next_bit_counter [3:0] $end
|
||||
$var reg 2 ( next_state [1:0] $end
|
||||
$var reg 5 ) next_transition_counter [4:0] $end
|
||||
$var reg 1 * previous_rx $end
|
||||
$var reg 1 " sample $end
|
||||
$var reg 2 + state [1:0] $end
|
||||
$var reg 1 ! synchronized $end
|
||||
$var reg 5 , transition_counter [4:0] $end
|
||||
$upscope $end
|
||||
$scope task rx_bit $end
|
||||
$var reg 1 - bit $end
|
||||
$upscope $end
|
||||
$scope task rx_bit_custom $end
|
||||
$var reg 1 . bit $end
|
||||
$var reg 16 / first_half_duration [15:0] $end
|
||||
$var reg 16 0 second_half_duration [15:0] $end
|
||||
$upscope $end
|
||||
$upscope $end
|
||||
$enddefinitions $end
|
||||
#0
|
||||
$dumpvars
|
||||
bx 0
|
||||
bx /
|
||||
x.
|
||||
x-
|
||||
b0 ,
|
||||
b0 +
|
||||
x*
|
||||
b0 )
|
||||
b0 (
|
||||
b0 '
|
||||
b0 &
|
||||
0%
|
||||
0$
|
||||
0#
|
||||
0"
|
||||
0!
|
||||
$end
|
||||
#1
|
||||
0*
|
||||
1#
|
||||
#2
|
||||
0#
|
||||
#3
|
||||
1#
|
||||
#4
|
||||
0#
|
||||
#5
|
||||
1#
|
||||
#6
|
||||
0#
|
||||
#7
|
||||
1#
|
||||
#8
|
||||
0#
|
||||
#9
|
||||
1#
|
||||
#10
|
||||
0#
|
||||
#11
|
||||
1#
|
||||
#12
|
||||
0#
|
||||
#13
|
||||
1#
|
||||
#14
|
||||
0#
|
||||
#15
|
||||
1#
|
||||
#16
|
||||
0#
|
||||
#17
|
||||
1#
|
||||
#18
|
||||
0#
|
||||
#19
|
||||
1#
|
||||
#20
|
||||
0#
|
||||
#21
|
||||
1#
|
||||
#22
|
||||
0#
|
||||
#23
|
||||
1#
|
||||
#24
|
||||
0#
|
||||
#25
|
||||
1#
|
||||
#26
|
||||
0#
|
||||
#27
|
||||
1#
|
||||
#28
|
||||
0#
|
||||
#29
|
||||
1#
|
||||
#30
|
||||
0#
|
||||
#31
|
||||
1#
|
||||
#32
|
||||
0#
|
||||
1-
|
||||
#33
|
||||
1#
|
||||
#34
|
||||
0#
|
||||
#35
|
||||
1#
|
||||
#36
|
||||
0#
|
||||
#37
|
||||
1#
|
||||
#38
|
||||
0#
|
||||
#39
|
||||
1#
|
||||
#40
|
||||
0#
|
||||
b1 (
|
||||
b100 '
|
||||
1%
|
||||
#41
|
||||
b101 '
|
||||
1!
|
||||
b1 )
|
||||
1*
|
||||
b100 &
|
||||
b1 +
|
||||
1#
|
||||
#42
|
||||
0#
|
||||
#43
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#44
|
||||
0#
|
||||
#45
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#46
|
||||
0#
|
||||
#47
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#48
|
||||
0#
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0-
|
||||
1%
|
||||
#49
|
||||
b0 '
|
||||
b101 )
|
||||
1!
|
||||
b1000 &
|
||||
b100 ,
|
||||
1#
|
||||
#50
|
||||
0#
|
||||
#51
|
||||
b1 '
|
||||
b110 )
|
||||
1!
|
||||
b0 &
|
||||
b101 ,
|
||||
1#
|
||||
#52
|
||||
0#
|
||||
#53
|
||||
b10 '
|
||||
b111 )
|
||||
1!
|
||||
b1 &
|
||||
b110 ,
|
||||
1#
|
||||
#54
|
||||
0#
|
||||
#55
|
||||
b11 '
|
||||
b1000 )
|
||||
1!
|
||||
b10 &
|
||||
b111 ,
|
||||
1#
|
||||
#56
|
||||
0#
|
||||
b100 '
|
||||
b0 )
|
||||
1!
|
||||
0%
|
||||
#57
|
||||
b101 '
|
||||
b1 )
|
||||
1!
|
||||
0*
|
||||
b100 &
|
||||
b0 ,
|
||||
1#
|
||||
#58
|
||||
0#
|
||||
#59
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#60
|
||||
0#
|
||||
#61
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#62
|
||||
0#
|
||||
#63
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#64
|
||||
0#
|
||||
1-
|
||||
#65
|
||||
b0 '
|
||||
b101 )
|
||||
1!
|
||||
b1000 &
|
||||
b100 ,
|
||||
1#
|
||||
#66
|
||||
0#
|
||||
#67
|
||||
b1 '
|
||||
b110 )
|
||||
1!
|
||||
b0 &
|
||||
b101 ,
|
||||
1#
|
||||
#68
|
||||
0#
|
||||
#69
|
||||
b10 '
|
||||
b111 )
|
||||
1!
|
||||
b1 &
|
||||
b110 ,
|
||||
1#
|
||||
#70
|
||||
0#
|
||||
#71
|
||||
b11 '
|
||||
b1000 )
|
||||
1!
|
||||
b10 &
|
||||
b111 ,
|
||||
1#
|
||||
#72
|
||||
0#
|
||||
b100 '
|
||||
b0 )
|
||||
1!
|
||||
1%
|
||||
#73
|
||||
b101 '
|
||||
b1 )
|
||||
1!
|
||||
1*
|
||||
b100 &
|
||||
b0 ,
|
||||
1#
|
||||
#74
|
||||
0#
|
||||
#75
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#76
|
||||
0#
|
||||
#77
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#78
|
||||
0#
|
||||
#79
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#80
|
||||
0#
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
b1000 0
|
||||
b1001 /
|
||||
0.
|
||||
1%
|
||||
#81
|
||||
b0 '
|
||||
b101 )
|
||||
1!
|
||||
b1000 &
|
||||
b100 ,
|
||||
1#
|
||||
#82
|
||||
0#
|
||||
#83
|
||||
b1 '
|
||||
b110 )
|
||||
1!
|
||||
b0 &
|
||||
b101 ,
|
||||
1#
|
||||
#84
|
||||
0#
|
||||
#85
|
||||
b10 '
|
||||
b111 )
|
||||
1!
|
||||
b1 &
|
||||
b110 ,
|
||||
1#
|
||||
#86
|
||||
0#
|
||||
#87
|
||||
b11 '
|
||||
b1000 )
|
||||
1!
|
||||
b10 &
|
||||
b111 ,
|
||||
1#
|
||||
#88
|
||||
0#
|
||||
#89
|
||||
0*
|
||||
b100 &
|
||||
b0 ,
|
||||
1#
|
||||
b101 '
|
||||
b1 )
|
||||
1!
|
||||
0%
|
||||
#90
|
||||
0#
|
||||
#91
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#92
|
||||
0#
|
||||
#93
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#94
|
||||
0#
|
||||
#95
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#96
|
||||
0#
|
||||
#97
|
||||
1*
|
||||
b100 &
|
||||
b0 ,
|
||||
1#
|
||||
b101 '
|
||||
b1 )
|
||||
1!
|
||||
1%
|
||||
b111 0
|
||||
b110 /
|
||||
#98
|
||||
0#
|
||||
#99
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#100
|
||||
0#
|
||||
#101
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#102
|
||||
0#
|
||||
#103
|
||||
0*
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
0%
|
||||
#104
|
||||
0#
|
||||
#105
|
||||
b0 '
|
||||
b101 )
|
||||
1!
|
||||
b1000 &
|
||||
b100 ,
|
||||
1#
|
||||
#106
|
||||
0#
|
||||
#107
|
||||
b1 '
|
||||
b110 )
|
||||
1!
|
||||
b0 &
|
||||
b101 ,
|
||||
1#
|
||||
#108
|
||||
0#
|
||||
#109
|
||||
b10 '
|
||||
b111 )
|
||||
1!
|
||||
b1 &
|
||||
b110 ,
|
||||
1#
|
||||
#110
|
||||
0#
|
||||
b1000 0
|
||||
b11000 /
|
||||
1.
|
||||
#111
|
||||
b11 '
|
||||
b1000 )
|
||||
1!
|
||||
b10 &
|
||||
b111 ,
|
||||
1#
|
||||
#112
|
||||
0#
|
||||
#113
|
||||
b100 '
|
||||
b1001 )
|
||||
1!
|
||||
b11 &
|
||||
b1000 ,
|
||||
1#
|
||||
#114
|
||||
0#
|
||||
#115
|
||||
b101 '
|
||||
b1010 )
|
||||
1!
|
||||
b100 &
|
||||
b1001 ,
|
||||
1#
|
||||
#116
|
||||
0#
|
||||
#117
|
||||
b110 '
|
||||
b10 (
|
||||
1!
|
||||
b101 &
|
||||
b1010 ,
|
||||
1#
|
||||
#118
|
||||
0#
|
||||
#119
|
||||
1"
|
||||
b111 '
|
||||
0!
|
||||
b110 &
|
||||
b10 +
|
||||
1#
|
||||
#120
|
||||
0#
|
||||
#121
|
||||
b1000 '
|
||||
0"
|
||||
b111 &
|
||||
1#
|
||||
#122
|
||||
0#
|
||||
#123
|
||||
b0 '
|
||||
b1000 &
|
||||
1#
|
||||
#124
|
||||
0#
|
||||
#125
|
||||
b1 '
|
||||
b0 &
|
||||
1#
|
||||
#126
|
||||
0#
|
||||
#127
|
||||
b10 '
|
||||
b1 &
|
||||
1#
|
||||
#128
|
||||
0#
|
||||
#129
|
||||
b11 '
|
||||
b10 &
|
||||
1#
|
||||
#130
|
||||
0#
|
||||
#131
|
||||
b100 '
|
||||
b11 &
|
||||
1#
|
||||
#132
|
||||
0#
|
||||
#133
|
||||
b101 '
|
||||
b100 &
|
||||
1#
|
||||
#134
|
||||
0#
|
||||
b101 '
|
||||
1%
|
||||
#135
|
||||
b110 '
|
||||
1*
|
||||
b101 &
|
||||
1#
|
||||
#136
|
||||
0#
|
||||
#137
|
||||
1"
|
||||
b111 '
|
||||
b110 &
|
||||
1#
|
||||
#138
|
||||
0#
|
||||
#139
|
||||
b1000 '
|
||||
0"
|
||||
b111 &
|
||||
1#
|
||||
#140
|
||||
0#
|
||||
#141
|
||||
b0 '
|
||||
b1000 &
|
||||
1#
|
||||
#142
|
||||
0#
|
||||
b0 '
|
||||
1$
|
||||
0%
|
||||
#143
|
||||
b0 (
|
||||
0*
|
||||
b0 +
|
||||
b0 &
|
||||
1#
|
||||
#144
|
||||
0#
|
||||
0$
|
||||
#145
|
||||
1#
|
||||
#146
|
||||
0#
|
||||
#147
|
||||
1#
|
||||
#148
|
||||
0#
|
||||
#149
|
||||
1#
|
||||
#150
|
||||
0#
|
||||
#151
|
||||
1#
|
||||
#152
|
||||
0#
|
||||
b1 (
|
||||
b100 '
|
||||
b0 )
|
||||
1%
|
||||
#153
|
||||
b101 '
|
||||
1!
|
||||
b1 )
|
||||
1*
|
||||
b100 &
|
||||
b0 ,
|
||||
b1 +
|
||||
1#
|
||||
#154
|
||||
0#
|
||||
#155
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#156
|
||||
0#
|
||||
#157
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#158
|
||||
0#
|
||||
#159
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#160
|
||||
0#
|
||||
b100 '
|
||||
b0 )
|
||||
1!
|
||||
0%
|
||||
#161
|
||||
b101 '
|
||||
b1 )
|
||||
1!
|
||||
0*
|
||||
b100 &
|
||||
b0 ,
|
||||
1#
|
||||
#162
|
||||
0#
|
||||
#163
|
||||
b110 '
|
||||
b10 )
|
||||
1!
|
||||
b101 &
|
||||
b1 ,
|
||||
1#
|
||||
#164
|
||||
0#
|
||||
#165
|
||||
1"
|
||||
b111 '
|
||||
b11 )
|
||||
1!
|
||||
b110 &
|
||||
b10 ,
|
||||
1#
|
||||
#166
|
||||
0#
|
||||
#167
|
||||
b1000 '
|
||||
b100 )
|
||||
1!
|
||||
0"
|
||||
b111 &
|
||||
b11 ,
|
||||
1#
|
||||
#168
|
||||
0#
|
||||
#169
|
||||
b0 '
|
||||
b101 )
|
||||
1!
|
||||
b1000 &
|
||||
b100 ,
|
||||
1#
|
||||
#170
|
||||
0#
|
||||
#171
|
||||
b1 '
|
||||
b110 )
|
||||
1!
|
||||
b0 &
|
||||
b101 ,
|
||||
1#
|
||||
#172
|
||||
0#
|
||||
#173
|
||||
b10 '
|
||||
b111 )
|
||||
1!
|
||||
b1 &
|
||||
b110 ,
|
||||
1#
|
||||
#174
|
||||
0#
|
||||
#175
|
||||
b11 '
|
||||
b1000 )
|
||||
1!
|
||||
b10 &
|
||||
b111 ,
|
||||
1#
|
||||
#176
|
||||
0#
|
||||
#177
|
||||
b100 '
|
||||
b1001 )
|
||||
1!
|
||||
b11 &
|
||||
b1000 ,
|
||||
1#
|
||||
#178
|
||||
0#
|
||||
#179
|
||||
b101 '
|
||||
b1010 )
|
||||
1!
|
||||
b100 &
|
||||
b1001 ,
|
||||
1#
|
||||
#180
|
||||
0#
|
||||
#181
|
||||
b110 '
|
||||
b10 (
|
||||
1!
|
||||
b101 &
|
||||
b1010 ,
|
||||
1#
|
||||
#182
|
||||
0#
|
||||
#183
|
||||
1"
|
||||
b111 '
|
||||
0!
|
||||
b110 &
|
||||
b10 +
|
||||
1#
|
||||
#184
|
||||
0#
|
||||
#185
|
||||
b1000 '
|
||||
0"
|
||||
b111 &
|
||||
1#
|
||||
#186
|
||||
0#
|
||||
#187
|
||||
b0 '
|
||||
b1000 &
|
||||
1#
|
||||
#188
|
||||
0#
|
||||
#189
|
||||
b1 '
|
||||
b0 &
|
||||
1#
|
||||
#190
|
||||
0#
|
||||
#191
|
||||
b10 '
|
||||
b1 &
|
||||
1#
|
||||
#192
|
||||
0#
|
||||
Reference in New Issue
Block a user