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 |