Один способ, который делает все это параллельно:
Вам нужно построить дерево компараторов и мультиплексоров:
- Начните с блока, который принимает два значения и дваиндексирует и передает индекс и значение большего.Один компаратор, 2 мукса на блок.
- На первом уровне вашего дерева у вас есть 4 из этих блоков, подающих
- на второй уровень 2 из этих блоков, результаты которого передаются в
- последний блок, который производит ваши ответы
Это может быть передано по конвейеру, чтобы вы могли пролистывать данные через него так быстро, как вам нравится,Но он будет использовать изрядное количество ресурсов.Насколько широки ваши сигналы?Каждый компаратор равен 1 LUT4 на бит, а мультиплексирование 2: 1 равно 1 LUT4 на бит.
В качестве альтернативы вы используете счетчик для выбора каждого из ваших значений по очереди.Если оно больше текущего наибольшего, запишите значение в ваш «самый большой» регистр и запишите счетчик в регистр «самый большой индекс».Сбрасывайте «самый большой» регистр до наименьшего значения каждый раз, когда ваш счетчик сбрасывается.
Это займет столько тактов, сколько у вас будет сигнала (8 в вашем случае)