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

Subversion Repositories numbert_sort_device

[/] [numbert_sort_device/] [trunk/] [test_vga.v] - Diff between revs 2 and 4

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 4
 
 
 
 
module  VGA_Pattern     (       //      Read Out Side
module  VGA_Pattern     (       //      Read Out Side
                                                oRed,
                                                oRed,
                                                oGreen,
                                                oGreen,
                                                oBlue,
                                                oBlue,
                                                iVGA_X,
                                                iVGA_X,
                                                iVGA_Y,
                                                iVGA_Y,
                                                iVGA_CLK,
                                                iVGA_CLK,
                                                //      Control Signals
                                                //      Control Signals
                                                iRST_n,
                                                iRST_n,
 
 
                                                iColor_SW,
                                                iColor_SW,
                                                endFrame,
                                                endFrame,
                                                dbg_val );
                                                dbg_val );
 
 
parameter R_SZ= 64;
parameter R_SZ= 64;
 
 
                                                //      Read Out Side
                                                //      Read Out Side
output  reg     [9:0]    oRed;
output  reg     [9:0]    oRed;
output  reg     [9:0]    oGreen;
output  reg     [9:0]    oGreen;
output  reg     [9:0]    oBlue;
output  reg     [9:0]    oBlue;
input   [11:0]           iVGA_X;
input   [11:0]           iVGA_X;
input   [11:0]           iVGA_Y;
input   [11:0]           iVGA_Y;
input                           iVGA_CLK;
input                           iVGA_CLK;
//      Control Signals
//      Control Signals
input                           iRST_n;
input                           iRST_n;
input   [9:0]                    iColor_SW;
input   [9:0]                    iColor_SW;
input                           endFrame;
input                           endFrame;
 
 
output wire [63:0] dbg_val;
output wire [63:0] dbg_val;
wire [63:0] dbg_val_i;
wire [63:0] dbg_val_i;
 
 
parameter ENABLE_HEAVIES= 1;
parameter ENABLE_HEAVIES= 1;
 
 
reg [15:0] chrono;
reg [15:0] chrono;
reg endFrame2;
reg endFrame2;
reg endFrame3;
reg endFrame3;
 
 
wire [3:0] x;
wire [3:0] x;
wire [3:0] y;
wire [3:0] y;
 
 
 
 
wire [7:0] rv_a_2;
wire [7:0] rv_a_2;
wire [7:0] gv_a_2;
wire [7:0] gv_a_2;
wire [7:0] bv_a_2;
wire [7:0] bv_a_2;
 
 
 
 
Test_Sorting_Stack #( 15, R_SZ   ) high_end_2( .clk( iVGA_CLK ), .rst( ~iRST_n ),
Test_Sorting_Stack #( 15, R_SZ   ) high_end_2( .clk( iVGA_CLK ), .rst( ~iRST_n ),
                                                                .iX_video( iVGA_X ), .iY_video( iVGA_Y ),
                                                                .iX_video( iVGA_X ), .iY_video( iVGA_Y ),
                                                                .oR_video( rv_a_2 ), .oG_video( gv_a_2 ), .oB_video( bv_a_2 ),
                                                                .oR_video( rv_a_2 ), .oG_video( gv_a_2 ), .oB_video( bv_a_2 ),
                                                                .tumblers( iColor_SW ), .endFrame(endFrame3),
                                                                .tumblers( iColor_SW ), .endFrame(endFrame3),
                                                                .dbg_val(_)
                                                                .dbg_val(_)
                                                        );
                                                        );
 
 
 
 
 
 
wire [7:0] mp_test_out;
wire [7:0] mp_test_out;
 
 
assign dbg_val= iColor_SW[7] ? dbg_val_i:chrono;
assign dbg_val= iColor_SW[7] ? dbg_val_i:chrono;
 
 
always@(posedge iVGA_CLK or negedge iRST_n)
always@(posedge iVGA_CLK or negedge iRST_n)
begin
begin
        if(!iRST_n)
        if(!iRST_n)
        begin
        begin
                oRed    <=      0;
                oRed    <=      0;
                oGreen  <=      0;
                oGreen  <=      0;
                oBlue   <=      0;
                oBlue   <=      0;
                chrono <= 0;
                chrono <= 0;
        end
        end
        else
        else
        begin
        begin
                if ( endFrame2==0 && endFrame==1 )
                if ( endFrame2==0 && endFrame==1 )
                begin
                begin
                        chrono<= chrono +1;
                        chrono<= chrono +1;
                        endFrame3<= 1;
                        endFrame3<= 1;
                end
                end
                else
                else
                begin
                begin
                        endFrame3<= 0;
                        endFrame3<= 0;
                end
                end
                endFrame2<= endFrame;
                endFrame2<= endFrame;
 
 
 
 
                begin
                begin
//                      oBlue           <=      iVGA_X[4] ? -1: iVGA_X;
//                      oBlue           <=      iVGA_X[4] ? -1: iVGA_X;
//                      oGreen  <=      iVGA_X[5] ? -1: iVGA_X;
//                      oGreen  <=      iVGA_X[5] ? -1: iVGA_X;
//                      oRed            <=      iVGA_X[6] ? -1: iVGA_Y;
//                      oRed            <=      iVGA_X[6] ? -1: iVGA_Y;
                        oBlue           <=      bv_a_2;
                        oBlue           <=      bv_a_2;
                        oGreen  <=      gv_a_2;
                        oGreen  <=      gv_a_2;
                        oRed            <=      rv_a_2;
                        oRed            <=      rv_a_2;
                end
                end
        end
        end
end
end
 
 
endmodule
endmodule
 
 
 
 
 
 
module Test_Sorting_Stack ( clk, rst,
module Test_Sorting_Stack ( clk, rst,
                                                                iX_video, iY_video,
                                                                iX_video, iY_video,
                                                                oR_video, oG_video, oB_video,
                                                                oR_video, oG_video, oB_video,
                                                                tumblers, endFrame, dbg_val     );
                                                                tumblers, endFrame, dbg_val     );
 
 
parameter HBIT= 15;
parameter HBIT= 15;
parameter R_SZ= 64;
parameter R_SZ= 64;
 
 
input clk;
input clk;
input rst;
input rst;
 
 
input signed [11:0] iX_video;
input signed [11:0] iX_video;
input signed [11:0] iY_video;
input signed [11:0] iY_video;
output reg [7:0] oR_video;
output reg [7:0] oR_video;
output reg [7:0] oG_video;
output reg [7:0] oG_video;
output reg [7:0] oB_video;
output reg [7:0] oB_video;
input   [9:0]                    tumblers;
input   [9:0]                    tumblers;
input endFrame;
input endFrame;
output wire [63:0] dbg_val= count;
output wire [63:0] dbg_val= count;
 
 
reg [HBIT*3+2:0]generator;
reg [HBIT*3+2:0]generator;
reg [HBIT*3+2:0]prev_generator;
reg [HBIT*3+2:0]prev_generator;
reg prev_btn;
reg prev_btn;
 
 
wire cell_rst= ( iX_video==1 && iY_video==1);
wire cell_rst= ( iX_video==1 && iY_video==1);
wire cell_clk= ( iX_video==1 );
wire cell_clk= ( iX_video==1 );
 
 
reg err_unsorted;
reg err_unsorted;
reg err_checksum;
reg err_checksum;
reg err_disagreement;
reg err_disagreement;
 
 
wire [HBIT:0] data_in= generator;
wire [HBIT:0] data_in= generator;
wire [HBIT:0] _data_out;
wire [HBIT:0] _data_out;
wire [HBIT:0] _d_out_3;
wire [HBIT:0] _d_out_3;
 
 
reg [HBIT:0] last_data;
reg [HBIT:0] last_data;
reg [31:0]   stack_sum;
reg [31:0]   stack_sum;
reg [15:0]   stack_pos_count;
reg [15:0]   stack_pos_count;
reg [31:0]   old_sum;
reg [31:0]   old_sum;
 
 
//      tumblers[4] ? increasing order : decreasing order
//      tumblers[4] ? increasing order : decreasing order
  wire [HBIT:0] _data_in= tumblers[4] ? -1-data_in : data_in;
  wire [HBIT:0] _data_in= tumblers[4] ? -1-data_in : data_in;
  Sorting_Tree #(HBIT,R_SZ) ctree ( clk, ~cell_clk, is_input, _data_in, _d_out_3        );
  Sorting_Tree #(HBIT,R_SZ) ctree ( clk, ~cell_clk, is_input, _data_in, _d_out_3        );
  wire [HBIT:0] d_out_3 = tumblers[4] ? -1-_d_out_3  : _d_out_3;
  wire [HBIT:0] d_out_3 = tumblers[4] ? -1-_d_out_3  : _d_out_3;
  Sorting_Tree #(HBIT,R_SZ) cstack ( clk, ~cell_clk, is_input, _data_in, _data_out      );
  Sorting_Stack #(HBIT,R_SZ) cstack ( clk, ~cell_clk, is_input, _data_in, _data_out     );
  wire [HBIT:0] data_out= tumblers[4] ? -1-_data_out : _data_out;
  wire [HBIT:0] data_out= tumblers[4] ? -1-_data_out : _data_out;
 
 
reg [11:0]count;
reg [11:0]count;
wire is_input= !cell_rst && count<R_SZ;
wire is_input= !cell_rst && count<R_SZ;
wire is_enable=!cell_rst && count<R_SZ*2;
wire is_enable=!cell_rst && count<R_SZ*2;
 
 
always@( posedge clk or posedge rst )
always@( posedge clk or posedge rst )
begin
begin
        if ( rst )
        if ( rst )
        begin
        begin
                generator<= 32'h12345678;
                generator<= 32'h12345678;
                prev_generator <= 32'h12345678;
                prev_generator <= 32'h12345678;
                err_unsorted<= 0;
                err_unsorted<= 0;
                err_checksum<= 0;
                err_checksum<= 0;
                err_disagreement<= 0;
                err_disagreement<= 0;
                last_data<= -1;
                last_data<= -1;
                stack_sum<= 0;
                stack_sum<= 0;
                stack_pos_count<=0;
                stack_pos_count<=0;
        end
        end
        else
        else
        if ( cell_rst )
        if ( cell_rst )
        begin
        begin
                count<= 0;
                count<= 0;
                stack_pos_count<= 0;
                stack_pos_count<= 0;
                if ( count )
                if ( count )
                begin
                begin
                        err_checksum<= ( tumblers[0] &err_checksum ) | ( stack_sum !=0 );
                        err_checksum<= ( tumblers[0] &err_checksum ) | ( stack_sum !=0 );
                        stack_sum<= 0;
                        stack_sum<= 0;
                        old_sum<= stack_sum;
                        old_sum<= stack_sum;
                end
                end
                prev_btn <= tumblers[2];
                prev_btn <= tumblers[2];
                if ( tumblers[1] && !( tumblers[2] && ~prev_btn ) )
                if ( tumblers[1] && !( tumblers[2] && ~prev_btn ) )
                begin
                begin
                        generator <= prev_generator;
                        generator <= prev_generator;
                end
                end
                else
                else
                begin
                begin
                        prev_generator <= generator;
                        prev_generator <= generator;
                end
                end
        end
        end
        else
        else
        begin
        begin
 
 
                if ( cell_clk )
                if ( cell_clk )
                begin
                begin
                        if ( is_input )
                        if ( is_input )
                        begin
                        begin
                                last_data <= -1;
                                last_data <= -1;
                                stack_sum <= stack_sum + data_in;
                                stack_sum <= stack_sum + data_in;
                                stack_pos_count<= stack_pos_count+ (data_in==0 ? 0:1);
                                stack_pos_count<= stack_pos_count+ (data_in==0 ? 0:1);
                        end
                        end
                        else if ( is_enable )
                        else if ( is_enable )
                        begin
                        begin
                                stack_sum <= stack_sum - data_out;
                                stack_sum <= stack_sum - data_out;
                                last_data<= data_out;
                                last_data<= data_out;
                                stack_pos_count<= stack_pos_count- (data_out==0 ? 0:1);
                                stack_pos_count<= stack_pos_count- (data_out==0 ? 0:1);
                                err_unsorted<=      ( tumblers[0] & err_unsorted)     |
                                err_unsorted<=      ( tumblers[0] & err_unsorted)     |
                                                                                                        ( tumblers[4] && ( last_data > data_out ))|
                                                                                                        ( tumblers[4] && ( last_data > data_out ))|
                                                                                                        ( ~tumblers[4] && ( last_data < data_out ));
                                                                                                        ( ~tumblers[4] && ( last_data < data_out ));
                                err_disagreement<=  ( tumblers[0] & err_disagreement) | ( data_out != d_out_3 );
                                err_disagreement<=  ( tumblers[0] & err_disagreement) | ( data_out != d_out_3 );
                        end
                        end
                        generator<= generator*11 + ( generator >> 16 );
                        generator<= generator*11 + ( generator >> 16 );
                        count<= count +1;
                        count<= count +1;
                end
                end
 
 
//              oR_video<= (is_input ? data_in[HBIT:HBIT-9] : data_out[HBIT:HBIT-9]) > iX_video && !err_unsorted ? -1:0;
//              oR_video<= (is_input ? data_in[HBIT:HBIT-9] : data_out[HBIT:HBIT-9]) > iX_video && !err_unsorted ? -1:0;
//              oG_video<= stack_sum[HBIT:HBIT-9] > iX_video ? -1:0;
//              oG_video<= stack_sum[HBIT:HBIT-9] > iX_video ? -1:0;
                oR_video<= (is_input ? show_data_in : show_d_out_3 ) > iX_video ? -1:(8'h0-err_unsorted);
                oR_video<= (is_input ? show_data_in : show_d_out_3 ) > iX_video ? -1:(8'h0-err_unsorted);
                oG_video<= (is_input ? show_data_in : show_data_out) > iX_video ? -1:(8'h0-err_checksum);
                oG_video<= (is_input ? show_data_in : show_data_out) > iX_video ? -1:(8'h0-err_checksum);
                oB_video<= (is_input ?            0 : show_data_out) > iX_video ? -1:(8'h0-err_disagreement);
                oB_video<= (is_input ?            0 : show_data_out) > iX_video ? -1:(8'h0-err_disagreement);
        end
        end
end
end
 
 
wire [9:0] show_data_in = tumblers[3] ? data_in [9:0] : data_in [HBIT:HBIT-9];
wire [9:0] show_data_in = tumblers[3] ? data_in [9:0] : data_in [HBIT:HBIT-9];
wire [9:0] show_data_out= tumblers[3] ? data_out[9:0] : data_out[HBIT:HBIT-9];
wire [9:0] show_data_out= tumblers[3] ? data_out[9:0] : data_out[HBIT:HBIT-9];
wire [9:0] show_d_out_3 = tumblers[3] ? d_out_3 [9:0] : d_out_3 [HBIT:HBIT-9];
wire [9:0] show_d_out_3 = tumblers[3] ? d_out_3 [9:0] : d_out_3 [HBIT:HBIT-9];
 
 
endmodule
endmodule
 
 
 
 
 
 
 
 

powered by: WebSVN 2.1.0

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