Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Я почти вплотную приблизился к созданию троичного компьютера вот на этом железе: Конечно же это будет 3niti alpha На котором можно написать эмулятор системы команд Тунгуски... Внутри троичный сигнал будет состоять из двух двоичных: 00 - O (zero) 10 - N (negative) 01 - P (positive) 11 - X (exception or fatal error) Если в качестве исходных схем использовать схемы для тримулятора, то там четвёртое значение - это Z (disconnected). Я думаю, что сначала я всё таки сделаю первый вариант - непосредственно на языке схем Xilinx. Второй же вариант подразумевает наличие некоего конвертера из схем тримулятора в VHDL (что вполне возможно сделать, но требует некоторого времени). UPDATE: Ниже приаттачена версия VHDL библиотеки v1.0 от 6 июля 2018 года:
|
09 Apr 2009 13:32 |
|
|
JeNNeR
Fanat
Joined: 18 Nov 2014 09:17 Posts: 52 Location: Отсюда
|
Думаю, имеет смысл переставить местами O и Z, в смысле, Z = 00 (отключено/ошибка), O = 11 (положительный сигнал + отрицательный сигнал) Тогда Z будет действительно disconnected ---- З.Ы. Некропостер
|
17 Mar 2015 01:30 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
| | | | Shaos wrote: Внутри троичный сигнал будет состоять из двух двоичных: 00 - O (zero) 10 - N (negative) 01 - P (positive) 11 - X (exception or fatal error) Если в качестве исходных схем использовать схемы для тримулятора, то там четвёртое значение - это Z (disconnected). Я думаю, что сначала я всё таки сделаю первый вариант - непосредственно на языке схем Xilinx. Второй же вариант подразумевает наличие некоего конвертера из схем тримулятора в VHDL (что вполне возможно сделать, но требует некоторого времени). | | | | |
Для начала можно взять CPLD от Xilinx - всё равно тот же VHDL будет использоваться: А в качестве исходных схем таки будет Logisim Ну и DDT, когда оно таки заработает как полноценный автомат... P.S. Задача номер раз - узнать сколько троичных мультиплексоров влезет в CollRunner-II XC2C256/144
|
27 Jun 2018 21:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
в VHDL вроде как можно заводить типы данных: однако я нигде не нашёл информации во что это в результате выльется, поэтому начать можно с простого: тогда "00" будет O, "01" будет P и "10" будет N - можно даже завести константы под это дело: P.S. X - это исключение, которое должно останавливать всю систему и сигнализировать о фатальной ошибке...
|
27 Jun 2018 23:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Начальная реализация пакета ternary.vhd:
|
29 Jun 2018 23:19 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Поправил начальную версию пакета ternary.vhd (см. выше) после проверки на кулраннере вот с таким примером: Всё рабоатет Интересный вопрос - MUX можно сделать компонентом, а можно функцией (по сути это функция и есть) - как лучше сделать? P.S. MEM точно придётся делать компонентом т.к. там есть память P.P.S. DMUX кстати тоже - там 3 выхода...
|
01 Jul 2018 20:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Пока сделал как функцию: Исходники по мере продвижения буду выкладывать сюда: https://gitlab.com/ternary/ternary/tree/master/vhdl
|
01 Jul 2018 21:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А как ты наблюдаешь, что "Всё рабоатет" ?
_________________ iLavr
|
01 Jul 2018 21:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Вот такая программка: занимает 2% объёма CPLD CoolRunner-II (4 из 256 макроячеек)
|
01 Jul 2018 21:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Подаю управляющее воздействие (кнопочка и проводочки), снимаю логические уровни с выходов (светодиодик плюс вольтметр)
|
01 Jul 2018 21:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
И что показывает вольтметр?
_________________ iLavr
|
01 Jul 2018 21:53 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Напряжение вестимо Если стрелочка ближе к 0В - это логический ноль. Если стрелочка ближе к 3В - это логическая единица. Если 2 соседних выхода показывают 00 - это троичное O, если 01 - это троичное P, если 10 - это троичное N, ну и если 11 - это исключительное состояние X...
|
01 Jul 2018 22:16 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Решил попробовать сделать троичный полусумматор в соответствии с картинкой: Получилось вот что: | | | | Code: use ternary.all;
entity main is Port ( a : in FakeTrit; b : in FakeTrit; c : out FakeTrit; s : out FakeTrit ); end main;
architecture Behavioral of main is signal r1,r2,r3,r4,r5,r6 : FakeTrit; begin process (a,b) begin r1 <= mux(a,P,N,O); r2 <= mux(a,O,P,N); r3 <= mux(b,r1,a,r2); r4 <= e12(a,N,O); r5 <= e21(a,O,P); r6 <= mux(b,r4,O,r5); s <= r3; c <= r6; end process; end Behavioral;
| | | | |
и он всё также занимает 4 макроячейки из 256!
|
01 Jul 2018 22:34 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Shaos wrote: Напряжение вестимо Если стрелочка ближе к 0В - это логический ноль. Если стрелочка ближе к 3В - это логическая единица. Если 2 соседних выхода показывают 00 - это троичное O, если 01 - это троичное P, если 10 - это троичное N, ну и если 11 - это исключительное состояние X... | | | | |
Ага - вот это я и хотел услышать... Т.е. это будет чисто двухпроводная троичка безо всяких "мухлей" с высокоимпедансным состоянием или же резистивным делителем между двумя выводами? (обсуждали мы такие варианты...)
_________________ iLavr
|
01 Jul 2018 22:39 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
На CPLD/FPGA наверное непросто будет эти "мухли" реализовать (если вообще возможно), так что я в лоб иду - 2 провода на трит и внутри, и снаружи...
|
01 Jul 2018 22:41 |
|
|