PDA

Просмотр полной версии : Изучение с "нуля" VHDL и ПЛИС Xilinx



Страницы : 1 [2]

zebest
30.01.2015, 20:03
интересно конечно. в квартусе с этим делом проще и понятнее.
Ну что могу сказать , елси проект не сильно секретный, упакуй в архив и положи де-нить, попробую у себя запустить...

vfiuchcikicshuusrch
30.01.2015, 20:40
это смайлик недовольтсва)))
http://greenfam.narod.ru/smiles/text.html

попробую всё таки сам разобраться с пинами, думал может кто сталкивался с похожим.
но хочется отметить что софт реально глючный и постоянно вылетает.
запускаю на вин 8 и она не поддерживается разработчиками.. но глючит скорее всего не только в вин8

vfiuchcikicshuusrch
30.01.2015, 21:30
проблему решил, т.е. нашел решение спс гугл.))
http://www.xilinx.com/support/answers/17504.html

она существует уже давно.
в двух словах, нужно было перенести в файле .vf описание основного модуля в самый верх.
после компиляции оно снова меняется взад =\
ну и косячный же всё таки софт , врятли ОС тут виновата.

и кстати пофиксил warning по поводу смещения всех объектов на -1 %) странное вообще событие.
создал новый файл схемы, выделил схему и скопировал её в новый файл, старый удалил. всё компилируется без предупреждений :)

Totem
30.01.2015, 23:23
Хммм, ставлю 14.4 . Посмотрим.

vfiuchcikicshuusrch
31.01.2015, 10:38
я мучаюсь с 14.7 самая последняя неделю назад была :)

AlexG
31.01.2015, 23:42
мысли в слух
14.7 крайняя версия исе и других не будет
"официальные программаторы" были:
1) лпт версии 3 (есть официальная схема)
2) лпт 4
3) через ком - порт.
4) отдельно стоящий программатор
5) и два варианта на юсб.
есть ещё "пучёк" от дигилента

всё остальное самопал либо реверс оригинального программатора

лпт 3 я пользовал максимум для спартан 3. (и то я потом перешел на юсб). потому что новые версии исе (где-то начиная с 10.1) уже была убрана поддержка "лпт 3". как то вот так. докучи сей программатор абсолютно не совместим с новыми плисами.

vfiuchcikicshuusrch
01.02.2015, 11:04
AlexG, ну то что он не совместим это одно.
но я из 14.7 успешно шью как раз лпт проггером версии 3.

AlexG
01.02.2015, 16:30
AlexG, ну то что он не совместим это одно.
но я из 14.7 успешно шью как раз лпт проггером версии 3.
Давно это было. тогда не заработало да и импакт вроде не находил "лпт3 программатор", а сейчас и самого лпт порта нет на компьютере - так что не проверить. Схема самого в
www.xilinx.com/support/documentation/user_guides/xtp029.pdf
и от туда же
IMPACT software no longer supports this PC3 Cable schematic after release 10.1

vfiuchcikicshuusrch
02.02.2015, 13:23
=)))) вечером залью видос, что импакт определяет мой проггер и прошивает)))
я собирал по схеме с буфером на hc244 микросхеме

vfiuchcikicshuusrch
02.02.2015, 13:35
вот схема, но вместо буферов hc125 использовал hc244
http://dev.ivanov.eu/uploads/images/dlc5/dlc5_schematic3.png

и печатка, потому как не помню точно чего я там насобирал))

AlexG
02.02.2015, 15:16
=)))) вечером залью видос, что импакт определяет мой проггер и прошивает)))
я собирал по схеме с буфером на hc244 микросхеме
Я не обижусь если это действительно работает. :wink:
И если не затруднит скриншот "ABOUT" Impack-та при работающем jtag/parallel cable.
Чисто спортивный интерес с моей стороны...

vfiuchcikicshuusrch
02.02.2015, 16:03
окей ) сделаю.
я про совместимость и не знал даже, собрал просто, и всё заработало.

vfiuchcikicshuusrch
02.02.2015, 18:39
lay6 тут есть:
ftp://vfiuchcikicshuusrch.ddns.net

видос работоспособности проггера.

http://www.youtube.com
может чего-нибудь и не видно, может у вас возникнут вопросы, но тем не менее всё работает :)

и кстати. как же он не поддерживается если в меню настройки он есть, ну и работает как оно и должно.
http://savepic.net/6380816.jpg

Bobo
11.04.2015, 12:45
пользуй то что есть
а то пока будешь привыкать 15я выйдет :)

Bobo
11.04.2015, 13:21
ну попробуй с офсайта 14.7 скачать и подсунуть лицензию 14,4 или 14,5

Bobo
11.04.2015, 14:32
Не с моим интернетом, пробовал, не получается от туда нормально скачать. Почему и спрашиваю, знает ли кто нибудь торрент, от туда я без проблем спокойно скачиваю, без каких либо заморочек с регистрацией.

Знаешь где, давай ссылку, нет, чё флейм разводить на 100 постов, все эти варианты я и так знаю и обсуждали мы их тут уже 100 раз. Не интересно.

Я ниасилил 45 страниц читать чего вы тут наобсуждали :D

Bobo
11.04.2015, 15:20
Что-то меня очень бугает расширение файла .tar
Это точно для винды, а не для линукса? Может лучше ссылку дашь, где скачал этот файл.

на офсайте скачал - ссылка тебе не поможет
это точно для винды, а не для винды+линукс

Bobo
11.04.2015, 15:32
Я предлагаю ISE 14,7 качнуть для винды - ты его просил?
не хочешь качать - я его грохну нафиг - делов то

Bobo
11.04.2015, 16:13
я уже потерял ссылку ((
ну скажешь когда - я его(торрент) включу

upd нашел http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html

Bobo
11.04.2015, 16:36
Lab Tools включает Impact, Chipscope и кабель сервер, а также драйверы для
различных поддерживаемых JTAG кабелей. Вам нужна лицензия на использование Chipscope, но не нужна на
другие инструменты.Кабель сервер полезен, если вы хотите установить Lab Tools дистанционно с
Вашей машины для разработки, но быть в состоянии использовать Impact и Chipscope от этого Impact на девелоперской машине по локальной сети.

утилиты для конфигурирования cpld и fpga

Bobo
11.04.2015, 18:05
Честно говоря не помню - последнее время с Квартусом ковыряюсь

Вроде Импакт нужен чтоб зашить прошивку в плисину - не помню чтоб в ISE что-то еще было, хотя у Digilent'a, например, свой прошивальщик стоит

посмотри - тут с картинками разжевано http://skydynamics.ru/electronics-for-all/plis-prosto-o-slozhnom-chast-1.html

хотя нет - стоит Импакт в ISE - не знаю зачем они его отдельно вынесли

AlexG
11.04.2015, 19:11
В ISE в полном комплекте включено всё что надо. отдельно качать ничего не надо. за 10 лет ни разу "лишнего" не качали. А картинки "занятные"....

Bobo
11.04.2015, 21:24
Удачи, это хорошо когда есть богатство выбора
А я вот откопал у утилизаторов DE2 - со всеми вытекающими :D набор инструментов какбы предопределен...

AlexG
11.04.2015, 23:17
Мне "перепал" http://zedboard.org/product/zedboard Вот только руки всё не доходят

AlexG
12.04.2015, 00:59
Ходовка замысловатая была(по работе+любопытство+....), если кратко "Чисто за красивые глаза".

Ynicky
13.04.2015, 22:57
Вроде все правильно, но на выход я бы добавил сигналы
переполнения V, результат = 0 Z и отрицательный результат N.
А еще для выходного (и, может, для входных) регистра(ов) нужен Reset.

Николай.

Ynicky
14.04.2015, 18:26
Про переполнение можно почитать по этой ссылке:
https://ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B0%D0%B3_%D0%BF%D0%B5%D1%80%D0%B5% D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F
Если у Вас проект синхронный, значит он должен работать от частоты.
А раз есть частота, значит есть и регистры (или триггеры).
А раз в нем есть регистры, значит им нужно задать начальные значения
(это нужно для моделирования).
Как правило, в конвейерном синхронном процессоре сразу после АЛУ стоит
выходной регистр для результата. Дополнительно в АЛУ могут стоять
регистры на входные операнды и промежуточные результаты.

AlexG
17.04.2015, 13:06
А кто подскажет. Вот установил ISE 14.4 на рутрекере скачал, и как вроде всё нормально, появилось куча значков на рабочем столе.

ISE Design Suite 14.4
Xilinx PlanAhead 14.4
Vivado 2012.4
Vivado HLS 2012.4

Меня пока интересуют первые два их смысл и назначение мне понятно. Остальные два пока не рассматриваю.
И решил я поизучать DCM его настройку при помощи Architecture Wizard.
Ну и естественно первое что нужно сделать, это запустить его, нвписано естественно как:

Пуск -> Программы (Все программы) -> ISE (Xilinx Design Tools) -> ISE Design Suite 14.4 -> Accessories -> Architecture Wizard

И вот я открываю папку Accessories и не вижу там в упор Architecture Wizard


Что делать, почему его там нет, как его можно доустановить, или просто другим способом можно его запустить?
А собственно с чего Вы думаете он должен быть там ???
DCM - это часть микросхемы ПЛИС и соответственно его можно "изучать" посредством создания проекта в плисе. А это работа в среде ISE...

Bobo
17.04.2015, 13:54
видимо из Vivado или CoreGenerator'a

AlexG
17.04.2015, 14:20
Всё в соответствии со статьёй из КиТ.

https://img-fotki.yandex.ru/get/5603/139302065.0/0_125498_f3f7d56_orig.png (https://fotki.yandex.ru/next/users/max17012/album/173014/view/1201304)
02_ise

Как, если не так, тогда запустить Architecture Wizard в среде ISE 14.4 ???

Для которой версии ЭТА статья ?

Bobo
17.04.2015, 14:34
Что-то я там тоже в других папках ничего похожего на Architecture Wizard не нашёл.
он не в папке а мастером вызывается

Bobo
17.04.2015, 15:02
я на работе сейчас и ISE у меня на компе не стоит
в форумах на xilinx.com глянь - там последовательность описана

AlexG
17.04.2015, 15:49
Статья 2007 года, я так понимаю нужно ориентироваться на то, какая версия ISE была последней в этом году, но я не знаю, какая тогда была последней.
А в статье как-то я не встречал упоминания о конкретной версии ISE на которой делались примеры.

1) Коль 2007 то согласно сайту xilinx это ise или 8 или 9 версии (и никак не 14.7). короче г... времён мамонта. Следовательно нечего искать кошку там где её нет в принципе.

2) Визардов ищут в самой среде ISE в менюшках (для современных версий).
ise-tool-coregen

Bobo
30.04.2015, 22:58
вроде запустил

Bobo
01.05.2015, 00:09
не знаю - у меня кто-то его тянет так что работает

andykarpov
01.05.2015, 11:14
Хотя качается у меня только с 00:00 и до 06:00, в остальное время провайдер режет торренты.

Как это ? Где это ? 21-й век на дворе, кто ему разрешал что-то резать ? :)

s_kosorev
05.05.2015, 13:43
DATA_IN: inout std_logic_vector (7 downto 0);
DATA_OUT: inout std_logic_vector (7 downto 0);
есть момент, если корка будет использоваться часть как часть внутри чипа, inout могут быть только внешний шины, внутри чипа только однонаправленные сигналы, к том же нужен клок, асинхронные схемы создают лишнюю головную боль

s_kosorev
05.05.2015, 15:26
мне придётся продолжить изучение на более простых вещах.
да этот чип предельно простой, судя по даташиту описывается в 30-40 строк кода

---------- Post added at 15:26 ---------- Previous post was at 15:20 ----------

и да, перевод:

да это электронное устройство, выполненной на одной кремниевой подложке, средней степени интеграции в одном корпусе, судя по подробному справочному листку, описывается последовательностью и набора нетерминальных и терминальных лексем языка высокого уровня разделенных 30-40 символами возврата каретки

PS: детей учи как правильно общаться

s_kosorev
08.05.2015, 13:55
Вопрос, зачем такому человеку нужен будет Viktor2312, что бы мешал?

s_kosorev
08.05.2015, 14:41
Я серьезно.

Со стороны сообщение выглядит так:

Я к сожалению не силен в английском, поэтому не могу читать даташиты, воспользоваться переводчиком это 15 минут на страницу, вместо 5 минут, которые я бы потратил если бы я знал английский, но мне лень, я ищу человека который потратит 2 часа перевода на страницу из которой я прочитаю возможно абзац и брошу чтение, так как это не то что мне было нужно.

Человек должен быть готов потратить личное время на мои фантазии, если я где то заблуждаюсь, ничего страшного, исправим.

Еще я хочу делать все обязательно на Xilinx так как для них сложно достать программатор, и еще хочу что бы на плате которую мне разработают было 2-3 чипа, почему? я толком не знаю, но точно уверен что чип с 208 пинами мне будет лень паять, несмотря на то что у 100 и 144 пинового тот же шаг пинов.

Ewgeny7
08.05.2015, 15:21
а у большего количество, расположение с низу корпуса
Та ну?

http://savepic.net/6863909.jpg

---------- Post added at 15:21 ---------- Previous post was at 15:20 ----------

Можешь пересчитать контакты на рисунке, их по 52 на стороне :)

s_kosorev
08.05.2015, 15:22
Не по полкам раскладывать надо, а пересмотреть подход, к примеру освоить IDE и чипы которые тут люди используют в большинстве, упростит процесс помощи

т.е. ключевой момент, переосилить себя и прогнуться под форумчан, которые тут занимаются хобби для души, а не напрягать кого то прогибаться под тебя, только из за того что тебе Xilinx по душе пришелся из за того что попался мануал на русском с картинками.

Просто попробуй, сразу заметен прогресс будет.

AlexG
08.05.2015, 16:08
Будут конкретные вопросы -будут конкретные ответы по мере возможности.
Спартан 3А в плоском корпусе действительно только 100/144.
Но если допускается Спартан 3Е то там есть 3s500e в плоском корпусе на 208 ног.

Ewgeny7
08.05.2015, 16:43
Укажи мне точное название микросхемы ПЛИС фирмы Xilinx семейства Spartan-3A которая имеет такой корпус. Я вот смотрю datasheet на семейство Spartan-3A и вижу, в таблице что в данных корпусах 100/144 выпускаются только XC3S50A и XC3S200A, а остальные уже в корпусах FT256|FTG256 то есть корпус FBGA и расположение выводов снизу корпуса
Не, я не извращенец... на Альтере таких проблем нету, ибо это - Альтера. В Ксилинксы не полезу.

---------- Post added at 16:38 ---------- Previous post was at 16:36 ----------


Всё же хочется Spartan-3A
Принципиальная разница?

---------- Post added at 16:42 ---------- Previous post was at 16:38 ----------


Пробовал и с этого начинал, с Altera, прогресса мало было
В порядке оффтопа - СТМ32 мы начинали практиески вместе. Только у меня уже есть готовые устройства, и даже выдаю народу некоторые наработки для общего блага.
Это к вопросу о "начинал". Если есть желание, можно получать удовольствие от чего угодно, нужно лишь поднапрячься и "пересечь черту непонимания"....
Ты же сам знаешь, что здесь в основном "альтерщики" сидят, штук одиннадцать, по моим подсчетам. И один-два юзают ксилинксы. А ты клич кидаешь...

Ynicky
08.05.2015, 22:26
Можно сравнить по "Slices".
У XC3S200A - 1,792;
У XC6SLX9 - 1,430;

Ynicky
08.05.2015, 23:32
Якобы у 3S в одном слайсе 2 LUT-а и 2 Flip-Flop-а.
А у 6S - 4 LUT-а и 8 Flip-Flop-ов.

BYTEMAN
09.05.2015, 01:41
мну если повезёт, то перепадёт Artix-7 (AC701 board).... Ух порезвимся тогда..

BYTEMAN
09.05.2015, 13:10
Понимаешь BYTEMAN меня ещё очень волнует не только программная часть, но и "железная" мне интересно самому разработать, вычертить схему, разработать печатную плату, то есть уметь это делать для мелких SMD компонентов, а там много новых технологий о которых я только слышал или читал, например, не сквозные переходные отверстия, МПП - многослойные печатные платы, хоть это уже и не новая технология, но мною ещё не опробованная. И куча всяких других плюшек. И естественно самостоятельная сборка/пайка этого всего
Честно говоря - я тоже так когда-то думал, пока не пощупал хороший кит вживую. В итоге поменял мнение на диаметрально противоположное, спасибо универу за это :)

BYTEMAN
09.05.2015, 14:02
Тут всё зависит от целей и задач, для изучения и освоения кит может и лучше. А если мне нужно реализовать систему, где в качестве основных блоков требуется микросхема ПЛИС с обвязкой минимальной, умещающаяся на платке размером с DIP-40 микросхемку, то зачем мне на борту все остальные плюшки с кита, они и денег стоят и место лишнее занимают. Поэтому всё зависит от решаемой задачи
А фаза изучения уже прошла? :)

Ynicky
20.05.2015, 21:41
Повышенное быстродействие от разрядности ПЭ не зависит.
Оно зависит от разрядности внешней памяти, а это дефицит выводов.
На мой взгляд 32 разряда у ПЭ - оптимально.

Николай.

Ynicky
20.05.2015, 23:20
А что Вы будете вычислять 64р числами?
Точные математические функции?
Разрядность определяется точностью и максимальными значениями
оперируемых чисел, а никак не быстродействием.

Ynicky
21.05.2015, 00:25
"Хотелось бы, чтобы система могла быть, максимально точной и могла вычислять как можно большие максимальные значения."

Наибольший процент вычислений будет уходить на вычисление адресов
операндов, что не будет выходить за рамки 4ГБ (32р).
А собственно математические вычисления делают на сопроцессорах.

Bobo
21.05.2015, 02:24
Сам процесс думаю будет долгий, но с чего-то начинать нужно.

Для начала хочу определиться с разрядностью ПЭ.

для начала нужно определиться с системой команд
что это будет - ZX80, 6502 или еще чего

AlexG
21.05.2015, 09:32
1) -2 тормознее -3 (чем больше цифра тем быстрее и дороже)
2) разрядность процессора (его регистров) на прямую не связана с разрядностью внешней памяти. те внутри 32 бит снаружи 8 бит или на оборот.
3) адресное пространство памяти данных адресует минимальную единицу данных. обычно это байт те 4Г байта на 32 битной шине адреса. но можно адресовать и 4Г слов по 32 бита на 32 битной шине адреса - но тогда каждый символ (char) будет занимать в памяти 4 байта.
4) обычно критерием оптимизации ПЭ является максимальное быстродействие на нужных алгоритмах обработки информации. Оптимизируется разрядность регистров, разрядность шин адреса/данных (программа короткая хватит и 16 бит шины адреса, а данных много то шина адреса данных будет 32 бит), система команд (обычные или оптимизированные на ЦОС). итд.
5) при этом чем выше разрядность регистров ПЭ тем ниже будет максимальная тактовая ПЭ (специфика плис - для нашего случая).
6) -3N буква N говорит что в данной плисе отсутствует аппаратный контроллер памяти MCB. -2N таких плис не существует.
7) раздельные шина команд и данных на 144 пинах корпуса затруднительно выполнить.
8) докучи для "плоских" корпусов есть ограничение "для одновременно переключаемых выводов" приходится ограничивать "мощность" используемых выводов. иначе будут "звяки". особенно на двух слойных платах.
9) Все плисы s6lx имеют одинаковую начинку. за исключением MCB: LX6 =0 LX9/16/25/45=2 lx75/100/150=4 шт (ну естественно и др. ресурсы имеются в различном объёме).
http://www.xilinx.com/publications/prod_mktg/Spartan6_Product_Table.pdf
10) MCB "жёстко" привязан на конкретные выводы плисы.

Ewgeny7
21.05.2015, 15:08
Не переживай, всё так и будет и даже круче.
Когда? На сколько ставить будильник? :)

s_kosorev
21.05.2015, 15:54
Цитата:
Сообщение от AlexG
3) адресное пространство памяти данных адресует минимальную единицу данных. обычно это байт те 4Г байта на 32 битной шине адреса. но можно адресовать и 4Г слов по 32 бита на 32 битной шине адреса - но тогда каждый символ (char) будет занимать в памяти 4 байта.


Вот тут не совсем понял, что вы хотели сказать. Что 32 бита, это 4 байта, ну как бы и так понятно. Возможно имели в виду работу памяти, что возможно протокол конкретной памяти передаёт информацию между Процессором и памятью порциями, возможно, вот я посмотрел SDRAM там шина данных как вроде 16 разрядная, адресов 12 и так далее.
Собственно занавес...

AlexG
21.05.2015, 16:14
Собственно занавес...

Ну зачем сразу бежать за попкорном...
Ну попутал человек работу со SDRAM и понятие минимально адресуемой единицы данных.

Ещё надо будет прояснить (самому ТС) что есть Гарвард и фон Нейман.
и почему у плисы "не хватит" ног на раздельную шину данных (ш.адрес+ш.данные) и шину команд (ш.адрес+ш.команд)... итд.

s_kosorev
21.05.2015, 17:18
В природе бывают процессоры, которые байт адресовать не умеют, но ТС если занимается разработкой ПЭ, подумал бы хотя бы как на его ПЭ вывести строку на экран, или массив байт отсортировать, а не волноваться что на сложение 64бит числа нужно 2 инструкции

Bobo
21.05.2015, 19:12
ведь MicroBleze влез каким-то макаром в Spartan-3 у которого 68 пользовательских выводов

MicroBleze выводы вроде не нужны - он внутри плисины живет

Bobo
21.05.2015, 19:49
Viktor2312, может, если выводов хватит

Bobo
22.05.2015, 09:41
Остальное нужно продумывать

почитай книжку по MIPS - там уже все продумано
ссылку вечером дам


нашел - David Patterson and John Hennessy’s Computer Organization and Design

ну и по мотивам - интерпретация на HDL
David Money Harris, Sarah L. Harris Digital Design and Computer Architecture, Second Edition© 2013 Elsevier, Inc.

сами книги дел куда-то - надо на своем серваке поискать...

Ewgeny7
22.05.2015, 14:44
почитай книжку по MIPS - там уже все продумано
На аглицком, естесственно? :)

Ynicky
22.05.2015, 14:46
Можете почитать для общего развития описание на мой процессор.

Bobo
22.05.2015, 14:57
На аглицком, естесственно? :)

не в курсе, есть ли перевод, но написано, вроде, доходчиво

s_kosorev
22.05.2015, 16:57
3. Регистры общего назначения (РОН). Регистры РОН будут иметь, естественно, такую же разрядность, как и операторы 32 бита. Количество РОН будет 32 шт., что потребует 5 бит для их адресации. Нумероваться они будут от 0 до 31. И иметь обозначения r0, r1, r2, ... r29, r30, r31.
Вот честно говоря не сильно понятен мотив 32 регистров, можно аргументировать именно такой выбор? Как несогласованно все на первый взгляд, с одной стороны управляющий процессор, с друго стороный ориентация на Си компилятор, и процессор числодробилка

s_kosorev
22.05.2015, 18:48
Какова тогда необходимость 32 регистров? на ассемблере человеку сложно оптимально юзать такое количество регистров

---------- Post added at 18:48 ---------- Previous post was at 18:47 ----------

Для управляющих процессоров, вообще и разрядность не так важна, а вот к примеру битовое поле и булевая логика, может быть кстати, можно даже на ассемблере логику сложную писать

Bobo
22.05.2015, 19:52
Viktor2312, http://ceit.aut.ac.ir/~amirkhani/Downloads/patterson_book.pdf
http://villageofdolton.us/images/Digital%20Design%20and%20Computer%20Architecture%2 0(2nd%20Ed)(gnv64).pdf

Bobo
22.05.2015, 20:55
Вторая, обложка чем-то напоминает наши "Юный радиолюбитель". Почитаем, надеюсь помогут.
Сделаю копию, на всякий случай: Скачать (https://yadi.sk/d/mfsMa9XSgp2m6)

да - она довольно популярно написана
если все знаешь можешь сразу начинать с 7 главы - микроархитектура

к ней еще примеры были как этот процессор на HDL закодить - не нашел пока

s_kosorev
25.05.2015, 18:33
(fetch)-(decode)-(execute)<->(mem-access)-(write-back)

классика же, если не бить по стадиям, так хоть в таком порядке пилить, так тестировать проще. Все равно в регистровой машине эти все шаги есть, некоторые могут быть более дробленные, некоторые объединены.

А вообще представляется тестирование ALU у которого очень много цепей на границе, ясно что можно тестировать, но это в групповой разработке, когда есть кому тесты пилить, их по коду может быть в 10-100 раз больше чем кода самого алу

Ynicky
25.05.2015, 18:57
Коды АЛУ можно посмотреть у меня здесь.
Умножение и деление лучше реализовать отдельным блоком,
и выполнить за 2 такта.

Ynicky
25.05.2015, 19:26
Могу предложить следующую структуру обработки данных.
Преимущество такого построения - уменьшается на один такт
конвейер процессора.

Ynicky
25.05.2015, 20:19
Стандартный конвейер процессора имеет регистры после мультиплексоров регистрового файла,
т.е. на входах АЛУ. В состав АЛУ входит выходной мультиплексор, оканчивающийся своим
регистром. Тут мы видим 3 такта конвейера: декодирование команды, собственно операция АЛУ
и запись в регистровый файл.
У меня немного по другому. На стадии декодирования мы вычисляем операции АЛУ,
заканчивающиеся регистрами на каждую операцию, а затем на шаге записи в регистровый файл
мультиплексируем результаты каждой операции. На самом деле количество регистров можно
сократить, например, объединив несколько быстрых логических операций, суммирование и
вычитание имеют свои регистры.
Сигналы bypassRA и bypassRB нужны, если RD предыдущей команды совпал с RA или RB текущей,
т.е. когда результат предыдущей команды еще не попал в регистровый файл.

Типичный заголовок алу может быть следующим:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
use work.my_arith.all;

entity alu32pe is
port (
opa : in std_logic_vector(31 downto 0);
opb : in std_logic_vector(31 downto 0);
opalu : in std_logic_vector(4 downto 0);
reset : in std_logic;
sclk : in std_logic;
cealu : in std_logic;
cb_in : in std_logic;
result: out std_logic_vector(31 downto 0);
cc : out std_logic_vector(3 downto 0)
);
end;

Что касается самих операций АЛУ, то их лучше оформить в отдельном файле библиотеки (package, у меня это my_arith.vhd),
и вызывать их в файле описания АЛУ.
Если надо, могу дать свой.

P.S.
Сигнал cealu - разрешение записи в регистры АЛУ (может быть использован для остановки
конвейера при извлечении операнда из синхронной памяти данных за 2 такта).
cb_in - (carry/borrow) вход переноса/заема от предыдущего вычисления.
Выходные флаги сс лучше хранить в одном из регистров регистрового файла (сделать его
специализированным, например, регистром флагов).
Если этот регистр делать отдельно - это увеличит аппаратуру.

Ynicky
25.05.2015, 21:33
Как-то я немного по другому это всё представляю. В виде единого файла, где есть интерфейс entity и архитектура, но это всего процессора, а АЛУ внутри в архитектуре, как небольшая его часть.
Единый файл у Вас будет оооооочень большой.

Где можно про это более подробно почитать?
У Вас же есть книжка Паттерсона, со стр.388.
Только там регистровый файл выполнен в виде ОЗУ.
И вычисление адреса памяти данных выполняется в АЛУ. У меня не так.
Вычисление адреса происходит на том же такте, что и операции АЛУ.

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

Я так понимаю, что это трёх уровневый конвейер, но в самом АЛУ, то есть как бы есть АЛУ и есть местное устройство управления, которое имеет конвейер?
Нет, это я просто вычленил схему вычисления данных из общей архитектуры своего процессора.

s_kosorev
26.05.2015, 11:32
Это к тому, что меня тогда заинтересовало в datasheet ds160 (Memory Controller Blocks are not supported in the -3N speed grade.)
Выбор чипа имеет весьма косвенное отношение к реализации.
Емкость чипа вообще есть смысл выбирать уже по занимаемым ресурсам после синтеза.
Разработку в симуляторе вести надо.

s_kosorev
26.05.2015, 13:42
Но у меня наоборот, микросхема ПЛИС является определяющей и проект будет делаться так, чтобы он, удовлетворял её возможностям.
Честно говоря я не пойму, какова цель тогда тут что то спрашивать?, тебе говорят, ты же в ответ, извиняюсь за выражение "херню городишь".

Выбор вечно не по прямому простому пути, а через непонятные дали.


Пока ограничимся головой и текстовым редактором
Это как на гитаре по книжке учиться играть, не беря в руки гитару.

Strijar
26.05.2015, 14:07
А пока ещё и нечего брать, код даже для АЛУ ещё не написан, самой гитары нет.


АЛУ не самое сложное. ИМХО не с него надо начинать.


Не пойму, это к чему. Здесь и сейчас изучается и будет применяться микросхема ПЛИС фирмы Xilinx семейства Spartan-6.


Мой совет - не закладываться вообще на конкретный ПЛИС. Делать чтобы работало на чем угодно. Это вполне возможно. Я в качестве изучения переделывал Forth процессор J1 под себя (переписал с Verilog на VHDL, сделал его 32 битным, дописал байтовый доступ к памяти, инструкции ускорений циклов итд итп) все делал на чистом VHDL под эмулятором ghdl. Планирую делать из них 2D сеть на LX25 или LX75 (есть 2 платы от ztex)

s_kosorev
26.05.2015, 14:10
В общим по теме есть что сказать, полезного?
По всей видимости нет, я понял, это у тебя такой вид тролинга.

Strijar
26.05.2015, 14:16
Так же ещё не разобрался с умножением, так как постоянно натыкаюсь на то, что результат получается в два раза больше по разрядности, как-то не приходилось сталкиваться с умножением.


Берем 1 и сдвигаем на 1 бит - это умножение на 2. Получается 2 бита. Сдвигаем еще на 1 бит - это умножение на 4. Получается 3 бита. Все логично. Если не понятно как делается умножение - делайте его в столбик как с десятичными числами - там получается сдвиг и суммирование с переносом.

Strijar
26.05.2015, 14:40
Ну пока это единственное, что мне кажется стало более менее понятным, по крайней как будет выглядеть код, и как вообще этот блок работает, поэтому начинаю с него. Хотя как мне видится, не важно с чего начинать.


В этом конечно что-то есть. Но например fetch и decode намного проще alu но их реализация уже создает иллюзию работы (; Да и потом к ним alu цеплять и проверять проще, чем один alu "в воздухе"


Но тут выбор уже сделан, так как смысл написать код, который влезет только в LX16


Мой 32 битный процессор занимает четверть от LX25, а уж я там себя не сдерживал (; Кстати он получился даже меньше чем "самый маленький 32 битный с поддержкой gcc toolchain" (ZPU)

Strijar
26.05.2015, 15:06
Интересно, и это оправдано?

Мне было интересно смогу ли я. Смог. Заодно разобрался как он работает просто досконально.


снизилась частота дизайна.

Я оригинальную частоту не знаю. У меня на LX25 получилось 106Мгц. Меня соотношение размер/fmax устроил.

Вся эпопея здесь - http://strijar.livejournal.com/tag/k32


И смысл тогда в байтовом доступе к памяти, если он уже может оперировать 4-мя?

Экономия RAM - можно иметь быстрый доступ (за один такт) к байтовым массивам. У меня в качестве теста реализована игра Life

---------- Post added at 15:06 ---------- Previous post was at 14:48 ----------


Я собирал оригинальный дизайн J1 (ссылка на мою git (https://github.com/mvvproject/Library-Modules/tree/master/rtl/j1)) на verilog под CycloneIV -7 для ReVerSE-U16 и переписал также на vhdl без доработок

Посмотрел ваш код. У вас получился "подстрочный перевод". Я сделал по честному - логично связанные сигналы упаковывал в record (;



entity k32 is
port (
clk : in std_logic;
rst : in std_logic;
en : in std_logic;

ibus_in : in ibus_in_type;
ibus_out : out ibus_out_type;

data_in : in dbus_in_type;
data_out : out dbus_out_type;

io_in : in dbus_in_type;
io_out : out dbus_out_type;

exception : out exception_type
);
end k32;


А циклические сдвиги делал через srl и sll



when x"8" =>
ds_top <= alu_a srl to_integer(unsigned(alu_b(4 downto 0)));

when x"9" =>
ds_top <= alu_a sll to_integer(unsigned(alu_b(4 downto 0)));

Strijar
26.05.2015, 18:53
P - (parity) бит чётности (1)

Какой в нем практический смысл?


Z - (zero) бит нуля (2)

Тоже самое. Ноль он и есть ноль - зачем дополнительный флаг?

Ynicky
26.05.2015, 19:10
Флаг Z - необходим для ветвлений по =0.
А вот для каких вычислений бит четности - не понятно.

Strijar
26.05.2015, 19:22
Чтобы понять чётный результат или нет. Можно использовать в условных переходах.


Четность показывает сколько единиц в слове. При этом четность результата зависит от младшего бита. Это разные вещи.


То же самое, чтобы понять равен результат нулю или нет.

Так может просто сравнивать с нулем и все? Сама инструкция перехода пусть это делает, отдельный бит не нужен.


Хоть он и не часто используется, но пусть будет, пригодится

Недалее как, был разговор как бы сделать так чтобы все влезло ;)

s_kosorev
26.05.2015, 19:40
вообще в проце достаточно 1 флага алу, можно его стек вместе с PC ложить, если инструкции с выравниванием по 32бит в памяти, то там есть целых 2 бита свободных

А команда сравнения, ставит флаг если условие истина
сравнения банальные a<b a<=b a==b, если сильно хочется можно еще четность, parity, a==0, a<0
в командах сложения вычитания, флаг работает как перенос/заем работает
в командах сдвига, вытесненный добавочный бит

команд ветвления парочку хватати, if (flag) jump и if (!flag)

но это из темы процессоров с минимальным набором инструкций

Ynicky
26.05.2015, 19:42
Так может просто сравнивать с нулем и все? Сама инструкция перехода пусть это делает, отдельный бит не нужен.
К сожалению, если только ЭТО надо было бы использовать в командах ветвления,
то да, отдельный флаг не нужен. В том же MIPS-е для остальных условных переходов (кроме !=) приходится использовать регистр и дополнительную команду для вычислений условий, что не намного лучше команды CMP.

Strijar
26.05.2015, 20:15
В том же J1 был условный переход если равно 0 (true). И добавочно две инструкции сравнения на == и < результатом которой -1 (false) или 0 (true). Через это можно сделать все остальное

s_kosorev
26.05.2015, 20:26
Если их будет 2, то флаг поднят. Если их будет 32, то флаг поднят. И при чём тут количество единиц в числе?
блин, тугой ты, сравни 6(0110) и 3(0011) оба вернут parity = 1 но одно четное одно нет

Strijar
26.05.2015, 20:34
Странный подход. Сначала бы обдумать общую архитектуру, а АЛУ это уже частности.

Когда я пробовал писать процессор - я посмотрел все имеющиеся в наличии. Гарвардские, фон-неймовские, регистровые, стековые итд итп. Оценил что мне нравиться, а что нет. Потом уже начал что-то делать. И то в конце концов получилось что мне запал один так как подходил почти полностью - то что не подходило и переделал.

Strijar
26.05.2015, 20:55
Хорошо. Буду ждать конкретных вопросов. Чем смогу - помогу. Сам только учусь.

s_kosorev
27.05.2015, 01:23
signal cod_alu: std_logic_vector (7 downto 0);

кстати, что бы не рыскать по всему интернету в поисках инструкций ALU
есть замечательный ресурс, где все собрано в одном месте, есть разнообразные фильтры
https://software.intel.com/sites/landingpage/IntrinsicsGuide/

К сожалению только на английском, но там есть простой псевдокод, объясняющий что инструкции делают

Думаю 8 бит для кода операции алу будет недостаточно, сейчас разумно 12-16 бит

---------- Post added at 01:23 ---------- Previous post was at 00:59 ----------

И выход алу должен быть 64бит, умножение 2х 32 битных дает 64бит
причем должно быть организовано как 2выхода по 32бит, так как то же, целочисленное деление, возвращает частное и остаток по 32бит

s_kosorev
27.05.2015, 02:05
>> Оставлю пока так, увеличить всегда можно, изменив одну цифру.

Если бы одну, придется поправлять все паттерны сравнения, к тому же необходимо сразу в коды операции зарезервировать биты, гораздо проще, неиспользуемые биты не подключать, синтезатор оптимизирует и ни одного лишнего логического вентиля не будет


Я уже писал об этом, но ещё детально не читал по этому поводу
а что читать, умножение десятичных 100х100 (по 2 нуля) = 10000 (4 нуля) тоже самое и с числами с основанием 2

---------- Post added at 02:05 ---------- Previous post was at 01:49 ----------

Еще не хватает в алу сигналов от флагов

по флагам тоже могу кое какие вспомнить, которые можно в 32битный регистр флагов добавить

1. антипереполнение - это когда результат деления настолько мал оказался, что из за ограничений разрядной стеки стал равен = 0
2. для математики с фиксированной точкой, надо флаг Z для старших 24 и 16 бит, а так же для младших 8 и 16 бит, что бы можно было определять что целая часть 0 и дробная часть 9
3. опять же для математики с фиксированной точкой, надо флаги переноса из 7 в 8 разряд и из 15 в 16
4. надо флаги которые показываю, дробная часть больше .5 или меньше, опять же для форматов fixed point 24:8 и 16:16, нужно для работы с округлениями
5. нужен флаг, который показывает что было деление на 0
6. очень полезен флаг, который говорит что число в регистре является степенью 2, для быстрых делений
7. опять же нужен флаг четности, именно тот что копирует младший бит числа
8. не обязательно, но плезно, флаг который показывает что число делится на 3, глобально ускоряет троичную логику.
9. для работы с двоично десятичным числами можно добавить пару флагов, однин что в регистре корректное двоично десятично число, второй, флаг переноса/заема для двоично десятично арифметики
10. иногда полезен флаг, что число в регистре акроним, то есть младшая часть и старшая часть регистра, зеркально одинаковы

на память больше вспомнить не могу, можно по документации на процессоры покопаться, посмотреть какие еще флаги забыл
там еще куча флагов с тригонометрией есть, но они были мне скучны, я даже не читал особо про них

s_kosorev
27.05.2015, 21:17
Дело было вечером, делать было нечего.

Предлагаю разработать процессорный элемент, пока Viktor2312 ищет какие флаги добавить в регистр флагов
Процессор будет называться 5-РИМВ

Технические требования:

0. стеково/регистровый, ну что бы как стековый мог работать и как регистровый
1. 8 регистров общего назначения, ширина 64бит
2. фиксированная ширина кода операции 16бит!
4. регулируемая ширина слова стека данных
5. команд алу 32, кодировать 12 битами
6. указатель инструкций 12 битный
7. только относительные переходы
8. процессор без флагового регистра
9. возможность при синтезе задать максимальную разрядность процессора, но так что бы на коды инструкций не влияло


И да, писать придется на Verilog, думаю Viktor2312 поможет на VHDL перевести


У кого какие мнения по поводу ТЗ? реально?

---------- Post added at 21:17 ---------- Previous post was at 21:11 ----------

Команда ALU


15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
1 1 [siz] [ aluop ][ dst ][ left ][ right ]

команды будут 4 видов 3х адресные, 2х адресные, 1н адресные, безадресные

3х адресные, код операции задается в 3х битном поле aluop
0 - add dst, left, right // dst = left + right
1 - adc dst, left, right // dst = left + right + flag
2 - sub dst, left, right // dst = left - right
3 - sbc dst, left, right // dst = left - right - flag
4 - and dst, left, right // dst = left & right
5 - or dst, left, right // dst = left | right
6 - xor dst, left, right // dst = left ^ right
7 - 2х адресные команды, код операции 2х адресных команд задает поле left

2х адресные команды:
0 - shr dst, right // dst = right >> 1, младший бит в флаг, старший 0
1 - ror dst, right // dst = right >> 1, младший бит в флаг, старший из флага
2 - add dst, right // dst = right + left left, используется как непосредственный параметр, только не от 0до7 а от 1 до 8
3 - sub dst, right // dst = right - left, left опять же imm
4 - == // flag = (dst == right)
5 - < // flag = (dst < right)
6 - > // flag = (dst > right)
7 - 1 адресная команда, код одноадресных команд в поле right

1но адресные команды
0 - neg // dst = 0-dst
1 - inv // dst = fffffffff^dst
2 - not // dst = !dst
3 - ==0 // dst==0
4 - <0 // dst < 0
5 - parity
6 - четность
7 - безадресные команды алу, код команды задает поле dst

безадресные команды
0 - set flag // flag = 1
1 - reset flag // flag = 0
2 - invert flag // flag = !flag
3..7 резерв

Команда условного перехода
И команда вызова процедуры

b[15:13] == 3'b010 JR
b[15:13] == 3'b011 CALL
b[12] - F, срабатывает при равном значении F=flag
b[11:0] для jr относительный адрес в словах, ширина слова задается максимально разрядностью процедуры, то есть если продура maxsize = 64бит, то прыгать будет кратно 8 байт, если адрес == 0 то это команда halt
для call - номер процедуры в каталоге процедур, если номер процедуры 0, то это команда ret

Каталог процедур это табличка, на табличку процедур указывает указатель из дескриптора задачи.
В каталоге задается физический адрес процедуры (Физический адрес инструкции это PROC_BASE + PC), максимальная ширина слова, ну там можно, длина процедуры, к примеру для защиты, можно максимальную глубину стека, что бы защита от переполнения была, итд, пусть пока будет табличка из элементов скажем по 8 байт, аля дескрипторы 80386
отсюда и PC = 12 битам, нефик делать процедуру больше 4к слов, для 64бит процедур это аж 32кб

Команда const, загружает в регистр константу
b[15:12] == 4'b0000
b[11] - imm, если 1 то 8бит констранта непосредственно в команде, если 0, то указатель на таблицу констант процедуры
b[10:9] - imm8 старшие 2 бита для непосредственно заданной 8 бит константы
b[8:6] - dst, номер регистра куда загружать константу
b[5:0] - если imm ==0 то тут номер констатны в таблице констант, если imm==1 то тут младшие 6 бит непосредственной 8 бит константы

константы в коде будут храниться перед телом процедуры, адресация будет как в стеке в сторону уменьшения адресов, то есть если процедура юзает 2 константы, то перед текло процедуры будет пару слов с константами, ширина слова константы, равна разрядности процедуры из дескриптора


Команды обмена с памятью

команд 6
b[15:11] = 5'b10010 // select var, выставляет для чтения адрес переменной в стеке
b[15:11] = 5'b10011 // select [base + index*mul + offs], выставляет адрес для чтения из памяти
эти 2 команды игнорируют прерывания
b[15:11] = 5'b10000 // ld чтение с шины данных

b[15:11] = 5'b10100 // st var, сохраняет регистр в переменную в стеке
b[15:11] = 5'b10101 // st [base+offs], сохраняет регистр в памяти
b[15:11] = 5'b10111 // st [base+index], сохраняет регистр в памяти

для чтения, получилось более гибкая адресация, но это не все, команды еще стараются быть полезными

форматы команд:
команда select var
b[10:9] - mode, определяет доп действия, 00-если следующая команда ALU, то данные с шины будут левым аргументом алу, 01-если следующая команда ALU, то данные с шины будут правым аргументом, 10-11 на поведение АЛУ не влияет, 10-декремент регистра dst, 11-инкремент регистра dst
b[8:6] - dst регистр, который инкрементируется/декрементируется если заданно параметром mode
b[5:0] - номер переменной в стеке

команда select [base + index*mul + offset]
b[10:9] - mul 00-x0, 01-x1, 10-x2, 11-x4, то есть mul=00 регистр index не используется (на 0 умножил)
b[8:6] - base
b[5:3] - offset
b[2:0] - index

команда ld, читает данные с шины в регистр, применима после команд select и const с чтением константы из памяти
b[10:9] - sz, размер читаемого аргумента
b[8:6] - dst, регистр для записи результата
b[5:3] - aluop - команды алу, пока придумал следующие
000-nop
001-знаковое расширение

команда st var
b[10:9] - size
b[8:6] - src, сохраняемый регистр
b[5:0] - номер переменной

команда st [base + offset]
b[10:9] - size
b[8:6] - base
b[5:3] - offset
b[2:0] - right - записываемый регистр

команда st [base + index], аналогично предыдущей, только b[5:3] номер регистра index

Strijar
27.05.2015, 21:55
Тут с Z80 разобраться не все могут, как насчет улучшить NextZ80

Z80 - CISC, поэтому его не просто улучшать. RISC в этом плане значительно проще

---------- Post added at 21:52 ---------- Previous post was at 21:50 ----------


На тебе может ошибки есть, поправишь

Нет там ошибок. Это известный Forth процессор из статьи на Хабре. Он чисто стэковый, без регистрового доступа.

---------- Post added at 21:55 ---------- Previous post was at 21:52 ----------


0. стеково/регистровый, ну что бы как стековый мог работать и как регистровый


Что имеется ввиду? Стек но с возможностью адресации к любому элементу? Не только в TOS и NOS как обычно?


1. 8 регистров общего назначения, ширина 64бит
4. регулируемая ширина слова стека данных


Какой практический смысл иметь разную ширину слова в стэке и в регистре?

Предложение - может отделить темы? А то получается уже каша на 60 страницах

s_kosorev
27.05.2015, 22:07
Продолжаем, комада ALU это команда для АЛУ :)

команды будут 4 видов 3х адресные, 2х адресные, 1н адресные, безадресные

3х адресные, код операции задается в 3х битном поле aluop
0 - add dst, left, right // dst = left + right
1 - adc dst, left, right // dst = left + right + flag
2 - sub dst, left, right // dst = left - right
3 - sbc dst, left, right // dst = left - right - flag
4 - and dst, left, right // dst = left & right
5 - or dst, left, right // dst = left | right
6 - xor dst, left, right // dst = left ^ right
7 - 2х адресные команды, код операции 2х адресных команд задает поле left

2х адресные команды:
0 - shr dst, right // dst = right >> 1, младший бит в флаг, старший 0
1 - ror dst, right // dst = right >> 1, младший бит в флаг, старший из флага
2 - add dst, right // dst = right + left left, используется как непосредственный параметр, только не от 0до7 а от 1 до 8
3 - sub dst, right // dst = right - left, left опять же imm
4 - == // flag = (dst == right)
5 - < // flag = (dst < right)
6 - > // flag = (dst > right)
7 - 1 адресная команда, код одноадресных команд в поле right

1но адресные команды
0 - neg // dst = 0-dst
1 - inv // dst = fffffffff^dst
2 - not // dst = !dst
3 - ==0 // dst==0
4 - <0 // dst < 0
5 - parity
6 - четность
7 - безадресные команды алу, код команды задает поле dst

безадресные команды
0 - set flag // flag = 1
1 - reset flag // flag = 0
2 - invert flag // flag = !flag
3..7 резерв

---------- Post added at 22:07 ---------- Previous post was at 22:06 ----------


Не только в TOS и NOS как обычно?
да, 8 верхних элементов в регистрах, дальше уже к стеку идет оращение, добавление на вершину, выталкивает 8 регистр в стек

---------- Post added at 22:07 ---------- Previous post was at 22:07 ----------

а можно просто как с регистрами работать

s_kosorev
27.05.2015, 22:15
Какой практический смысл иметь разную ширину слова в стэке и в регистре?
а не надо разделять, в заголовке процедурины сказать что максимум 32бит, все, стек 32бит, регистры могут быть максимум 32бит в этой процедуре, попытка 64бит доступа игнорируется

---------- Post added at 22:15 ---------- Previous post was at 22:12 ----------

MVV товарищ какой то странный, по удалял сообщения, даже ответить не успел

s_kosorev
27.05.2015, 22:23
Так, дальше, команда условного отностительного перехода
И команда вызова процедуры

b[15:13] == 3'b010 JR
b[15:13] == 3'b011 CALL
b[12] - F, срабатывает при равном значении F=flag
b[11:0] для jr относительный адрес в словах, ширина слова задается максимально разрядностью процедуры, то есть если продура maxsize = 64бит, то прыгать будет кратно 8 байт, если адрес == 0 то это команда halt

для call - номер процедуры в каталоге процедур, если номер процедуры 0, то это команда ret

s_kosorev
27.05.2015, 22:27
Каталог процедур это табличка
где задается физический адрес процедуры, максимальная ширина слова, ну там можно, длина процедуры, к примеру для защиты, можно максимальную глубину стека, что бы защита от переполнения была, итд, пусть пока будет табличка из элементов скажем по 8 байт, аля дескрипторы 80386
отсюда и PC = 12 битам, нефик делать процедуру больше 4к слов, для 64бит процедур это аж 32кб

s_kosorev
27.05.2015, 23:08
Указатель на табличку процедур может быть в дескрипторе задачи к примеру, сейчас получается что проц может адресовать максимум 32к * 4к = 128мб кода на задачу, как бы с головой

---------- Post added at 22:37 ---------- Previous post was at 22:29 ----------

обновил пост http://zx-pk.ru/showpost.php?p=806353&postcount=588

---------- Post added at 22:48 ---------- Previous post was at 22:37 ----------

Так, команда чтения мне вообще не нравится, комада записи может быть однотактная, чтение же нет, в общем разделим их на 2 команды, первая будет адресацией заниматься, может что еще полезного влезет, к код инструкции, вторая команда будет непосредственно чтение, можно её немного команд алушных добавить например, причем команда инициализации чтения, будет конфигурировать муксы, для чтения, они будут сохраняться в этом состоянии пока не перенастроят, в код инструкции надо вставить битик, что следующая инструкция будет инструкцией чтения, что бы оно заранее сработало :) как то так, странно, но вроде интересно

---------- Post added at 22:57 ---------- Previous post was at 22:48 ----------

о! как же без констант, нужно же в регистры что то записывать, так как в ТЗ фиксированная длина инструкции 16 бит и нини, будем делать команду загрузки констант, в конце концов 64бит регистр загрузить при 16бит коде операций - сложно

Команда const, загружает в регистра константу
b[15:12] == 4'b000
b[11] - imm, если 1 то 8бит констранта непосредственно в команде, если 0, то указатель на таблицу констант процедуры
b[10:9] - imm8 старшие 2 бита для непосредственно заданной 8 бит константы
b[8:6] - dst, номер регистра куда загружать константу
b[5:0] - если imm ==0 то тут номер констатны в таблице констант, если imm==1 то тут младшие 6 бит непосредственной 8 бит константы

константы в коде будут храниться перед телом процедуры, адресация будет как в стеке в сторону уменьшения адресов, то есть если процедура юзает 2 константы, то перед текло процедуры будет пару слов с константами, ширина слова константы, равна разрядности процедуры из дескриптора

---------- Post added at 23:08 ---------- Previous post was at 22:57 ----------

Непосредственно заданная константа, будет знаково расширятся до ширины слова, ну там что бы -1 можно было задать

s_kosorev
27.05.2015, 23:31
Ты темой ошибся, тут только VHDL, а всё что касается Verilog - это флейм и оффтоп.
а я писать про себя буду, я тебе проц придумываю, а ты уже на VHDL реализацию оформишь, стековый проц ты за вечер написал, без ошибок, думаю этот за пару вечерков реализуеш

s_kosorev
28.05.2015, 01:35
Вот, странны команды обмена с памятью

команд 6
b[15:11] = 5'b10010 // select var, выставляет для чтения адрес переменной в стеке
b[15:11] = 5'b10011 // select [base + index*mul + offs], выставляет адрес для чтения из памяти
эти 2 команды игнорируют прерывания
b[15:11] = 5'b10000 // ld чтение с шины данных

b[15:11] = 5'b10100 // st var, сохраняет регистр в переменную в стеке
b[15:11] = 5'b10101 // st [base+offs], сохраняет регистр в памяти
b[15:11] = 5'b10111 // st [base+index], сохраняет регистр в памяти

для чтения, получилось более гибкая адресация, но это не все, команды еще стараются быть полезными

форматы команд:
команда select var
b[10:9] - mode, определяет доп действия, 00-если следующая команда ALU, то данные с шины будут левым аргументом алу, 01-если следующая команда ALU, то данные с шины будут правым аргументом, 10-11 на поведение АЛУ не влияет, 10-декремент регистра dst, 11-инкремент регистра dst
b[8:6] - dst регистр, который инкрементируется/декрементируется если заданно параметром mode
b[5:0] - номер переменной в стеке

команда select [base + index*mul + offset]
b[10:9] - mul 00-x0, 01-x1, 10-x2, 11-x4, то есть mul=00 регистр index не используется (на 0 умножил)
b[8:6] - base
b[5:3] - offset
b[2:0] - index

команда ld, читает данные с шины в регистр, применима после команд select и const с чтением константы из памяти
b[10:9] - sz, размер читаемого аргумента
b[8:6] - dst, регистр для записи результата
b[5:3] - aluop - команды алу, пока придумал следующие
000-nop
001-знаковое расширение

команда st var
b[10:9] - size
b[8:6] - src, сохраняемый регистр
b[5:0] - номер переменной

команда st [base + offset]
b[10:9] - size
b[8:6] - base
b[5:3] - offset
b[2:0] - right - записываемый регистр

команда st [base + index], аналогично предыдущей, только b[5:3] номер регистра index


Ухххх, все, у проца есть весь базовый набор, добавить только разных системных управляющих и готово

---------- Post added at 01:25 ---------- Previous post was at 01:08 ----------

void memcpy(void* dst, void* src, uint16_t cnt)
{
while (cnt--) *dst++ = *src++;
}

как бы выглядела на псевдоасме псевдопроца

proc: memcpy (dword dst, dword src, word cnt)
size: 32
stack: 4 // dst+src+cnt+tmp

byte tmp;

m1: if.16 (cnt ==0) m2 // 16bit aluop "=="; jr m2
sub cnt,1
select [src]
add src,1
ld.8 tmp
st.8 [dst]
add dst,1
fres // flag=0
jrn m1
m2:
ret

много инструкций конечно, не pdp11
но тут стек до 8 переменных, особо не видно преимуществ от команд, может их вообще нет :)
надо с флагом придумать политику, что бы были безусловные преходы

Viktor2312 теперь дело за тобой

s_kosorev
28.05.2015, 16:31
Открой для себя github ну или хотя бы pastebin

s_kosorev
28.05.2015, 17:36
так и набирай в браузере

s_kosorev
28.05.2015, 20:33
Хрень какая-то какието сайты репозитории и всякая остальная хрень.
ну да, постить сюда полотно, вида "вот немого добавил", гораздо удобнее, особенно для тек, кому ты хотел показать это полотно, все сразу кинулись сравнивать 2 версии, искать 10 отличий. Да и вообще, http://pastebin.com/BVWbXsFZ гораздо приятней, чем полотно по тексту

BYTEMAN
29.05.2015, 11:28
Хех, вот и я стал счастливым обладателем платки Nexys 4 на базе Artix-7 XC7A100T :) Так что скоро тоже присоединюсь к изучению :)

BYTEMAN
31.05.2015, 03:31
Запустил демо-проект.

http://cs625629.vk.me/v625629117/31fa6/WVHRf1iZBiQ.jpg

Strijar
06.06.2015, 22:39
Подскажите по поводу Jitter unit можно выбрать две единицы измерения UI и PS, например если UI какой он обычно считается приемлемым?

http://www.xilinx.com/support/answers/35548.html

Только зачем вам это? Вы уже все написали, отладили и занимаетесь оптимизацией?

Strijar
06.06.2015, 22:43
А зачем вам 3 клока?

Strijar
06.06.2015, 22:47
Я изучаю досконально, поэтому мне это нужно для более глубокого въезда.

Т.е. когда вы учились кататься на велосипеде вы тоже изучали процесс вулканизирования резины, только потому что она используется в шинах?

Strijar
06.06.2015, 23:11
Есть параметр, его можно оставить по умолчанию, а можно задать такой, какой он есть на самом деле

Задаете констрейнами ваш входной клок (частоту) - это достаточно, на вашем этапе, на 99.9%. На этапе синтеза если роутинг не уложится в какие либо тайминги - будет ошибка или предупреждение (в зависимости от параметров синтеза).

Чаще всего на этапе отладки частоту оставляют заведомо меньше чем позволяет роутинг. Например мой K32 синтезируется на 106мгц, но отлаживаю я его без DCM или PLL на входных 48мгц и не забиваю себе голову. Когда все работает как надо - тогда уже можно играться с констрейнами и "затягивать гайки". Это уже "полировка". Но вначале нужно сделать что полировать (;

Но дело конечно хозяйское :v2_dizzy_tired2:

Strijar
06.06.2015, 23:29
Я пока не настолько знаком с аббревиатурами, что значит констрейнами? Можно об этом чуть поподробнее, чтобы я понял о чём идёт речь.

Временные ограничения - http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgd.pdf


Так же интересует, что такое роутинг?

Размещение прошивки на кристалле - http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ise_c_implement_fpga_design.htm


Понятно, до этого ещё далеко, пока изучаю имеющуюся информацию

Ну так вот я и намекаю - что немного не с того конца вы начинаете (; Освойте синтаксис VHDL или Verilog на хорошем уровне. Доведите понимание что делает каждая конструкция и как это можно использовать. Что бы можно было писать самому и понимать что написано другими.

Strijar
07.06.2015, 00:30
Блин, как ни с того конца?

ну с чего обычно начинают изучать программирование? С HelloWorld. А с чего начинают изучать электронику? С мигания светодиодом (;

Насколько быстро вы можете написать мигание светодиодом на вашей плате? Например с частотой 1гц. А теперь тоже самое только плавное включение и выключение его (PWM). И таких задач можно найти море.


Может что-то посоветуете, что почитать поучить, желательно конечно на русском, но если нет, то можно и на английском, а то может я не то читаю. Просто интересно


Я в основном читал чужие исходники. Собирал, ставил на свои платы, проверял как работает. Потом дописывал свои компоненты - чего не хватало. Как говорят в ВДВ - "Для того чтобы научиться бить человеку морду, надо бить человеку морду!" (;

Strijar
07.06.2015, 13:41
У меня нет платы, но возможно именно для экспериментов скоро возьму плату, с указанной тут выше микросхемой ПЛИС XC6SLX9

У меня без дела лежит SK-AT91SAM9XE512-S3E (http://starterkit.ru/html/index.php?name=shop&op=view&id=30) там Spartan3 не очень большой, но для экспериментов пойдет. Я туда даже не очень сложные процессоры ставил. Могу отдать за так. С вас только за пересылку.

---------- Post added at 13:41 ---------- Previous post was at 13:38 ----------


Вы же не в школе проходили синтаксис языка, а учили его, прежде чем научиться читать чужие исходники


Я столько всего перечитал что всего и не упомнишь. В основном шпаргалки по синтаксису вроде PDF "VHDL - handbook"

kapitan-u
10.07.2015, 04:52
Hi All! Тут есть кто нибудь с опытом запуска Plasma MIPS ? Я пытаюсь его запустить на aeon lite и зашел в тупик. Вроде уже делал проект намного сложнее и plasma выглядит намного проще, а немогу запустить...

kapitan-u
10.07.2015, 08:25
занимает 55% LUTs и 12% Regs на XC6SLX9

Strijar
10.07.2015, 08:41
Hi All! Тут есть кто нибудь с опытом запуска Plasma MIPS

Я запускал, никаких проблем не было. А в чем засада?

---------- Post added at 08:41 ---------- Previous post was at 08:40 ----------


а сколько свободного места остаётся в XC6SLX9 после размещения Plasma MIPS

Я делал сравнение основных процессоров и Plasma там тоже есть - http://wiki.ztex.de/doku.php?id=en:projects:cpu

Strijar
10.07.2015, 09:59
А почему там в таблице такие низкие частоты

Задать можно любые частоты, вопрос в том заработает ли? И тут не родной Microblaze (который на чистых LUT), а его свободный клон с открытыми исходниками на VHDL.

Я сам родной MB не использовал, но пишут что у него fmax на Spartan6 166Мгц.


MB-Lite is tested on a Virtex 5 development board (XC5VLX110-3FF 1760). It is able to obtain 229 MHz (c.f. the original implementation obtains 227 MHz). Furthermore, MB-Lite has a lower Cycles Per Instruction (CPI) than MicroBlaze since MicroBlaze has a prefetch buffer which reduces the rate of instructions which can be fed into the processor. The execution time of MB-Lite is therefore approximately 10% lower than MicroBlaze.

kapitan-u
10.07.2015, 11:28
проблема в том, что я пытаюсь гонять вот такую программу
.text
.align 2
.globl entry
.ent entry
entry:
.set noreorder

nop
L_BEGIN:
li $4,0x41
li $5,0xffff
sb $4,0($5)
nop
nop
nop
j L_BEGIN

.end entry
-----
вот она после компиляции
0000000 0000 0000 0434 4100 0534 ffff a4a0 0000
0000010 0000 0000 0000 0000 0000 0000 0008 0100

и смотрь осциллографом сигналы. программа крутится нормально, данныйе все читаются из памяти нормально, но нету сигнала записи в память....

Strijar
10.07.2015, 11:36
но нету сигнала записи в память....

А мультиплексор к памяти нормально сделан? Ничего там случайно синтезатор не выкинул при оптимизации?

У меня был проект с UART-консолью и все работало. Т.е. запись в периферию была. Кстати память то какая? Внешняя или BRAM?

---------- Post added at 11:36 ---------- Previous post was at 11:33 ----------

У меня осцилографа дома нет, я пользуюсь вот такой штукой http://wiki.ztex.de/doku.php?id=en:projects:la

kapitan-u
10.07.2015, 11:54
уже запустил :-) так всегда: неделю тупишь, а когда спрашивать начинаешь - сразу получается

Strijar
10.07.2015, 11:58
уже запустил :-) так всегда: неделю тупишь, а когда спрашивать начинаешь - сразу получается

Правильно заданный вопрос содержит половину ответа (;

Strijar
10.07.2015, 23:19
я делал при помощи Embedded Processor.

Сути это не меняет. Как написано выше, fmax = 227мгц аж у Virtex - я это совсем другая цена!

shurik-ua
15.07.2015, 05:28
Вот тут неплохое чтиво для всех начинающих осваивать не только VHDL, но и цифровую технику в целом.

http://easyelectronics.ru/devid-m-xarris-sara-l-xarris-cifrovaya-sxemotexnika-i-arxitektura-kompyutera-vtoroe-izdanie.html

Strijar
15.07.2015, 08:56
Какой Virtex, Virtex II или Virtex5, а может Virtex7 ?

Я же приводил цитату. Еще раз:


MB-Lite is tested on a Virtex 5 development board (XC5VLX110-3FF 1760). It is able to obtain 229 MHz (c.f. the original implementation obtains 227 MHz)

Totem
11.09.2015, 12:50
Не включается девборда, помогите со схемой и монтажкой !

Осторожно большая картинка под спойлером.
http://i11.pixs.ru/storage/2/6/5/DSC0214JPG_9208234_18756265.jpg

:)

http://i11.pixs.ru/storage/2/6/5/DSC0214JPG_9208234_18756265.jpg

vfiuchcikicshuusrch
11.09.2015, 13:30
Totem, ппц у тебя там девборды)))
что-то космическое...

Totem
11.09.2015, 15:47
:v2_dizzy_indy:

balu_dark
12.09.2015, 13:24
Дааа на такой бы девборде да Amiga забалабасить.... :)

Totem
13.09.2015, 10:22
Дааа на такой бы девборде да Amiga забалабасить.... :)

Увы, счастливый обладатель 4 таких и всей чудной железяки, уезжает в Петрозаводск. Теперь там будут мучатся с
с этим чудом, хотя вполне вменяемая железяка для своего времени, проблемы конечно серией Е320 есть, как и с МХ, большинство связано с производительностью, у нас оно уже не справляется, прощай железо, будем скучать.:) Juniper любит Xilinx, а Cisco в основном на Altera

Totem
13.09.2015, 12:56
Ещё бы, оно же и морально и по всем параметрам устарело, сколько уже после него семейств было 4 (90нм), 5 (65нм), 6 (45нм), 7 (28нм), Ultra Scale (20нм), Ultra Scale+ (нынешнее 16 нм). В тех процессе где-то могу ошибаться, в районе 4,5,6 семейств.

Ну Виктор, железяка прослужила нам 7 лет, еще такая стоит одна и одна в Нарьяне, на тот момент просто жуть крутая, еще столько послужит в Петрозаводске.
Когда ее ставили смеялись, куда нам такая крутотень, молотилка еще та,
потом еще 2 тенгигабита ставили:) теперь и этого мало:) внутри крутится
хорошо переработанная Freebsd.

shurik-ua
13.09.2015, 21:16
Виктору больше 7нм техпроцесс не предлагать ) - он с нуля хочет улететь не то что в космос - а вообще за пределы галактики ))

Totem
14.09.2015, 00:20
Виктору больше 7нм техпроцесс не предлагать ) - он с нуля хочет улететь не то что в космос - а вообще за пределы галактики ))

Вот зачем так? галактика наша, кого положено выпустим:)
Злой ты:):v2_dizzy_priest::v2_dizzy_punk:

Ewgeny7
14.09.2015, 23:30
Он не злой, а завистливый. Кто-то улетит из Галактики нафиг, а Шурик останется... :)

troosh
03.10.2015, 09:34
Эхх, надо всё таки писать, по крайней мере начинать писать свой Soft-процессор.

В общим думаю, что 32-бит для данных будет вполне достаточно.
Для команд остановимся на 40 битах, то есть всего команд может быть 256.


Я ещё понимаю когда при разработке DSP начинают с выбора размера аккумулятора: "40 или 56 бит?.."
Но почему размер команд и он такой необычный? Ширина памяти какая будет - 32? Тогда как выбирать оттуда инструкции? Или память инструкций небольшая выделенная на 40 бит? Инструкции чтоли вида dst=f(src1,src2,src3)? Но таких обычно мало, плотность кода будет малой...



Так же ясно, что первая команда которая точно будет, это
NOP с кодом 0x0000000000 (нет операции).

Зачем вообще такая каманда нужна? Её можно множеством способом реализовать через другие операции. Лучше бы, чтоб по всем нулям и фэфам проц ловил исключение...


P.S. Боюсь расстроить, предложив не изобретать велосипед (потому как кроме процессора нужен ассемблер, компилятор и многое что ещё, а главное люди увлеченные этой идеей). Но не лучше ли примкнуть таки к какой-то работащей группе? Раз отечественное у вас похоже одно "гумано", то может к финам прибиться http://tce.cs.tut.fi/screenshots.html) или пилить тот же RISC-V?..

shurik-ua
03.10.2015, 13:45
Боюсь расстроить, предложив не изобретать велосипед
никому ещё не удавалось переубедить Виктора ) - он как русский бунт - бессмысленный и беспощадный.

особенно хорошо почитывать посты Виктора под попкорн )

Ewgeny7
03.10.2015, 13:48
Боюсь расстроить
Наивный... :)

vfiuchcikicshuusrch
03.10.2015, 14:33
Я с нового года только учиться и осваивать VHDL буду,
я уж думал ты всё освоил :))))

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

вобщем изучить язык это последнее дело наверно. там и изучать то нечего. 1 вечер и впуть....

shurik-ua
03.10.2015, 17:41
Эх, как всё сложно...

Не вешать нос, Гардемарины
мб так
when com >= 4294967296 and com < 8589934591 => cp <= com(31 downto 0);

и да - не пользуйся десятичной системой (в тринадцатиричной код выглядит намного круче) :v2_dizzy_coder:

shurik-ua
03.10.2015, 18:12
exceeds maximum integer value
знаю что не последуешь совету, но всё же - начни с 8/16 бит

а integer прописан в std_call как 32 бита - поэтому и ругается.

shurik-ua
03.10.2015, 19:02
Choice must be a discrete range.
если присваиваешь вектору какое-то значение то с кавычками х"1000" - если сравнение с числом то без 0х1000

troosh
03.10.2015, 22:26
Пока делаю так, как рекомендуют, рекомендуют те, кто занимается микросхемами ПЛИС Xilinx, а не альтерами.

Последняя ремарка. Я лет десять не занимаюсь железом, но тогда таки довелось паработать с Xilinx, стыдно сказать XC3030A.. Но с инженерами работающими с FPGA общаюсь по работе постоянно (у многих опыт до 15 лет). И вот как-то я у них увидел платку на Xilinx, спрашиваю "как, меняете предпочтения?", - отвечают: "вот купили IP корку, а её прототип был только под Xilinx заточен, вот только поэтому он тут впаян". Одна единственная платка на фоне кучи ящиков с Альтерами (некоторые забиты чипами по 800 тыс. винтелей), Карл!

А так конечно и у них есть интересные чипы, но вот самые интересные в Россию почему-то не продают... Так зачем платить больше?
Кто не работает постоянно с САПР от Xilinx мечтательно говорит, что их САПР наверное безглючный и быстрый (ха-ха, везде хорошо, где нас нет!)
И по факту в России больше народа имеют опыт работы с чипами от Альтеры (теперь это Интел, кстати), и больше народа выбирают verilog, а не VHDL...

Но у Вас какой маргинальный выбор, впрочем после того как вы написали, что асм у 8080 удобнее, чем у Z80, я вас понимаю...

shurik-ua
03.10.2015, 22:29
when 16777216 to 33554431 => cp <= com(23 downto 0);

Десятичная система, Виктор. Десятичная

http://i71.fastpic.ru/big/2015/1003/58/42ebae3a4ceea468283a6118d162ac58.jpg (http://fastpic.ru/)

tnt23
03.10.2015, 22:41
when 0 => cp <= cp + 1;


Почему нужно употреблять какое-то непонятное "вхен", когда есть прекрасное русское слово "когда"?

s_kosorev
03.10.2015, 22:53
Xilinx всё равно всегда рвал Альтеру и сейчас рвёт, и 7 нм у него не за горами и 16нм освоено, что не освоено у альтеры.
хм, а зачем тебе 16нм и тем более 7нм ?

s_kosorev
03.10.2015, 23:19
Ну а лично мне, как я тут уже написал наверное 100 раз, и вот 101 раз пишу, мне пока хватает Spartan-6 c его 45нм.
Собственно как и 99% хобби применений, так что 16нм и будущие 7нм, не создают преимущества. Тут намекают что на форуме задавать вопросы на Xilinx мало смысла, так как в СНГ исторически альтера заняла большую часть рынка и естественно народу больше которые с ней работали

---------- Post added at 23:19 ---------- Previous post was at 23:17 ----------

Verilog + altera я думаю ответил бы тебе на большинство вопросов, но думаю и без меня тут народу бы по этой связке нашлось больше чем xilinx + vhdl

s_kosorev
04.10.2015, 00:32
не зафлемляйте её.
ок, показалось просто, неоднократно, что возникают проблемы и ты спрашиваешь как их преодолеть

Syntal
04.10.2015, 07:29
Хватит засирать форум своими портянками бредокода! Это место для общения/обсуждения, а не твоя личная туалетная бумага!

vfiuchcikicshuusrch
04.10.2015, 10:14
Последняя ремарка. Я лет десять не занимаюсь железом, но тогда таки довелось паработать с Xilinx, стыдно сказать XC3030A.. Но с инженерами работающими с FPGA общаюсь по работе постоянно (у многих опыт до 15 лет). И вот как-то я у них увидел платку на Xilinx, спрашиваю "как, меняете предпочтения?", - отвечают: "вот купили IP корку, а её прототип был только под Xilinx заточен, вот только поэтому он тут впаян". Одна единственная платка на фоне кучи ящиков с Альтерами (некоторые забиты чипами по 800 тыс. винтелей), Карл!

А так конечно и у них есть интересные чипы, но вот самые интересные в Россию почему-то не продают... Так зачем платить больше?
Кто не работает постоянно с САПР от Xilinx мечтательно говорит, что их САПР наверное безглючный и быстрый (ха-ха, везде хорошо, где нас нет!)
И по факту в России больше народа имеют опыт работы с чипами от Альтеры (теперь это Интел, кстати), и больше народа выбирают verilog, а не VHDL...

самое интересное то, что когда тут задавались вопросы, что же выбрать altera или xilinx, verilog или другое что-то, то таких комментариев не было)))
было что-то типа, что хочешь, то и выбирай)
выбирают те кто вообще даже месяц не работал.. а те кто уже десятки лет знакомы и с тем и с тем, молчат...
такая у нас страна :) одни партизаны в лесу.

лучше поздно, чем никогда :)
спасибо. будем знать.

Totem
04.10.2015, 22:39
самое интересное то, что когда тут задавались вопросы, что же выбрать altera или xilinx, verilog или другое что-то, то таких комментариев не было)))
было что-то типа, что хочешь, то и выбирай)
выбирают те кто вообще даже месяц не работал.. а те кто уже десятки лет знакомы и с тем и с тем, молчат...
такая у нас страна :) одни партизаны в лесу.

лучше поздно, чем никогда :)
спасибо. будем знать.

Это ты плохо читал и смотрел.:v2_dizzy_botan:

vfiuchcikicshuusrch
05.10.2015, 15:16
за всем не уследишь же :)
посты трут тут частенько.

Александр Бухаров
14.10.2015, 21:44
Тут намекают что на форуме задавать вопросы на Xilinx мало смысла, так как в СНГ исторически альтера заняла большую часть рынка и естественно народу больше которые с ней работали
Отмечусь.
Был опыт работы с ПЛИС, у меня сложилась такая картина: Хилинкс используют из-за доступности(цена) по большой части в пром изделиях, тк. каждый рубль с изделия хороший выигрыш.
Альтера для радиолюбителя больше подходит - больше удобных корпусов, проще достать(EPM серию каждый собакен знает).
Следует заметить, что Хилинкс продает больше своих изделий, чем Альтера.
Сам тяготею к Альтере, верилог или вхдл особого значения не имеет.
Мой один знакомый когда то сказал: глупо отказываться от половины возможных рабочих мест, при условии ,что зарабатывать на этом.


а те кто уже десятки лет знакомы и с тем и с тем, молчат...
А чего именно писать? Есть аналогия, язык с или с++, у железа есть специфичные вещи, но в принципе, для радиолюбителя, не имеют роли.

Плюсы у альтеры: студия, собирает проект быстрее, лучше оптимизирует, субскриб версии параллелит на ядра.
Плюсы у Хилинкса - чуть ниже цена за количество "ячеек", добыть проще.

Альтеру Интел приобрёл.

vfiuchcikicshuusrch
14.10.2015, 23:02
Плюсы у альтеры: студия, собирает проект быстрее, лучше оптимизирует, субскриб версии параллелит на ядра.
Плюсы у Хилинкса - чуть ниже цена за количество "ячеек", добыть проще.
это вот и написать. что ещё то. или это не очевидно ? %)
уже без разницы. у меня нет вопросов ни к тому ни к другому.
для радиолюбителя реально нет никакой разницы.
у меня есть и альтеры и хилинхы и латтисы...

JackSimIX
20.10.2015, 22:17
Заранее извиняюсь за не особо умный вопрос, есть ли на VHDL встроенные операции min, max?

Ynicky
21.10.2015, 07:38
У меня в библиотеке на мой процессор сделано так:

---------------------------------------------------------------
-- my_min
--
-- return min
---------------------------------------------------------------

procedure my_min (slv1, slv2 : in std_logic_vector;
uns : in std_logic;
result : out std_logic_vector) is

begin
if uns = '0' then
if signed(slv1) < signed(slv2) then
result := slv1;
else
result := slv2;
end if;
else
if unsigned(slv1) < unsigned(slv2) then
result := slv1;
else
result := slv2;
end if;
end if;
end my_min;

---------------------------------------------------------------
-- my_max
--
-- return max
---------------------------------------------------------------

procedure my_max (slv1, slv2 : in std_logic_vector;
uns : in std_logic;
result : out std_logic_vector) is

begin
if uns = '0' then
if signed(slv1) > signed(slv2) then
result := slv1;
else
result := slv2;
end if;
else
if unsigned(slv1) > unsigned(slv2) then
result := slv1;
else
result := slv2;
end if;
end if;
end my_max;

AlexG
26.02.2016, 23:52
Не совсем по теме - но это "новые" тенденции в плисописании

Приглашаем принять участие в вебинаре, посвящённом среде проектирования SDSoC Xilinx. SDSoC – это среда разработки програмноопределяемых систем на кристалле от Xilinx.

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

В программе вебинара:

» Введение в среду разработки SDSoC.
» Инструменты оптимизации.
» Назначение функций для аппаратной реализации.
» Формирование и анализ отчетов оценки быстродействия.
» Компиляция и сборка проекта.

Вебинар состоится 1 марта в 10:30. С повтором 3 марта в 10:30.

Зарегистрируйтесь для участия в вебинаре >>>> http://bit.ly/1SZKtNZ