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

Subversion Repositories numbert_sort_device

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /numbert_sort_device
    from Rev 7 to Rev 8
    Reverse comparison

Rev 7 → Rev 8

/trunk/main/dynamic_tree.sv
63,8 → 63,8
endfunction
typedef enum bit[3:0] { VMS_EMPTY=4'h0,
VMS_BUSY,
VMS_READY,
VMS_PROCESS,
VMS_BOMB,
 
VMS_READ,
125,17 → 125,17
value <= fromParent;//==VK_APPLY || fromParent==VK_EMPTY || fromParent==VK_K0 ? fromParent : VK_DUMMY5; // write self
if ( fromParent && CH_NUM( fromParent )==0 )
begin
message.msg <= VMS_READY;
message.msg <= fromParent;
message.tgt <= TO_PARENT;
state <= VMS_READY;
end
end
else if ( CH_NUM( value )!=0 && ~fromLeft[0] )
else if ( CH_NUM( value )!=0 && fromLeft==0 )
begin // write left
message.msg <= fromParent;
message.tgt <= TO_LEFT;
end
else if ( CH_NUM( value )==2 && ~fromRight[0] )
else if ( CH_NUM( value )==2 && fromRight==0 )
begin // begin writing right
message.msg <= fromParent;
message.tgt <= TO_RIGHT;
142,47 → 142,85
end
else
begin
message.msg <= VMS_READY;
message.msg <= VMS_BUSY;
message.tgt <= TO_PARENT;
state <= VMS_READY;
state <= VMS_BUSY;
end
end
VMS_BUSY:
begin
if ( fromLeft && ( CH_NUM( value )==1 || fromRight ) )
begin
if ( value != VK_APPLY )
begin
message.msg <= value;
state <= VMS_READY;
end
else
begin
case (step)
0:
begin
message.msg <= VMS_READ;
message.tgt <= TO_RIGHT;
step <= 1;
end
1:
begin
message.msg <= VMS_APPLY;
message.tgt <= TO_LEFT;
step <= 2;
end
2:
begin
if ( fromRight == VK_EOF )
begin
step <= 3;
message.msg <= VK_EMPTY;
end
else
begin
message.tgt <= TO_LEFT;
message.msg <= fromRight;
end
end
3:
begin
value <= VK_TRANSIT;
state <= VMS_BUSY;
message.msg <= VMS_BOMB;
message.tgt <= TO_RIGHT;
step <= 0;
end
endcase
end
end
end
VMS_READ:
begin
if ( message.msg == VK_EOF )
begin
message.msg <= VMS_READY; // end read 2
message.msg <= value; // end read 2
state <= VMS_READY;
step <= 0;
end
// else if ( message.msg == VMS_READY && value != VK_TRANSIT )
// begin
// message.msg <= value; // read self
// message.tgt <= TO_PARENT;
// end
else if ( CH_NUM( value )==0 )
else if ( step==0 && fromLeft != VK_EOF )
begin
message.msg <= VK_EOF; // end read 1.1
end
else if ( ~step[0] && fromLeft == VMS_READY )
begin
message.msg <= VMS_READ; // command left
message.tgt <= TO_LEFT;
end
else if ( ~step[0] && fromLeft != VK_EOF )
begin
message.msg <= fromLeft; // transfer left
message.tgt <= TO_PARENT;
end
else if ( CH_NUM( value )==1 )
begin
message.tgt <= TO_PARENT;
message.msg <= VK_EOF; // end read 1.2
end
else if ( fromRight == VMS_READY )
else if ( step==0 )
begin
message.msg <= VMS_READ; // command right
message.tgt <= TO_RIGHT;
step[0] <= 1;
step <= 1;
end
else if ( fromRight != VK_EOF )
begin
192,7 → 230,6
else
begin
message.msg <= VK_EOF; // end read 1.3
step[0] <= 0;
end
 
210,12 → 247,22
end
VMS_READ: // read self
begin
if ( value != VK_TRANSIT )
if ( CH_NUM( value )==0 )
begin // begin 1
message.msg <= VK_EOF; // end read 1.1
end
else
begin // begin 2
message.msg <= VMS_READ; // command left
message.tgt <= TO_LEFT;
end
if ( value != VK_TRANSIT || step==1 )
begin
message.msg <= value;
message.tgt <= TO_PARENT;
state <= VMS_READ;
step <= 0;
end
state <= VMS_READ;
else
step <= 1;
end
VMS_APPLY: // apply string from parent to itself
begin
248,10 → 295,16
end
end
default:
if ( value == VK_TRANSIT )
begin
message.msg <= VMS_READY;
message.msg <= fromLeft;
message.tgt <= TO_PARENT;
end
else
begin
message.msg <= value;
message.tgt <= TO_PARENT;
end
endcase
end
264,7 → 317,7
else
begin
message.msg <= VK_EMPTY;
state <= VMS_READY;
state <= VMS_BUSY;
value <= VK_APPLY; // Sxyz -> _`_ (`xz) (`yz)
end
endcase

powered by: WebSVN 2.1.0

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