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