Как преобразовать двоичные числа с плавающей запятой в десятичные числа с помощью verilog? - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу программу.есть двоичное плавающее число, подобное этому формату: XX.XXX.например, двоичное число с плавающей запятой 01.101, преобразованное в десятичное число, составляет 1,625.Я долго пробовал, но не смог.

Я использую [4: 0] номер для сохранения номера.num [4: 3] - целая часть, num [2: 0] - плавающая часть.целочисленная часть проста, когда num [2: 0] = 3'b101, это означает, что двоичная плавающая часть равна 0,101, а преобразование в десятичное число - 0,625.Так как же я могу преобразовать последовательность «101», получить последовательность «625»?

1 Ответ

0 голосов
/ 23 декабря 2018

Самый быстрый способ, вероятно, просто использовать LUT (справочную таблицу).Поскольку дробная часть составляет всего 3 бита, это оставляет вам только 8 возможностей.И вы можете использовать 12-битное значение, где каждый кусочек является цифрой, которую можно отправить на дисплей и т. Д.

reg result[11:0] // each nibble represents a digit

always @(*) begin
    case (num[2:0])
        3'b000  : result = 12'h000;
        3'b001  : result = 12'h125;
        3'b010  : result = 12'h250;
        3'b011  : result = 12'h375;
        3'b100  : result = 12'h500;
        3'b101  : result = 12'h625;
        3'b110  : result = 12'h750;
        default : result = 12'h875;
    endcase    
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...