Спросили, конечно, не меня, но самый быстрый метод - табличный. На входе и выходе же числа? Входное число является индексом в массиве, по которому находится число, которое на выход выдавать.Lavr wrote:Может быть, через switch ... case ? Но как? Или есть какой другой метод?
а не замутить ли нам недосимулятр?
Moderator: Shaos
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: а не замутить ли нам недосимулятр?
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
Потому и спросили не тебя, а специалиста по С++, который пишет свой симулятор.jdigreze wrote:Спросили, конечно, не меня, но самый быстрый метод - табличный.

То, что самый быстрый метод - табличный, я надеюсь, и дураку понятно...

А вот этого никто не утверждал. Вероятно, булевы выражения на каждом пине...jdigreze wrote:На входе и выходе же числа?
А может быть беззнаковые целые... поэтому и вопрос к конкретному человеку.
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
соглашусь, что табличный метод самый быстрый
индекс можно сформировать из всех входов используя их как адрес в табличке
табличку можно заполнить автоматически при генерации кода - например во входном языке каким-то образом указывать, что первые 4 цифровых входа это первый аргумент A со значениями от 0 до 15, вторые 4 цифровых входа это второй аргумент B со значениями от 0 до 15, ну и девятый вход C это типа третий аргумент со значениями 0 или 1, внутри квадратика функции пишем что-то типа S(0..31)=A(0..15)+B(0..15)+C(0..1) и наш симулятр генерит табличку для сишного кода с правильными значениями для каждой комбинации входных значений...
индекс можно сформировать из всех входов используя их как адрес в табличке
табличку можно заполнить автоматически при генерации кода - например во входном языке каким-то образом указывать, что первые 4 цифровых входа это первый аргумент A со значениями от 0 до 15, вторые 4 цифровых входа это второй аргумент B со значениями от 0 до 15, ну и девятый вход C это типа третий аргумент со значениями 0 или 1, внутри квадратика функции пишем что-то типа S(0..31)=A(0..15)+B(0..15)+C(0..1) и наш симулятр генерит табличку для сишного кода с правильными значениями для каждой комбинации входных значений...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
Вот если по входам идет скажем bool - по каждому, индекс и не очень-то удобно составлять...Shaos wrote:соглашусь, что табличный метод самый быстрый
индекс можно сформировать из всех входов используя их как адрес в табличке

И если целое без знака - ну просто 0 и 1 - тоже индекс неудобно формировать.
Хотя я безусловно согласен - табличный метод самый быстрый, но как-то бы еще индекс создавать шустро надо...
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
Для сумматоров и т.д. надо добавлять собирательные типы данных - типа uint4 (4-битное беззнаковое целое), либо перечисления (0..15) - тогда и индекс будет быстрее получаться ( c<<8|b<<4|a вместо c<<8|b4<<7|b3<<6|b2<<5|b1<<4|a4<<3|a3<<2|a2<<1|a1)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
А у Протезуса на 1 логический вход по сути может поступить 9 вариантов входного сигнала типа INT.
Да мне кажется, легче застрелиться... 
Создть из них табличный индекс? 

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
индекс надо составлять из функционально необходимых величин, а если на входе мусор, то и на выходе будет мусор...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
А если ты внимательно посмотришь и прочитаешь текст, то увидишь, что все эти величины функционально необходимы.Shaos wrote:индекс надо составлять из функционально необходимых величин...
Мусора среди них нет. Просто они дают различие, как могут быть сформированы лог. "0" и "1".
А заодно и что делать если лог. "0" "столкнулся" с лог. "1"...

iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
зачем симулировать грязные хаки? 

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
Не знаю, зачем ты их симулируешь.Shaos wrote:зачем симулировать грязные хаки?


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


Если хочешь - могу поведать...

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
грязные, грязные хаки...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
Сочувствую тебе... помой их чтоле... ну не убивайся так - сердцу больно смотреть...Shaos wrote:грязные, грязные хаки...


Вот смари кака красива штука! "Монтажное ИЛИ" называется! И пишут нам про него очень умные дятьки!

А ты, выходит, что и просимулировать это не умеешь, так еще и "грязной хакой" обзывать норовишь?

Нет, Shaos... как и твой любимый землячок, - ТЫ НЕПРАВ!

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
Вот прототип "недосимулятра" под ДОС - пока он лишь отрисовывает 2 схемы от Logisim - TRIADOR и NEDONAND:b2m wrote: 20 Aug 2012 05:19 Гипотетический вопрос.
А что, если взять готовый кроссплатформенный редактор схем (на жабе?), который сохраняет схему в формате, понятном для разбора и симуляции, а симуляцию сделать отдельной программой, которая будет считывать схему и симулировать её?
Вопрос больше в том, какой редактор наиболее подошёл бы в этом случае.
http://nedopc.org/nedopc/files/LOGIGRAF.ZIP (129KB)
Это то, что я успел сделать за пару выходных дней (и ночей) - при необходимости могут быть добавлены и другие стандартные (и сторонние) блоки Logisim

P.S. 7 декабря 2017 адаптировал код под Turbo-C 2.01, который считается freeware
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: а не замутить ли нам недосимулятр?
А с форматом файла Logisim-а ты разобрался?Shaos wrote:он лишь отрисовывает 2 схемы от Logisim
Может быть стОит сделать из него экспорт в PSpice?
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: а не замутить ли нам недосимулятр?
Ну я покрыл необходимый минимум, чтобы уметь прочитать 2 мои большие модели - по ходу можно добавлять функционала, чтобы покрыть всёLavr wrote:А с форматом файла Logisim-а ты разобрался?Shaos wrote:он лишь отрисовывает 2 схемы от Logisim
SPICE на таких больших схемах будет виснуть похлеще логисимаLavr wrote:Может быть стОит сделать из него экспорт в PSpice?

Как я уже говорил ранее - спайс для симуляции цифровых схем ненужен (ну разве что если только на самом последнем этапе верификации перед производством чипа)
Я тут за главного - если что шлите мыло на me собака shaos точка net