Fynjisx 0 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба Привет Всем! Нужен совет. Пишу простенький проц. На данный момент регистровый файл. На чем его лучше реализовать в ПЛИС на регистрах либо блоке памяти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 7 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба Конечно, на памяти будет несравненно меньше затрат, посмотрите на требуемую обвязку для регистров -- дешифраторы, мультиплексоры и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба 1 hour ago, vladec said: Конечно, на памяти будет несравненно меньше затрат, посмотрите на требуемую обвязку для регистров -- дешифраторы, мультиплексоры и т.п. И, главное, как увлекательно потом будет реализовывать операции типа "прочитать регистр счетчика команд, взять команду из внешней памяти по указанному адресу, взять операнд из регистра 0, взять операнд из регистра 1, положить результат в регистр 2, увеличить регистр счетчика команд на 1". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба Приветствую! 3 hours ago, Fynjisx said: Привет Всем! Нужен совет. Пишу простенький проц. На данный момент регистровый файл. На чем его лучше реализовать в ПЛИС на регистрах либо блоке памяти? Для начала определитесь с архитектурой вашего CPU, размером требуемого регистрового файла и требованиями к одновременному доступу к регистрам, и.т.д. А потом смотрите что выгоднее - Регистры на триггерах просты и позволяют сразу получить текущие значения из всех регистров одновременно, но требуют мультиплексор при чтении на общую шину. Обычно это и является крит. местом при большом количестве регистров (как по размеру так и по времянке. Регистры на distibuted памяти (память на LUT) фактически имеет встроенный mux на чтение, но не позволяет (если не размножать порты чтения увеличивая число элементов памяти) читать несколько регистров одновременно. Регистры на BRAM требуют как минимум 1 такт на чтение значения что тянет за собой удлинение конвейера обработки. Ну и опять же одновременное чтение относительно просто делается только для 2 регистров, Ну и естественно можно мешать все эти варианты в кашу CPU пока на выходе не получится Intel core i9 Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба Посмотрите другие реализации, а нужен ли вам такой файл. Регистры - FF, кэш block ram. Если сможете засунуть в block ram, то такая реализация приоритетней, хотя бы из экономии логики. P.S. не хочу акцентировать внимание на отличия в них, думаю это и так понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 27 июня, 2019 Опубликовано 27 июня, 2019 · Жалоба для практически любого хоумбрю процессора (да и для большинства фирменных "микроконтроллерных") достаточно 2 чтения и 1 запись (это порты регистрового файла) то есть берете две двухпорторых (true dual port) памяти ПЛИС и два порта записи объединяете в один порт, то есть содержимое обоих блоков памяти будет всегда одинаковым Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться