Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 20:05

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Вт фев 22, 2022 13:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
А в это время...
(Нет, ну а как еще проверить новую плату? Конечно, взять форт-процессор, загрузить и помигать светодиодом).

Если что, не мое.


Вложения:
altera_kf.png
altera_kf.png [ 559.63 Кб | Просмотров: 17051 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Вт фев 22, 2022 15:25 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 174
Благодарил (а): 20 раз.
Поблагодарили: 13 раз.
Здóрово! Судя по строкам "kf532", использовалось Ваше ядро? Много пришлось переделывать под Альтеру? Насколько вообще переносимы описания на HDL между разными ПЛИС?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Вт фев 22, 2022 16:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
zma писал(а):
Судя по строкам "kf532", использовалось Ваше ядро?

Оно внезапно оказалось очень удачным. Это делалось с прицелом на 6-входовые LUT, на которые перешли современные ПЛИС. Соответственно, когда разрядность команды не превышает число входов в ячейке, ее можно декодировать в одной LUT. Ну и там в разделе generic map можно видеть, что ядро параметризуемое (это еще поверх моих параметров люди добавили). Соответственно, получился удобный модуль с rx/tx для внешнего UART и простой системной шиной внутри ПЛИС. Ну и компилятор уже не мой.

zma писал(а):
Много пришлось переделывать под Альтеру?

Судя по скорости запуска, минимально. Плата вот буквально на днях приехала.

zma писал(а):
Насколько вообще переносимы описания на HDL между разными ПЛИС?

В целом переносимы. Нужно аккуратно вынести из модулей платформенно-зависимые вещи (тактовый генератор, например). Для Xilinx еще поддерживается распределенная память, в других ПЛИС можно получить вместо нее большие куски из триггеров. Собственно, из-за всего этого и нет большого смысла делать какой-то "стандартный форт-процессор". Это по факту получился своеобразный кусок пластилина, которым можно быстро скрепить нужные компоненты системы.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Ср фев 23, 2022 02:08 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Hishnik писал(а):
zma писал(а):
Судя по строкам "kf532", использовалось Ваше ядро?
Оно внезапно оказалось очень удачным.
Как выглядит архитектура слов, управляющих аппаратным стеком циклов?
Сколько их может быт вложенных и отдельных независимых?

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Ср фев 23, 2022 02:22 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Sotnik писал(а):
Как выглядит архитектура слов, управляющих аппаратным стеком циклов?
Сколько их может быт вложенных и отдельных независимых?

DO LOOP I аппаратные. По умолчанию 16 уровней вложенных циклов, это связано с архитектурой распределенной памяти в Xilinx, которая синтезируется блоками 16x1. Т.е. меньше 16 делать нет смысла, все равно будет занят блок на 16 бит, и он не превращается в 8x2 или другие. В других семействах может быть 32x1, так что маленькие стеки есть смысл выделять по 32 ячейки. У стека циклов один уровень хранит I IMAX Addr (адрес начала тела цикла).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Ср фев 23, 2022 02:38 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Собственно, вот был вариант из серийного проекта, это еще 2015 год. Настраивается десяток параметров. Без анализа проекта целиком тут делать нечего. Ну и еще CORE = 0 - это для того, чтобы один загрузчик мог по объединенным входам rx загружать до 16 ядер. Байты 0xE0 - 0xEF устанавливают активным ядро 0 - 0xF, и на последующие посылки реагирует только ядро, синтезированное с таким же параметром CORE. Тут масса всего для настройки.

Код:
entity kf532 is
generic ( FCORE : integer := 50000000;
          CORE : integer := 0;
          UART_BAUDRATE : integer := 115200;
          DATAWIDTH : integer := 32;
     HARDWARE_DIVIDER : string := "YES";
          HARDWARE_RTC : string := "YES";   
          HARDWARE_LOOPSTACK : string := "YES";   
          EXTERNALADDRWIDTH : integer := 20;
          EXTERNALDATAWIDTH : integer := 32;
     PCWIDTH : integer := 16;
     RSTACKDEPTH : integer := 16;
     LSTACKDEPTH : integer := 16;
     CODEMEMSIZE : integer := 16384;
     DATAMEMSIZE : integer := 2048;
     ADDRMSB : integer := 10;
     CodeMemoryFileName: string := ""
        );
    Port ( clk : in  STD_LOGIC;
        rx : in  STD_LOGIC;
             reset : in  STD_LOGIC;
             dio : in  STD_LOGIC_VECTOR (EXTERNALDATAWIDTH -1 downto 0);
        wrio : out std_logic;
        tx : out std_logic;
             addr : out  STD_LOGIC_VECTOR (EXTERNALADDRWIDTH - 1 downto 0);
             data : out  STD_LOGIC_VECTOR (EXTERNALDATAWIDTH - 1 downto 0));
end kf532;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Сб фев 26, 2022 15:22 
Не в сети

Зарегистрирован: Пн окт 05, 2009 18:21
Сообщения: 405
Откуда: Минск SotnikSTO@mail.ru
Благодарил (а): 48 раз.
Поблагодарили: 3 раз.
Hishnik писал(а):
Sotnik писал(а):
Как выглядит архитектура слов, управляющих аппаратным стеком циклов?
Сколько их может быт вложенных и отдельных независимых?
DO LOOP I аппаратные. По умолчанию 16 уровней вложенных циклов, это связано с архитектурой распределенной памяти в Xilinx, которая синтезируется блоками 16x1. Т.е. меньше 16 делать нет смысла, все равно будет занят блок на 16 бит, и он не превращается в 8x2 или другие. В других семействах может быть 32x1, так что маленькие стеки есть смысл выделять по 32 ячейки. У стека циклов один уровень хранит I IMAX Addr (адрес начала тела цикла).
Запустив Do 16 шт Loop, из 16-го можно получить значение первого, точнее, любого, цикла за один такт?
И при выходе по Leave потом доступны значения всех циклов по одному такту?
Или всё намного кучерявее для FPGA???

А мы корячимся с нахлобучками для чужих камней...
Я понимаю, что при массовости Форт в ARM будет дешевле,
и потеря в скорости со 100МГц в десять раз несущественна, для реализации задуманного.
Пора отказаться от коровы с седлом. :)

KF532 - это максимальная версия ядра?

_________________
Сотник. SotnikSTO@mail.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Форт-процессор... просто проверить, как работает Altera.
СообщениеДобавлено: Сб фев 26, 2022 15:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Sotnik писал(а):
Запустив Do 16 шт Loop, из 16-го можно получить значение первого, точнее, любого, цикла за один такт?

В активной реализации только верхнего. Это зависит от реализации стека. Distributed memory позволяет организовать память мелкими блоками 16x1, собирая из них многоразрядные ячейки. Читать при этом можно из какой-то одной ячейки. Если реализовать произвольное чтение, такая конструкция рассыпается на отдельные триггеры и занимает больше места в ПЛИС. В принципе можно при желании, но не было нужно. Немного неудобно, что недоступен J, но это обходится программно.

Sotnik писал(а):
И при выходе по Leave потом доступны значения всех циклов по одному такту?

Этого немного не понял. Да, можно завершить уровень за такт. В целом можно хоть все циклы сбросить, это одна операция с указателем глубины стека циклов.

Sotnik писал(а):
Я понимаю, что при массовости Форт в ARM будет дешевле,

ПЛИС как аппаратная платформа интересна сама по себе. Форт-процессор в ней позволяет быстрее увязать устройства, не стягивая на себя внимание. Для этого он должен быть конфигурируемым на этапе доводки проекта. Можно песок всыпать в банку с камнями, но насыпав сначала песок, камни туда уже не уложить.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB