1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Игра "Жизнь" аппаратного исполнения

Тема в разделе "WASM.ELECTRONICS", создана пользователем Paguo_86PK, 4 авг 2010.

  1. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Интересно, вот я ни разу не встречал об аппаратной реализации клеточного автомата "Жизнь". Вот в выходные решие сделать набросок одной ячейки.
    Получилось следующее:
    Одна К155РЕ3 с таблицей ситуаций для рождения клетки;
    Одна К155РЕ3 с таблицей ситуаций для умерания клетки;
    Два К155КП5 вспомогательных мультиплексора;
    Собственно, К555ТВ9 в качестве памяти состояния клетки.

    В общем, К155ТВ1 использовать слишком расходно. Тогда как К555ТВ9 - два JK-триггера и можно хранить состояние двух клеток.
    Тем самым, на две клетки с одним К555ТВ9 придётся по 9 микросхем, а с К155ТВ1 - по 5 на клетку. Так что разумно одним узлом реализовать две клетки.
    Но, паять всё это в кубики - неблагодарный труд.
    Хотя конструкция кубика уже придумана, чтобы легко стыковать их магнитными краями. И кнопочки сверху будут для ручной установки состояния клетки.
    Но всё равно резона возиться нету...

    Скажите, есть ли ПЛИС довольно бедной интеграции, чтобы было очень дёшего?
    К тому же с ПЗУ, куда прошить правила можно.
    Хотелось бы одной маленькой микрухой такой реализовать хотя бы матрицу 4x4 или 8x8.
    Если что, изготовить десяток для полноценного автомата.

    Вот, собственно, схема одной ячейки с таблицами прошивок:
     
  2. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Другая версия схемы (упрощённая).
    Используется одна К155ЛН1 на 6 клеток.
    Тем самым, всего на 6 клеток распределяется:
    12 микросхем К155РЕ3;
    6 микросхем К155КП2;
    6 микросхем К555ТВ9;
    1 микросхема К155ЛН1.
    Итого - 25 микросхем на 6 клеток. Вполне оптимальный вариант.

    Вот эта схема и прошивки (не проверял на корректность):
    (РЕ3 графически совмещены. Лишь выводы EO раздельны)
    опытный электронщик легко разберётся с прошшивками и расключением всех клеток.
    поэтому излишних подробностей и особенностей не описываю.
    тем более врятли кто-то бросится реализовывать эту чушь
    :-))
     
  3. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    если ам/кит/прочий ебай отпадают, то

    $13
    http://www.evodbg.com/index.php?option=com_content&task=view&id=25&Itemid=90

    1750 Руб.
    http://starterkit.ru/html/index.php?name=shop&op=view&id=14

    оба - частники. охотно говорят по русски. поспрашивайте, может и к вам в узб отправят.

    можно еще спаять самому, но это ж микрух искать, травить, паять и прочие 1.2 вольта
     
  4. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Ого-го! Ничего себе дёшего! Матрицу из сотен за $14 почти - роскошь!

    После долгих размышлений стало ясно, что оптимальнее использовать по одной микросхеме на одну клетку.
    В домашних условиях это практически идеальное решение!
    За основу берётся микросхема КР556РТ16 ёмкостью 8кб. Правда используется всего один бит данных, замыкаемый на адрес A12 с целью организации триггера.
    Также, выводы A8 и A9 используются как X и Y для предустановки состояния клетки на вывод A10. Перепады тактовых импульсов подаются на A11.
    Тем самым, к одной микросхеме подаётся состояние восьми окружающих соседей, X и Y подключаются матрицей по горизонтали и вертикали соответстенно. Все A10 подключаются вместе.
    Чтобы сменить состояние нужной ячейки, на A10 всех микросхем подаётся нужное состояние, затем на нужные Xn и Yn подаётся логический 0. В остальное время на них необходимо подавать только 1.
    Тактируются все ячейки подобно счётчику Грея на РЕ3 - перепадами: От 0 к 1 и от 1 к 0...
    Таблица с прошивкой микросхемы клетки генерируется в соответствии с правилами игры "ЖИЗНЬ" и имеет размер 8кб. Заинтересованные лица могут и сами алгоритмически её синтезировать. Естественно, здесь я её не привожу даром.

    Собственно, вот третий вариант схемы. Последний:
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Paguo_86PK
    Бред какойто. Вам что ресурсов вашего пк мало ?
    Гвозди в элт, клетки какието.. как вы такие задачи придумываете только %.
     
  6. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    Paguo_86PK
    да, железяки в рассыпную - только для развития цифрового мышления.
    ну а для реализации - взял МК и вот тебе за 4бакса целое стадо клеток - что хош то и делают, плодяться\умирают - заражают.)
     
  7. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Какие микроконтроллеры? На одну клетку программа сколько машинного времени будет расходовать?
    А если чисто аппаратно по моим схемам - за один так будет развиваться вся колония! А если подать частоту 16мГц, то никакая программа такое не обеспечит! 16 миллионов поколений в секунду при неограниченном пространстве...
    Даже если на одну клетку программа будет терять один такт, то при частоте 1гГц она вычислит колонию 100x100 всего 100 тысяч поколений! Но пространство то мизерное - 100x100. Чушь!

    А всякие МК - для начинающих. В блоге один хвастался, что аппаратно на PIC сделал жизнь. А его на место поставили, мол аппаратно - чисто на ТТЛ микросхемах. Стыдно сравнивать одно с другим!
    А я уже говорил, что по большей части - электронщик и в ассемблере мне и то тесно!
    Нет уж, МК - для лентяев. Вот ПЛИС или дискретки - для людей с мозгами!

    Не хочу вас обидеть, но программное никогда не превзойдёт аппаратное в конкретных случаях. Программно можно выполнить за раз ну пусть десяток операций, а аппаратно - бесконечно много.
    Если спорите, значит не понимаете прелесть копания в железе... ;)
    Люди в 70-ые на логике ТВ-игры делали: Морской бой, ПВО, Хоккей...
    И там всё продумать надо было. Не то что сейчас. Компилишь тыщу глюков и отлаживаешь год.
    А в то время ошибка - микросхемы стоила...
     
  8. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Paguo_86PK
    тут вот раз разговор о ПЛИСах, что бы не создавать новой темы вклинюсь)
    в плисах какой тип выхода логических элементов? логический?
    если он логический, то при не аккуратной конфигурации, запаралеливании
    нескольких логических выходов и на них будут разные потенциалы -
    выравнивающий ток сожгёт изделие?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Paguo_86PK
    Для начала обьясните подробно что это такое. На схеме у вас я вижу шину данных ROM'а коммутируемую мультиплексором в один канал. Если предположите что на адресную шину нагружен закольцованный счётчик, то это всеголишь генератор определённого пакета. Что далее делать с этим сигналом ?
    Обьясните откуда эти цифры.
     
  10. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Сейчас читаю журнал РАДИО и сказано, если даже входной уровень выше допустимого - это грозит потерей...
    Разве вы не знаете http://ru.wikipedia.org/wiki/Жизнь_(игра)?
    Клетку окружают восемь соседей - таких же клеток. Их состояния подаются на адрес.
    Т.е. на схеме ПЗУ с A0-A7 подключенных к D7 окружающих других восьми ПЗУ.
    D7 замкнуто на адрес - имитация триггера. А сама прошивка - таблица с правилами игры.
    Я же сказал, кто понимает суть игры, тот и в схеме разбирётся, и прошивку алгоритмически сгенерирует.
    А цифры - какие именно?
    Например, пусть клетки кодируются массивом L 100x100 и каждая хранит число 0 или 1. Массив M - буферный.
    Тогда, пробегая в цикле по всем клеткам нам нужно сделать так:
    (нет проверки на выход за пределы массива)
    Код (Text):
    1. for(y = 0; y < height; ++ y) for(x = 0; x < width; ++ x) {
    2.     sub = L[y-1][x-1] + L[y-1][x] + L[y-1][x+1] + L[y][x-1] + L[y][x+1] + L[y+1][x-1] + L[y+1][x] + L[y+1][x+1];
    3.     if(sum == 3)
    4.         M[y][x] = 1; else
    5.     if(sum != 2)
    6.         M[y][x] = 0;
    7. }
    8. for(y = 0; y < height; ++ y) for(x = 0; x < width; ++ x)
    9.     L[y][x] = M[y][x];
    Вот собственно весь алгоритм игры! :)
    И вот посчитайте, сколько тактов уходит на ячейку?
    Очень простой и в сети можно найти Java и Flash версии.
    Так вот, за один шаг нужно пробежать по всем элементам (представьте, что это - экран 1024x768). Тогда анимация будет чудовищно медленной!
    А аппаратно - в ПЗУ прошиваем таблицу, берём этих ПЗУ 10 000 штук и делаем из них полигон 100x100. К каждой подключен светодиод. И начинаем тактировать. Можно сделать миллионы шагов в секунду! Никакой компьютер, кроме супера, это не потянет. :))
    Вот. ;)

    Кстати, вот счётчик Грея на ПЗУ с печатной платой:
     
  11. sometime

    sometime Odessa

    Публикаций:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    227
    Адрес:
    sunday
    никто и не спорил - предложил же всего лишь...сам дискретки когда-то "насиловал".
    кто знал что вы собрались спаять в кучу 10 000 ПЗУ) не то что бы упрекаю - у каждого есть свои сумасшедшие идеи))
    Может тогда для быстродействия уже ОЗУ взять? Например регистров кучу ну и для изначальной загрузки предусмотреть "шину" какуюнить , подал питание накликал кнопками, запустил генератор...
    Вообщем интересная штука, но вот паянины там совсем не мало!)
     
  12. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    ну, если не учитывать возможность и стоимость доставки, то 95-тку за $1-3 можно найти. но вам же гдетотамный рай не очень интересует?

    можно их понаходить на импорных цифровых платах. встречаются.

    если, конечно, оно вам нада.
     
  13. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.036
    Paguo_86PK
    Когда-то я на этом форуме выкладывал свою версию, но найти не могу, возможно это было еще на старой версси форума. На одну клетку у меня уходило половина такта при использовании MMX и чуть больше четверти такта при использовании SSE. То есть полигон 100 на 100 на 2.5ГГц проце будет успевать обрабатываться миллион раз в секунду, без всяких 10000 ПЗУ, а теперь сравните стоимость.
     
  14. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Так-с. Если XC90xx стоят $1…3, реально ли заказать дюжину, чтобы не покупать одну за $13, а сразу 10 за $30…40? Тут я слышал, Ubuntu на сайте купил человек и по почте пришло не 2 диска, а пачка. Достались все практически даром.
    Так вот, как вы меня поняли, очень не хочется переплачивать за дорогу+таможню. Даже не знаю, в какой компании нет таких проблем.

    И ещё. Я так понял, единовременно JTag может подключаться к одному кристаллу? А если я десяток чипов этих вместе подключу, их как, по очереди все прошивать придётся? Тем более процесс у меня может быть не очень чистым, т.е. циклы перешивки могут исчерпаться. Вот это меня волнует!

    И наконец, почему схемы LPT<->JTag самые популярные? Нету более удобных, скажем с USB или ещё лучше, USB-1Wire <-> J-Tag, чтобы проводков как можно меньше, а значит, безопаснее было. Мало ли, оборвётся один и всё полетит. Тем более я в НЧ-входу телевизора или S-Video платы захвата подключать планирую…

    Думаю, для начала, как нубу, мне пойдёт какрас те XC95xx. Привык работать в OrCAD. Только понятия не имею, как схему разбивать на несколько кристаллов и согласовывать их. Т.е. если я разобью всё на законченные узлы и вручную спаяю эти кристаллы, в проекте это никак не обозначится и снимать показания будет сложнее?

    Просто мне нужно теорию проверить с динамической памятью на К565РУ5 с низкой частотой регенерации. И ещё свой процессор попытаться пожечь.
     
  15. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Ubuntu рассылают бесплатно. Хотя ее намного проще скачать и удалить.

    Если есть желание создать модель жизни то воспользуйтесь ресурсами видео карты NVIDIA GeForce GTX 460..480, или их аналогами. Стоит всего от 200-500 usd.

    Насчет JTag ничего не понял. Про то как им пользоваться информации валом.
    Как пом не намного проще ,и без нервотрепки купить хороший инструмент. Например AVREAL-USB, стоит 250 грн.

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

    ЗЫ: Некоторые микроконтроллеры фирмы atmel можно отлаживать по одному проводу. Но там есть куча условий для этого.
     
  16. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Я один раз придумывал схему аппаратного построения линий.
    Скажем ТВ-сигнал 352x288 и с помощью обычных счётчиков выводятся стрелки часов, минут и секунд. Никакой памяти, просто цифровой компаратор сравнивает текущий адрес пиксела растра с показаниями счётчиков. Некий векторный дисплей получается с ограничением в три вектора.
    Разве не кайф без набора кодов и алгоритма на экране получить подобное?
    Вот хочу в ПЛИС тоже ту давнюю задумку реализовать...
    А вы всё о программном. Либо я так и не стал программистом, либо переростаю эту кодовую чушь...
    Хочется узнать подробнее...
     
  17. a9d

    a9d New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2006
    Сообщения:
    234
    Адрес:
    Zimbabwe
    Вы уже определитесь тогда что вам надо. Скорость вычислений или что то другое.
    Программная реализация экономит кучу денег и нервов.

    Да и вообще, прежде чем что-то реализовывать следует ответить на вопрос: "Зачем это надо?".
     
  18. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Paguo_86PK
    в локальной. или ищете у себя такое, либо едете в гости. во втором случае таможня остается.
    насчет таможни - позвоните или зайдите к ним и узнайте условия прохождения посылок. совершенно необязательно последние штаны сымать придется
    если пересылка обычной почтой, то это не очень дорого. но очень долго.
    сдаю секретные места
    http://www.altera.com/buy/buy-index.html
    http://www.xilinx.com/onlinestore/index.htm
    ебай
    http://shop.ebay.com/i.html?rt=nc&LH_BIN=1&_nkw=xilinx&_trksid=p3286.c0.m301
    http://shop.ebay.com/i.html?rt=nc&LH_BIN=1&_nkw=altera&_trksid=p3286.c0.m301

    ну и прочий гуголь.
    копайтесь. торгуйтесь.
    только вы внимательно читайте что продается как доставляется (проверяйте ходит ли к вам эта доставка) и на каких условиях.
    жтаг подключается к скольки надо чипам. читайте доки.
    чтоб циклы не исчерпались
    а) есть симуляторы в ассортименте
    б) 10000 это не так мало
    в) фпга (не кплд) основаны на озу и циклов перепрошивки имеют оо. в флэшку зальете когда в автономное плаванье уже запустите.
    потому что самые простые и удобные.
    usb
    http://www.hdl.co.jp/en/index.php/bitcfg3m1.html

    насчет обрыва проводков - подумайте еще раза 3.
    либо не довели до конца одно, начинаете не доводить другое.

    насчет проганья
    кроме всех прочих ++ открывается больший рынок труда. это же касается и фпга. те вы не ограничены локальными предложениями.
     
  19. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    907
    Адрес:
    Ташкент
    Помните экран ZX-Spectrum? Когда с ленты скрин грузился, то полосками через 8 рисовался. Я когда эмуль экрана писал на ассемблере, матюкался из-за того, что три младших бита надо переставить с тремя следующими.
    zx_addr = (addr & 0x181F) | ((addr >> 3) & 0x00E0) | ((addr << 3) & 0x0700);
    Тогда как аппаратно вообще вопросов нет: Перенаправил сигналы и всё. Вот это ну очень раздражает. Постоянно таблицы подготавливать и всюду XLAT'ить каждый пустяк. Тогда как аппаратно это вообще не вопрос!!! В этом плане у программ огромный недостаток и за 50 лет цифровой истории процессоров он не разрешён.

    А тут вот нашёл http://www.buyaltera.com/scripts/partsearch.dll?Cat=2556261&PV-5=9 с EPM3032ATI44-10N за $1.45. Думаю, для пробы сойдёт. Правда не знаю, в дата-шит по-моему внутренность бедная. Да и про доставку не знаю...

    А насчёт "ЖИЗНИ". Меня интересует ни сколько сам реализация в деле. Просто жутко интересно, на сколько сложно аппаратно строить такие схемы. Однажды и ТЕТРИС пытался понять как аппаратно сделать. Хотя на КР580ВМ80А давно свой написал без шаблона, только своим кодом и в дампе (без ассемблера). Сидел и думал, сколько 2И-НЕ нужно на каждую фигуру. А поворот был простым КП11-мультиплексированием осей X и Y. Кто в 70-ые не пробовал воздушный бой собрать или конные скачки, не поймёт всю прелесть решения проблем чисто аппаратного построения фигур без ПЗУ и процессоров!

    Вот я и хочу опробовать все свои задумки в реале... Не хочу, мечтаю!

    И потом, все эти видяхи с аппаратным ускорением, такая же чушь, как и аппаратный декодер MPEG-4. Уважающий себя человек всё равно должен думать, что это - псевдо-аппаратное. Так-как на деле там сверхскоростные программные схемы. Какой дурак будет строить в GeForce линии счётчиками, когда легче микрокодом?
    А я когда говорю "аппаратно" имею ввиду буквально - на логике и счётчиках. Без всяких PIC! Но я уже так понял, что "ЖИЗНЬ" на ПЗУ, т.е. чисто аппаратно - 100% реализуемо! Хотя и дорого. Но теория доказана. Или будете спорить?

    Сейчас нужно решить ещё проблему аппаратного РЕВЕРСИ http://ru.wikipedia.org/wiki/Реверси... Я который год всё никак не найду подход к построению одной клетки...
    Поверьте, это очень увлекательный досуг, чем тупой Call Duty Ваш! ;)
     
  20. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Paguo_86PK
    внутренность бедная. доставка будет дороже микрух. кварус это не тянет. на древнем компо-утиле их можно наповыпаивать.
    есть такие люди, которые просто любят мечтать. обсуждать свои мечты. но страшно боятся их осуществить. ведь в воображении оно такое новенькое, незаплевеное. а реализуешь - тут и пыль, и пролетающий ороль какнуть может. или, о ужас, может ничего не получиться.
    они фантазеры называются. или мечтатели. или выдумщики. самые хитрые записывают свои выдумки и так-сяк с этого живут.

    кто боится проиграть - тот никогда не выиграет.