x393  1.0
FPGAcodeforElphelNC393camera
gtx_10x8dec.v
Go to the documentation of this file.
1 
39 module gtx_10x8dec(
40  input wire rst,
41  input wire clk,
42  input wire [19:0] indata,
43  output wire [15:0] outdata,
44  output wire [1:0] outisk,
45  output wire [1:0] notintable,
46  output wire [1:0] disperror
47 /* uncomment if necessary
48  input wire [0:0] inaux,
49  output wire [0:0] outaux, **/
50 );
51 /*
52 uncomment if necessary
53 // bypass auxilary informational signals
54 reg [0:0] aux_r;
55 reg [0:0] aux_rr;
56 always @ (posedge clk)
57 begin
58  aux_r <= inaux;
59  aux_rr <= aux_r;
60 end
61 assign outaux = aux_rr;
62 */
63 // split incoming data in 2 bytes
64 wire [9:0] addr0;
65 wire [9:0] addr1;
66 
67 assign addr0 = indata[9:0];
68 assign addr1 = indata[19:10];
69 
70 // get decoded values after 2 clock cycles, all '1's = cannot be decoded
71 wire [15:0] table0_out;
72 wire [15:0] table1_out;
73 wire [10:0] table0;
74 wire [10:0] table1;
75 assign table0 = table0_out[10:0];
76 assign table1 = table1_out[10:0];
77 
78 assign outdata = {table1[7:0], table0[7:0]};
79 assign outisk = {table1[8], table0[8]};
80 assign notintable = {&table1, &table0};
81 
82 // disparity control
83 // last clock disparity
85 // disparity after 1st byte
87 // delayed ones
88 reg disp0_r;
90 reg disp1_r;
92 always @ (posedge clk)
93 begin
94  disp0_r <= disparity;
95  disp0_rr <= disp0_r;
97  disp1_rr <= disp1_r;
98 end
99 // overall expected disparity when the table values would apper - disp0_r.
100 // disp1_rr shows expected after 0st byte would be considered
104 
107 
108 // invert disparity after a byte
109 // if current encoded word containg an equal amount of 1s and 0s (i.e. 5 x '1'), disp shall stay the same
110 // if amounts are unequal, there are either 4 or 6 '1's. in either case disp shall be inverted
113 assign inv_disp0 = ~^(indata[9:0]);
114 assign inv_disp1 = ~^(indata[19:10]);
115 
117 always @ (posedge clk)
118  disparity <= rst ? 1'b0 : inv_disp1 ^ inv_disp0 ? ~disparity : disparity;
119 
120 // to correct disparity if once an error occured
121 always @ (posedge clk)
123 
124 // calculate disparity on table values
129 // table_pos_disp - for current 10-bit word disparity can be positive
130 // _neg_ - can be negative
131 // neg & pos - can be either of them
132 assign table_pos_disp0 = table0[10];
133 assign table_neg_disp0 = table0[9];
134 assign table_pos_disp1 = table1[10];
135 assign table_neg_disp1 = table1[9];
136 
138 
139 // TODO change mem to 18 instead of 36, so the highest address bit could be dropped
141  .REGISTERS_A (1),
142  .REGISTERS_B (1),
143  .LOG2WIDTH_A (4),
144  .LOG2WIDTH_B (4)
145 )
146 decoding_table(
147  .clk_a (clk),
148  .addr_a ({1'b0, addr0}),
149  .en_a (1'b1),
150  .regen_a (1'b1),
151  .we_a (1'b0),
153  .data_in_a (16'h0),
154  .clk_b (clk),
155  .addr_b ({1'b0, addr1}),
156  .en_b (1'b1),
157  .regen_b (1'b1),
158  .we_b (1'b0),
160  .data_in_b (16'h0)
161 );
162 
163 endmodule
14728disp0_rreg
Definition: gtx_10x8dec.v:88
14729disp0_rrreg
Definition: gtx_10x8dec.v:89
14732correct_table_dispreg
Definition: gtx_10x8dec.v:101
14736inv_disp1wire
Definition: gtx_10x8dec.v:112
wire 14714clk
Definition: gtx_10x8dec.v:41
[14-LOG2WIDTH_A:0] 12040addr_a
14721addr1wire[9:0]
Definition: gtx_10x8dec.v:65
wire [1:0] 14719disperror
Definition: gtx_10x8dec.v:46
14734expected_disparity_intermwire
Definition: gtx_10x8dec.v:103
14726disparityreg
Definition: gtx_10x8dec.v:84
14720addr0wire[9:0]
Definition: gtx_10x8dec.v:64
14733expected_disparitywire
Definition: gtx_10x8dec.v:102
14735inv_disp0wire
Definition: gtx_10x8dec.v:111
wire [19:0] 14715indata
Definition: gtx_10x8dec.v:42
wire [1:0] 14718notintable
Definition: gtx_10x8dec.v:45
[1 << LOG2WIDTH_A-1:0] 12045data_in_a
decoding_table ramt_var_w_var_r
Definition: gtx_10x8dec.v:140
14724table0wire[10:0]
Definition: gtx_10x8dec.v:73
[1 << LOG2WIDTH_B-1:0] 12052data_in_b
wire [15:0] 14716outdata
Definition: gtx_10x8dec.v:43
14723table1_outwire[15:0]
Definition: gtx_10x8dec.v:72
14727disparity_intermwire
Definition: gtx_10x8dec.v:86
[1 << LOG2WIDTH_A-1:0] 12044data_out_a
14737table_pos_disp0wire
Definition: gtx_10x8dec.v:125
[14-LOG2WIDTH_B:0] 12047addr_b
14725table1wire[10:0]
Definition: gtx_10x8dec.v:74
14739table_pos_disp1wire
Definition: gtx_10x8dec.v:127
[1 << LOG2WIDTH_B-1:0] 12051data_out_b
14740table_neg_disp1wire
Definition: gtx_10x8dec.v:128
wire 14713rst
Definition: gtx_10x8dec.v:40
14731disp1_rrreg
Definition: gtx_10x8dec.v:91
wire [1:0] 14717outisk
Definition: gtx_10x8dec.v:44
14730disp1_rreg
Definition: gtx_10x8dec.v:90
14722table0_outwire[15:0]
Definition: gtx_10x8dec.v:71
14738table_neg_disp0wire
Definition: gtx_10x8dec.v:126