## Details

Name: parallel_search_for_maximum_weight

Created: Oct 4, 2010

Updated: Oct 5, 2010

SVN Updated: Oct 7, 2010

## Other project properties

Category:
Arithmetic core

Language:
VHDL

Development status:
Beta

Additional info:
Design done

WishBone Compliant: No

License: LGPL

## Description

the aim of this design to build combinatorial digital circuit to find in fast parallel the maximum or the minimum of set of given set data where number of entries = N, can be configured at compile time and also the width = M of each entry.

the design idea based on binary tree structure, where there are Log_2(N) levels in the tree, the best values of N where

Log_2(N) = integer numbers like N = ( 4, 8, 16, 32, 64,...) where Log_2(N) = {2, 3, 4, 5, ...}. but to support general values of N like 29 the design will be Log_2(29)+1 which Log_2(32) where the values 30,31,32 is padded with zero's. for the width of each value the best is the even numbers but in case of odd the width is incremented by 1 and the LSB is = '0'.

## Files description

File name | description |
---|---|

basic_size.vhd | Define N = size of the data set, M which the WIDTH of each of Value |

basic_component.vhd | Define all the component of the design , no need to change it |

parallel_find_top.vhd | the top level file of the design |

mux_sel.vhd | compare and select the value of maximum, no need to change it |

Ripple.vhd | build the compare function based on ripple , no need to change it |

Result.vhd | build the select the answer , no need to change it(but here is possible to change from maximum and minimum, i will make this configurable) |

carry_cell_NAND.vhd | basic cell of the compare based on NAND gates,no need to change it |

carry_cell_NOR.vhd | basic cell of the compare based on NOR gates,no need to change it |