/qtt

Primary LanguageSystemVerilog

Device 5CGXFC7D6

Resource Usage
Logic utilization (in ALMs) 2,043
Total registers 1467
Total block memory bits 259,120

Fmax = 139MHz

Краткое описание функционирования:

Расчет максимальной длины подряд идущих единиц

Для каждого байта предрасчитаны следующие параметры:

  • максимальная длина подряд идущих единиц в слове

  • длина подряд идущих единиц в начале слова

  • длина подряд идущих единиц в конце слова

    Пример:

Слово End Length Start
0b0000_0000 0 0 0
0b1111_1111 8 8 8
0b1011_1011 1 3 2
0b1110_1011 3 3 2

В дальнейшем они каскадом соединяются

Пример:

0b1011_1011__1110_1011 -> ( 1 3 2 ) ( 3 3 2 ) -> ( 1 5 2)

Для подсчета нулей используется этот же модуль, на вход которого подано инвертированное слово

Подсчет единиц в слове

Для увеличения максимальной частоты для каждого байта предрасчитано количество единиц в байте, далее, все тем же каскадом суммируем все со всем

Подсчет знакоперемен

Вспоминаем что у ИСКЛ ИЛИ таблица истинности соответствует изменению 0-1 или 1-0, соответственно делаем XOR для всех рядом стоящих пар битов в слове, далее считаем количество единичных бит модулем, который у нас уже есть