Как умножить матрицы, содержащие числа с плавающей запятой в FPGA?

Я хотел бы задать вопрос о матричном умножении в HDL. В течение 6 месяцев я изучал FPGA и дизайн ASIC, но все еще не обладаю достаточным опытом для программирования FPGA с использованием Verilog/VHDL. У меня был быстрый поиск и я обнаружил, что Verily подходит для меня. Во всяком случае, вы просто считаете меня новичком, и до сих пор я следовал только простым учебникам, сделанным с использованием Xilinx Spartan 3E-XCS1600E MicroBlaze Starter Kit, потому что он у меня тоже есть.

Самым сложным для меня было создание матриц в Verilog. Если я в состоянии создать матрицы и заполнить их целыми числами, то я могу перейти к следующему шагу матрицы с плавающими числами. Заранее я тоже хочу взять обратную матрицу и кажется мне крайне сложной.

У меня вопрос: что мне делать, чтобы умножить матрицы? Есть ли какой-нибудь хитрый или простой способ сделать это, как на языке Си? (Я знаю, что Verilog - это ЛПВП, и мы не можем так думать). Также, как я могу преобразовать мои плавающие числа в фиксированный или целочисленный тип? Тогда я думаю, что смогу решить мою проблему таким образом. Я посмотрел через другие вопросы, но не очень хорошо понял. Спасибо за ваш ответ и помощь.

Дополнительный вопрос: если я попробую эти операции на MATLAB или Simulink, может быть проще конвертировать их в HDL с помощью HDL Coder? Если это так, не могли бы вы мне помочь?

С Уважением,

Leonardo

1 ответ

Решение

Вы можете создавать матрицы с оперативной памятью в аппаратном дизайне. На самом деле все можно описать как RAM:)

Конечно, в Verilog может поддерживаться только целое число, но у нас есть метод, который может создавать и вычислять числа с плавающей точкой.

  1. Определите синтаксис с плавающей точкой. Предположим, что у нас есть reg var[7:0], мы можем предположить, что var[7:4] является целой частью, а var[3:0] является десятичной частью. подобно 8'b0101_1001 равно 5,9 в DEC. Вы должны ограничить диапазон var[3:0] до 0 ~ 9!
  2. IEEE 754. http://grouper.ieee.org/groups/754/ Этот стандарт широко используется во многих областях, но я думаю, что он будет немного сложным для вас.

В работе с матрицами нет ничего особенного, просто следуйте тому, что вы узнали на уроке математики.

Я не очень хорошо владею английским языком. Надеюсь, вы понимаете.

Другие вопросы по тегам