Для представления цикла в долоте (@Normalization в Float Adder) - PullRequest
0 голосов
/ 19 января 2019

пытаюсь закодировать плавающий сумматор;https://github.com/ElectronNest/FPU/blob/master/FloatAdd.scala Это на полпути.

Нормализация - это огромная часть кода, поэтому я хотел бы использовать цикл for или какой-либо эквивалентный метод представления.Можно ли использовать цикл или нам нужно строгое кодирование?

Best, S.Takano

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Добро пожаловать и спасибо за Ваш интерес к долоту!

Я хотел бы повторить предложение Чика начать с чего-то небольшого, которое компилируется, моделируется и создается оттуда. В частности, приведенный выше код связывает некоторые конструкции Scala и Chisel (например, Scala's if else против Chisel when, .elsewhen, .otherwise), а также некоторые концепции Verilog и Chisel. (например, индексирование битов с помощью [high:low] по сравнению с долотом (high, low))

Если вы этого не видели, я бы посоветовал взглянуть на Chisel Bootcamp , который помогает объяснить, как использовать конструкции, подобные for циклам, для генерации аппаратного обеспечения.

Я также добавлю свои собственные ответы на этот вопрос в список рассылки пользователей чизеля , где я попытался объяснить некоторые интуиции, стоящие за написанием генераторов Чизеля, включая разграничение if и when и используя for петли.

0 голосов
/ 19 января 2019

Это очень общий и большой вопрос. Эквивалент цикла for в аппаратном обеспечении может быть реализован с использованием ряда методов, почти все из которых включают регистры для хранения информации о состоянии. Глядя на ваш код, я бы предложил, чтобы вы начали немного меньше и работали над синтаксисом, в настоящее время я вижу много синтаксических ошибок. Я использую IntelliJ Community Edition в качестве редактора, потому что он делает большую работу, помогая правильно структурировать код. Я также настоятельно рекомендую начинать с репозитория chisel-template . Он имеет правильную компоновку и примеры работающей схемы и жгута проводов модульного тестирования. Затем начните с небольшой реализации, которая делает что-то простое, например, просто передает входные данные на выход и запускает их в тестовом жгуте, а затем медленно строит схему для достижения ваших целей.

Удачи!

...