реклама на сайте
подробности

 
 
> Lattice Mico8 Soft Processor, поделитесь опытом
sonycman
сообщение Nov 6 2015, 00:20
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Доброго времени суток!

Недавно начал осваивать ПЛИС, и потихоньку добрался до имплементации простенького софт процессора.
Остановился на лэттисовском Mico8, как наиболее доступном, как мне показалось.

Несколько удивил некоторый аскетизм среды разработки, в том смысле, что по умолчанию я не нашёл возможности посмотреть получившийся код, который будет исполнять процессор.
Так ещё до кучи оказалось, что и отладка JTAG для Мико8 отсутствует как класс.

В общем - чёрный ящичек такой, никому не покажу, что и как smile3046.gif

Порылся в доках (с компилятором GCC я практически не знаком) и нашёл таки, как включить файл карты памяти линкера (опция -Map) и ассемблерных файлов, которые генерирует компилятор (опция -save-temps).
Стало немного понятно, как выглядит код и чем будет заниматься процессор.

Ещё научился запускать утилиту objdump.exe, с помощью которой можно дизассемблировать исполняемый файл проекта целиком и увидеть машинные коды полностью вместе с библиотечными функциями.
Правда, без библиотек Cygwin эта утилита не запускается, пришлось закинуть её в директорию Cygwin... а причём тут последний, зачем он мне нужен под Windows, не понимаю?
Это что получается, компилятор и все его утилиты работают под эмулятором?

В общем, кривенько как то все выходит, может, я что-то не так делаю?
Обычно в средах разработки все эти фишки включаются парой галочек в настройках графического интерфейса, и нет надобности лезть глубже...

Ещё пара не очень приятных впечатлений.
У процессора отсутствуют коды команд нецикличного сдвига битов.
Соостветственно для выполнения операций сдвига >> и << (даже на единичку) генерируются вызовы функций, где операция выполняется в цикле с помощью команд цикличного сдвига.
Неужели не хватило места для имплементации простейшего сдвига?

Стек прерываний почему то у процессора отдельный от общего стека. Причём нигде не нашёл задание его размера.
К примеру, при выборе средней модели памяти (64к) стек прерываний задаётся равным 512 байтам, и точка.
Кто так решил, и почему я должен отводить под него львиную долю памяти?
Слава богу, что есть галочка MICO_NO_INTERRUPTS, где вместе с прерываниями удаляется и этот стек... cranky.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Mar 27 2016, 15:21
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



С другой стороны сегодня посмотрел по тактам выполнение программы и был приятно удивлён весьма шустрым выполнением команд.
Основная масса выполняется за 2 такта, включая команды переходов и даже вызовов подпрограмм(!).
Очень удивился насчёт переходов - вот что значит простой процессор sm.gif

Команды по работе с ОЗУ выполняются 3 такта, тоже достаточно быстро.

И только обращение к периферии (export/import) идёт 5 тактов.

В общем - очень шустрый восьмибитник sm.gif
Ему бы ещё вылизанный компилятор...
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 29 2016, 14:56
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



коль скоро в этой теме собрались корифеи lm8, спрошу и я:

1. вот распаковал я rpm'ку diamond_3_8-lm_x64-115-3-x86_64-linux.rpm
нашел папку с тулчейнами под lm8 & lm32, а сам lm8 (verilog) нигде не лежит в дистрибутиве?
только из красивого GUI генерится? и что генерится - нетлист или захардкоженный RTL?

2. кто-то пробовал этот lm8 синтезить под отличные от поддерживаемых diamond семейства - например на кристалы серии iCE или того хуже под Xilinx?


Цитата(sonycman @ Mar 27 2016, 18:21) *
В общем - очень шустрый восьмибитник sm.gif
Ему бы ещё вылизанный компилятор...

FYI, компилятор (тулчейн) похоже не обновлялся с октября 2011 года(((


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sonycman   Lattice Mico8 Soft Processor   Nov 6 2015, 00:20
- - yes   я мико8 не пользовал (пользовал мико32), так как м...   Nov 6 2015, 11:41
|- - Alex77   Offtop Цитата(yes @ Nov 6 2015, 14:41) 1)...   Nov 6 2015, 19:17
|- - sonycman   Цитата(yes @ Nov 6 2015, 15:41) 1) если и...   Nov 8 2015, 08:51
|- - iosifk   Цитата(sonycman @ Nov 8 2015, 11:51) Весь...   Nov 8 2015, 09:11
|- - sonycman   Цитата(iosifk @ Nov 8 2015, 13:11) Да нет...   Nov 8 2015, 09:19
|- - iosifk   Цитата(sonycman @ Nov 8 2015, 12:19) Вы, ...   Nov 8 2015, 09:24
|- - sonycman   Цитата(iosifk @ Nov 8 2015, 13:24) Так эт...   Nov 8 2015, 09:30
|- - iosifk   Цитата(sonycman @ Nov 8 2015, 12:30) Не с...   Nov 8 2015, 11:35
||- - sonycman   Цитата(iosifk @ Nov 8 2015, 15:35) Реализ...   Nov 8 2015, 13:43
||- - iosifk   Цитата(sonycman @ Nov 8 2015, 16:43) Так ...   Nov 8 2015, 13:57
||- - sonycman   Цитата(iosifk @ Nov 8 2015, 17:57) Просто...   Nov 8 2015, 15:10
||- - iosifk   Цитата(sonycman @ Nov 8 2015, 18:10) Памя...   Nov 8 2015, 15:25
|- - yes   Цитата(sonycman @ Nov 8 2015, 12:30) Не с...   Nov 9 2015, 11:16
|- - sonycman   Цитата(iosifk @ Nov 8 2015, 19:25) ОК...   Nov 9 2015, 14:12
- - yes   ну кроме скорости может быть надежность - то есть ...   Nov 9 2015, 14:48
- - sonycman   Да, после красивого ARM кода компиляторов под корт...   Mar 22 2016, 21:56
|- - faa   Цитата(Doka @ Nov 29 2016, 17:56) FYI, ко...   Nov 30 2016, 06:18
|- - Doka   Цитата(faa @ Nov 30 2016, 09:18) Для lm32...   Nov 30 2016, 10:49
- - gk2   В 3.6 было здесь: /usr/local/latticemicosystem/3....   Nov 30 2016, 10:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01859 секунд с 7
ELECTRONIX ©2004-2016