OpenCores
URL https://opencores.org/ocsvn/spacewiresystemc/spacewiresystemc/trunk

Subversion Repositories spacewiresystemc

[/] [spacewiresystemc/] [trunk/] [rtl/] [RTL_VB/] [rx_spw.v] - Diff between revs 14 and 19

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 14 Rev 19
Line 45... Line 45...
                        output rx_got_null,
                        output rx_got_null,
                        output rx_got_nchar,
                        output rx_got_nchar,
                        output rx_got_time_code,
                        output rx_got_time_code,
                        output rx_got_fct,
                        output rx_got_fct,
 
 
                        output [8:0] rx_data_flag,
                        output reg [8:0] rx_data_flag,
                        output rx_buffer_write,
                        output reg rx_buffer_write,
 
 
                        output [7:0] rx_time_out,
                        output reg [7:0] rx_time_out,
                        output rx_tick_out
                        output reg rx_tick_out
                 );
                 );
 
 
 
 
        reg  [4:0] counter_neg;
        reg  [4:0] counter_neg;
 
 
Line 95... Line 95...
        reg [9:0] data_l_r;
        reg [9:0] data_l_r;
 
 
        reg parity_error;
        reg parity_error;
        wire check_c_d;
        wire check_c_d;
 
 
 
        reg rx_data_take;
 
 
        //CLOCK RECOVERY
        //CLOCK RECOVERY
        assign posedge_clk      = (rx_din ^ rx_sin)?1'b1:1'b0;
        assign posedge_clk      = (rx_din ^ rx_sin)?1'b1:1'b0;
        assign negedge_clk      = (!(rx_din ^ rx_sin))?1'b1:1'b0;
        assign negedge_clk      = (!(rx_din ^ rx_sin))?1'b1:1'b0;
 
 
        assign check_c_d        = ((is_control & counter_neg == 5'd2) == 1'b1 | (control[2:0] != 3'd7 & is_data & counter_neg == 5'd5) == 1'b1 | (control[2:0] == 3'd7 & is_data & counter_neg == 5'd5) == 1'b1)? 1'b1: 1'b0;
        assign check_c_d        = ((is_control & counter_neg == 5'd2) == 1'b1 | (control[2:0] != 3'd7 & is_data & counter_neg == 5'd5) == 1'b1 | (control[2:0] == 3'd7 & is_data & counter_neg == 5'd5) == 1'b1)? 1'b1: 1'b0;
Line 111... Line 113...
        assign rx_error         =  parity_error;
        assign rx_error         =  parity_error;
 
 
        assign rx_got_nchar     = (control[2:0] != 3'd7 & is_data)?1'b1:1'b0;
        assign rx_got_nchar     = (control[2:0] != 3'd7 & is_data)?1'b1:1'b0;
        assign rx_got_time_code = (control[2:0] == 3'd7 & is_data)?1'b1:1'b0;
        assign rx_got_time_code = (control[2:0] == 3'd7 & is_data)?1'b1:1'b0;
 
 
        assign rx_buffer_write  = ( (control[2:0] == 3'd5 & is_control) == 1'b1 | (control[2:0] != 3'd7 & is_data) == 1'b1)?1'b1:1'b0;
 
        assign rx_data_flag     = (  (control[2:0] == 3'd6 & is_control) == 1'b1 )?9'b100000001:
 
                                  (  (control[2:0] == 3'd5 & is_control) == 1'b1 )?9'b100000000:
 
                                  (  (control[2:0] != 3'd7 & is_data) == 1'b1)?data[8:0]:9'd0;
 
 
 
        assign rx_time_out      = ((control[2:0] == 3'd7 & is_data) == 1'b1)?timecode[7:0]:8'd0;
 
        assign rx_tick_out      = ((control[2:0] == 3'd7 & is_data) == 1'b1)?1'b1:1'b0;
 
 
 
always@(posedge posedge_clk or negedge rx_resetn)
always@(posedge posedge_clk or negedge rx_resetn)
begin
begin
 
 
        if(!rx_resetn)
        if(!rx_resetn)
        begin
        begin
Line 293... Line 287...
                control     <= 4'd0;
                control     <= 4'd0;
                control_l_r <= 4'd0;
                control_l_r <= 4'd0;
 
 
                data        <= 10'd0;
                data        <= 10'd0;
                data_l_r    <= 10'd0;
                data_l_r    <= 10'd0;
 
                rx_data_flag    <= 9'd0;
 
                rx_buffer_write <= 1'b0;
 
                rx_data_take    <= 1'b0;
 
 
                timecode    <= 10'd0;
                timecode    <= 10'd0;
 
                rx_time_out <= 8'd0;
 
                rx_tick_out <= 1'b0;
 
 
                last_is_control <=1'b0;
                last_is_control <=1'b0;
                last_is_data    <=1'b0;
                last_is_data    <=1'b0;
                last_is_timec   <=1'b0;
                last_is_timec   <=1'b0;
 
 
Line 307... Line 306...
                last_was_timec   <=1'b0;
                last_was_timec   <=1'b0;
 
 
        end
        end
        else
        else
        begin
        begin
 
 
 
                rx_buffer_write <= rx_data_take;
 
                rx_data_flag <= data[8:0];
 
 
 
                rx_time_out <= timecode;
 
 
                if((control[2:0] != 3'd7 & is_data) == 1'b1)
                if((control[2:0] != 3'd7 & is_data) == 1'b1)
                begin
                begin
 
 
                        data                    <= {bit_d_9,bit_d_8,bit_d_7,bit_d_6,bit_d_5,bit_d_4,bit_d_3,bit_d_2,bit_d_1,bit_d_0};
                        data                    <= {bit_d_9,bit_d_8,bit_d_0,bit_d_1,bit_d_2,bit_d_3,bit_d_4,bit_d_5,bit_d_6,bit_d_7};
                        data_l_r                <= data;
                        data_l_r                <= data;
 
 
 
                        rx_data_take <= 1'b1;
 
                        rx_tick_out  <= 1'b0;
 
 
                        last_is_control         <=1'b0;
                        last_is_control         <=1'b0;
                        last_is_data            <=1'b1;
                        last_is_data            <=1'b1;
                        last_is_timec           <=1'b0;
                        last_is_timec           <=1'b0;
                        last_was_control        <= last_is_control;
                        last_was_control        <= last_is_control;
                        last_was_data           <= last_is_data ;
                        last_was_data           <= last_is_data ;
Line 324... Line 332...
                end
                end
                else if((control[2:0] == 3'd7 & is_data) == 1'b1)
                else if((control[2:0] == 3'd7 & is_data) == 1'b1)
                begin
                begin
 
 
                        timecode                 <= {bit_d_9,bit_d_8,bit_d_0,bit_d_1,bit_d_2,bit_d_3,bit_d_4,bit_d_5,bit_d_6,bit_d_7};
                        timecode                 <= {bit_d_9,bit_d_8,bit_d_0,bit_d_1,bit_d_2,bit_d_3,bit_d_4,bit_d_5,bit_d_6,bit_d_7};
 
                        rx_tick_out  <= 1'b1;
 
                        rx_data_take <= 1'b0;
 
 
                        last_is_control         <= 1'b0;
                        last_is_control         <= 1'b0;
                        last_is_data            <= 1'b0;
                        last_is_data            <= 1'b0;
                        last_is_timec           <= 1'b1;
                        last_is_timec           <= 1'b1;
                        last_was_control        <= last_is_control;
                        last_was_control        <= last_is_control;
Line 338... Line 348...
                begin
                begin
 
 
                        control          <= {bit_c_3,bit_c_2,bit_c_1,bit_c_0};
                        control          <= {bit_c_3,bit_c_2,bit_c_1,bit_c_0};
                        control_l_r      <= control[3:0];
                        control_l_r      <= control[3:0];
 
 
/*
                        if((control[2:0] == 3'd6 & is_control) == 1'b1 )
                        if(last_is_data & last_was_data)
                        begin
                        begin
                                data <= 10'b0100000001;
                                data        <= 10'd0;
                                rx_data_take <= 1'b1;
                                data_l_r    <= 10'd0;
                        end
                                timecode    <= 10'd0;
                        else if(  (control[2:0] == 3'd5 & is_control) == 1'b1 )
                        end
                        begin
*/
                                data <= 10'b0100000000;
 
                                rx_data_take <= 1'b1;
 
                        end
 
                        else
 
                        begin
 
                                rx_data_take    <= 1'b0;
 
                        end
 
 
 
                        rx_tick_out  <= 1'b0;
 
 
                        last_is_control          <= 1'b1;
                        last_is_control          <= 1'b1;
                        last_is_data             <= 1'b0;
                        last_is_data             <= 1'b0;
                        last_is_timec            <= 1'b0;
                        last_is_timec            <= 1'b0;
                        last_was_control         <= last_is_control;
                        last_was_control         <= last_is_control;
                        last_was_data            <= last_is_data ;
                        last_was_data            <= last_is_data ;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.