nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 14 Nov 2018 15:50



This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 
Xavroska-2009 "Triangle" (первое приближение) 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Приступаю к реализации новой платы NedoPC-90 (серия B) с кодовым названием Xavroska-2009 "Triangle". Плата была задумана ещё в апреле (см. http://shaos.net/notes/33_01.jpg ), но руки до реализации дошли только сейчас.

Плата будет с AVR-ом ATMEGA8535 от Atmel (в PLCC-корпусе) и CPLD XC9572 от Xilinx (тоже в PLCC). Кроме того на плате будет 8К энергонезависимой памяти, последовательный порт (для общения с компьютером), а также некоторые разъёмы (включая порт NI-15), опциональные переключаетели и светодиоды (совмещенные красно-зленые либо обычные, но в два раза больше).

Плату можно будет собрать в двух вариантах:
1) NedoPC-90-B/T - плата для эмуляции троичного компьютера 3niti alpha с панелью управления как вот тут;
2) NedoPC-90-B/X - универсальная плата с AVR, CPLD, кучей I/O и тремя аналоговыми входами.

P.S. Плата будет программно совместима с оригинальной NedoPC-90 от SfS, а также NedoPC-90.AVROS (и соответственно Xavroska v1.0)
P.P.S. Пользуясь той же платой можно будет собрать 3.3-вольтовые варианты девайсов
P.P.P.S. топик закрыт - устарел, все идём сюда: http://www.nedopc.org/forum/viewtopic.php?t=9141

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 13 Sep 2009 13:02, edited 5 times in total.



05 Sep 2009 18:30
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
Подключение ATMEGA претерпело некоторые мелкие изменения (оставаясь при этом совместимым с NedoPC-90), кроме того придётся поставить один мультиплексор 74151 на чтение состояния четырёх троичных переключателей, т.к. логики не хватает:

Code:
ATMEGA8535 (PLCC-44) for NedoPC-90-B:

Pin 01: GND             Ground
Pin 02: PB0 (XCK/T0)    Green LED 1
Pin 03: PB1 (T1)        Red LED 1
Pin 04: PB2 (AIN0/INT2) Green LED 2
Pin 05: PB3 (AIN1/OC0)  Red LED 2
Pin 06: PB4 (SS)        Multiplexed input from switches 1,2,3,4

Pin 07: PB5 (MOSI)     Prog MOSI
Pin 08: PB6 (MISO)     Prog MISO
Pin 09: PB7 (SCK)      Prog SCK
Pin 10: RESET          Prog RESET + reset scheme
Pin 11: VCC            +5 Volts
Pin 12: GND            Ground
Pin 13: XTAL2          Optional crystal 8 MHz
Pin 14: XTAL1          Optional crystal 8 MHz
Pin 15: PD0 (RXD)      Serial port RxD
Pin 16: PD1 (TXD)      Serial port TxD
Pin 17: PD2 (INT0)     External I/O (optional KeyPad)

Pin 18: PD3 (INT1)     Green LED 3 | External I/O (optional)
Pin 19: PD4 (OC1B)     Red LED 3 | External I/O (optional)
Pin 20: PD5 (OC1A)     A0 for switch multiplexer
Pin 21: PD6 (ICP1)     A1 for switch multiplexer
Pin 22: PD7 (OC2)      A2 for switch multiplexer
Pin 23: VCC            +5 Volts
Pin 24: GND            Ground
Pin 25: PC0 (SCL)      D0 (NI-15)
Pin 26: PC1 (SDA)      D1 (NI-15)
Pin 27: PC2            D2 (NI-15)
Pin 28: PC3            D3 (NI-15)

Pin 29: PC4            D4 (NI-15)
Pin 30: PC5            D5 (NI-15)
Pin 31: PC6 (TOSC1)    D6 (NI-15)
Pin 32: PC7 (TOSC2)    D7 (NI-15)
Pin 33: AVCC           +5 Volts
Pin 34: GND            Ground
Pin 35: AREF           +5 Volts
Pin 36: PA7 (ADC7)     Switch 12 | Analog INPUT 3
Pin 37: PA6 (ADC6)     Switch 11 | Analog INPUT 2
Pin 38: PA5 (ADC5)     Switch 10 | Analog INPUT 1
Pin 39: PA4 (ADC4)     _WR (NI-15) + _WE (RAM)

Pin 40: PA3 (ADC3)     _RD (NI-15) + _OE (RAM)
Pin 41: PA2 (ADC2)     M_IO (NI-15)
Pin 42: PA1 (ADC1)     ALE (NI-15)
Pin 43: PA0 (ADC0)     _CS (NI-15)
Pin 44: VCC            +5 Volts

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 12 Sep 2009 11:14, edited 7 times in total.



06 Sep 2009 00:40
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
Подключение CPLD:

Code:
XC9572 (PLCC84) for NedoPC-90-B:

Pin 01: 1-02           Green LED4 | External I/O (optional)
Pin 02: 1-05           Red LED4 | External I/O (optional)
Pin 03: 1-06           Green LED5 | External I/O (optional)
Pin 04: 1-01           Red LED5 | External I/O (optional)
Pin 05: 1-08           Green LED6 | External I/O (optional)
Pin 06: 1-03           Red LED6 | External I/O (optional)
Pin 07: 1-04           Internal _CS (NI-15)
Pin 08:      (GND)     Ground
Pin 09: 1-09 (GCK1)    Switch 15+ | External I/O (optional)
Pin 10: 1-11 (GCK2)    ALE (NI-15)
Pin 11: 1-07           Switch 15- | External I/O (optional)

Pin 12: 1-14 (GCK3)    _WR (NI-15)
Pin 13: 1-10           Green LED7 | External I/O (optional)
Pin 14: 1-15           Red LED7 | External I/O (optional)
Pin 15: 1-17           M_IO (NI-15)
Pin 16:      (GND)     Ground
Pin 17: 3-02           Switch 14+ | External I/O (optional)
Pin 18: 1-12           Switch 14- | External I/O (optional)
Pin 19: 3-05           _RD (NI-15)
Pin 20: 1-13           Green LED8 | External I/O (optional)
Pin 21: 3-08           Red LED8 | External I/O (optional)
Pin 22:      (VCCIO)   +5 Volts | +3.3 Volts (optional)
Pin 23: 1-16           Green LED9 | External I/O (optional)
Pin 24: 1-18           Red LED9 | External I/O (optional)
Pin 25: 3-01           Green LED10 | External I/O (optional)
Pin 26: 3-09           Red LED10 | External I/O (optional)
Pin 27:      (GND)     Ground
Pin 28:      (TDI)
Pin 29:      (TMS)
Pin 30:      (TCK)
Pin 31: 3-03           Green LED11 | External I/O (optional)
Pin 32: 3-04           Red LED11 | External I/O (optional)

Pin 33: 3-11           Green LED12 | External I/O (optional)
Pin 34: 3-06           Red LED12 | External I/O (optional)
Pin 35: 3-07           Green LED13 | External I/O (optional)
Pin 36: 3-14           Red LED13 | External I/O (optional)
Pin 37: 3-15           Green LED14 | External I/O (optional)
Pin 38:      (VCCINT)  +5 Volts
Pin 39: 3-17           Red LED14 | External I/O (optional)
Pin 40: 3-10           Green LED15 | External I/O (optional)
Pin 41: 3-12           Red LED15 | External I/O (optional)
Pin 42:      (GND)     Ground
Pin 43: 3-13           Switch 13+ | External I/O (optional)
Pin 44: 4-02           D0 (NI-15)
Pin 45: 3-16           Switch 13- | External I/O (optional)
Pin 46: 4-01           D1 (NI-15)
Pin 47: 4-05           D2 (NI-15)
Pin 48: 4-08           D3 (NI-15)
Pin 49:      (GND)     Ground
Pin 50: 4-09           D4 (NI-15)
Pin 51: 4-03           D5 (NI-15)
Pin 52: 4-04           D6 (NI-15)
Pin 53: 4-11           D7 (NI-15)

Pin 54: 4-06           Switch 5+ | External I/O (optional)
Pin 55: 4-07           Switch 5- | External I/O (optional)
Pin 56: 4-14           Switch 6+ | External I/O (optional)
Pin 57: 4-10           Switch 6- | External I/O (optional)
Pin 58: 4-12           Switch 7+ | External I/O (optional)
Pin 59:      (TDO)
Pin 60:      (GND)     Ground
Pin 61: 4-13           Switch 7- | External I/O (optional)
Pin 62: 4-16           Switch 8+ | External I/O (optional)
Pin 63: 2-01           _CE (RAM)
Pin 64:      (VCCIO)   +5 Volts | +3.3 Volts (optional)
Pin 65: 4-15           Switch 8- | External I/O (optional)
Pin 66: 4-17           Switch 9+ | External I/O (optional)
Pin 67: 2-03           A0 (RAM)
Pin 68: 2-04           A1 (RAM)
Pin 69: 2-02           A2 (RAM)
Pin 70: 2-05           A3 (RAM)
Pin 71: 2-06           A4 (RAM)
Pin 72: 2-08           A5 (RAM)
Pin 73:      (VCCINT)  +5 Volts
Pin 74: 2-09 (GSR)     Reset

Pin 75: 2-10           A6 (RAM)
Pin 76: 2-07 (GTS1)    External _CS (NI-15) | External I/O (optional)
Pin 77: 2-11 (GTS2)    Switch 9- | External I/O (optional)
Pin 78:      (VCCINT)  +5 Volts
Pin 79: 2-12           A7 (RAM)
Pin 80: 2-13           A8 (RAM)
Pin 81: 2-14           A9 (RAM)
Pin 82: 2-16           A10 (RAM)
Pin 83: 2-15           A11 (RAM)
Pin 84: 2-17           A12 (RAM)



MCU и CPLD будут общаться по шине NI-15 (через которую также будет доступна память). В варианте сборки NedoPC-90-B/X всего получается до 48 внешних контактов, которые можно запрограммировать как на вход, так и на выход (42 от XC9572 + 6 от ATMEGA8535, причём 3 из которых могут быть использованы как аналоговые входы). При использовании внешней шины NI-15 (для других внешних устройств), память может временно отключаться от шины - будет предусмотрен специальный внутренний регистр.

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 07 Sep 2009 11:10, edited 3 times in total.



06 Sep 2009 03:07
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
В XC9572 вроде всё влезло (впритык):
Macrocells 65/72 (90%)
Product Terms 258/360 (72%)
Function Block 142/144 (99%)
Registers 53/72 (74%)
Pins 69/69 (100%)

_________________
:eugeek: https://twitter.com/Shaos1973


06 Sep 2009 22:13
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
Вот первый рабочий вариант - продолжаю тестить в симуляторе:

Code:
---------------------------------------------------------------------------------
-- Company: NedoPC.org
-- Engineer: Alexander A. Shabarshin
--
-- Create Date:    15:52:28 09/06/2009
-- Design Name:    x2009r2
-- Module Name:    top - Behavioral
-- Project Name:   Xavroska 2009 "Triangle" (NedoPC-90-B/T)
-- Target Devices: XC9572
-- Tool versions:  ISE 10.1.03
-- Description:   
--
-- Dependencies: top.ucf must have pin list
--
-- Revision: 2
-- Revision 0.2 - working one...
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity top is
    Port ( RGLED4 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED5 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED6 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED7 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED8 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED9 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED10 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED11 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED12 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED13 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED14 : out  STD_LOGIC_VECTOR (1 downto 0);
           RGLED15 : out  STD_LOGIC_VECTOR (1 downto 0);
           TRISW5 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW6 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW7 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW8 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW9 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW13 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW14 : in  STD_LOGIC_VECTOR (1 downto 0);
           TRISW15 : in  STD_LOGIC_VECTOR (1 downto 0);
           NI_DATA : inout  STD_LOGIC_VECTOR (7 downto 0);
           NI_I_CS : in  STD_LOGIC;
           NI_O_CS : out  STD_LOGIC;
           NI_ALE : in  STD_LOGIC;
           NI_M_IO : in  STD_LOGIC;
           NI_RD : in  STD_LOGIC;
           NI_WR : in  STD_LOGIC;
           MEM_CS : out  STD_LOGIC;
           MEM_ADDR : inout  STD_LOGIC_VECTOR (12 downto 0);
     RESET : in STD_LOGIC );
end top;

architecture Behavioral of top is
signal MEM_USE: STD_LOGIC;
begin
process (RESET,NI_I_CS,NI_ALE,NI_M_IO,NI_RD,NI_WR)
begin
if RESET = '0'
then -- Reset
  RGLED4 <= "11";
  RGLED5 <= "11";
  RGLED6 <= "11";
  RGLED7 <= "11";
  RGLED8 <= "11";
  RGLED9 <= "11";
  RGLED10 <= "11";
  RGLED11 <= "11";
  RGLED12 <= "11";
  RGLED13 <= "11";
  RGLED14 <= "11";
  RGLED15 <= "11";
  NI_O_CS <= '1';
  MEM_CS <= '1';
  MEM_USE <= '0';
  MEM_ADDR <= "0000000000000";
  NI_DATA <= "ZZZZZZZZ";
else
  if NI_I_CS = '0'
  then -- Bus is ready to work
    if NI_M_IO = '1' and MEM_USE = '1'
    then -- Memory in use
      NI_O_CS <= '1';
      if NI_WR = '0' or NI_RD = '0'
      then
        MEM_CS <= '0';
      else
        MEM_CS <= '1';
      end if;
    else -- Memory is hidden
      NI_O_CS <= '0';
    end if;
    if NI_ALE'event and NI_ALE = '1'
    then -- Save lower address
      MEM_ADDR(7 downto 0) <= NI_DATA;
    end if;
    if NI_ALE = '0'
    then
      if NI_WR'event and NI_WR='1'
      then -- Write event ends
        if NI_M_IO = '0'
        then -- Register write
          if MEM_ADDR(7 downto 0) = "10000000" -- 0x80
          then -- Save higher address
            MEM_ADDR(12 downto 8) <= NI_DATA(4 downto 0);
            MEM_USE <= not NI_DATA(7);
          else
            if MEM_ADDR(7 downto 0) = "10000001" -- 0x81
            then -- Change RGLEDs 4,5,6
              RGLED4 <= NI_DATA(1 downto 0);
              RGLED5 <= NI_DATA(3 downto 2);
              RGLED6 <= NI_DATA(5 downto 4);
            else
              if MEM_ADDR(7 downto 0) = "10000010" -- 0x82
              then -- Change RGLEDs 7,8,9

                RGLED7 <= NI_DATA(1 downto 0);
                RGLED8 <= NI_DATA(3 downto 2);
                RGLED9 <= NI_DATA(5 downto 4);
              else
                if MEM_ADDR(7 downto 0) = "10000011" -- 0x83
                then -- Change RGLEDs 10,11,12
                  RGLED10 <= NI_DATA(1 downto 0);
                  RGLED11 <= NI_DATA(3 downto 2);
                  RGLED12 <= NI_DATA(5 downto 4);
                else
                  if MEM_ADDR(7 downto 0) = "10000100" -- 0x84
                  then -- Change RGLEDs 13,14,15
                    RGLED13 <= NI_DATA(1 downto 0);
                    RGLED14 <= NI_DATA(3 downto 2);
                    RGLED15 <= NI_DATA(5 downto 4);
                  end if;
                end if;
              end if;
            end if;
          end if;
        end if;
      end if;
      if NI_RD'event and NI_RD='0'
      then -- Read event
        if NI_M_IO = '0'
        then -- Register read
          if MEM_ADDR(7 downto 0) = "10000000" -- 0x80
          then -- Load higher address
            NI_DATA(4 downto 0) <= MEM_ADDR(12 downto 8);
            NI_DATA(6 downto 5) <= "00";
            NI_DATA(7) <= not MEM_USE;
          else
            NI_DATA(7 downto 6) <= "00";
            if MEM_ADDR(7 downto 0) = "10000001" -- 0x81
            then -- Get states of TRISWs 5,6
              NI_DATA(1 downto 0) <= "00";
              NI_DATA(3 downto 2) <= TRISW5;
              NI_DATA(5 downto 4) <= TRISW6;
            else
              if MEM_ADDR(7 downto 0) = "10000010" -- 0x82
              then -- Get states of TRISWs 7,8,9
                NI_DATA(1 downto 0) <= TRISW7;
                NI_DATA(3 downto 2) <= TRISW8;
                NI_DATA(5 downto 4) <= TRISW9;
              else
                if MEM_ADDR(7 downto 0) = "10000100" -- 0x84
                then -- Get states of TRISWs 13,14,15
                  NI_DATA(1 downto 0) <= TRISW13;
                  NI_DATA(3 downto 2) <= TRISW14;
                  NI_DATA(5 downto 4) <= TRISW15;
                end if;
              end if;
            end if;
          end if;
        end if;
      end if;
    end if;
  else -- Bus is disabled
    MEM_CS <= '1';
    NI_O_CS <= '1';
--   NI_DATA <= "ZZZZZZZZ";
  end if;
  if NI_RD='1'
  then -- Read event ends
    NI_DATA <= "ZZZZZZZZ";
  end if;
end if;
end process;
 
end Behavioral;

_________________
:eugeek: https://twitter.com/Shaos1973


07 Sep 2009 09:37
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Shaos wrote:
Приступаю к реализации новой платы NedoPC-90 (серия B) с кодовым названием Xavroska-2009 "Triangle". Плата была задумана ещё в апреле (см. http://shaos.net/notes/33_01.jpg ), но руки до реализации дошли только сейчас.

Плата будет с AVR-ом ATMEGA8535 (в PLCC-корпусе) и CPLD XC9572 от Xilinx (тоже в PLCC). Кроме того на плате будет 8К энергонезависимой памяти, последовательный порт (для общения с компьютером), а также некоторые разъёмы (включая порт NI-15), опциональные переключаетели и светодиоды (совмещенные красно-зленые либо обычные, но в два раза больше).

Плату можно будет собрать в двух вариантах:
1) NedoPC-90-B/T - плата для эмуляции троичного компьютера 3niti alpha с панелью управления как вот тут;
2) NedoPC-90-B/X - универсальная плата с AVR, CPLD, кучей I/O и тремя аналоговыми входами.

P.S. Плата будет программно совместима с оригинальной NedoPC-90 от SfS, а также NedoPC-90.AVROS (и соответственно Xavroska v1.0)
P.P.S. Пользуясь той же платой можно будет собрать 3.3-вольтовые варианты девайсов


Как вариант сборки можно предложить ещё NedoPC-90-B/D (dual), когда две треугольные половинки не распиливаются, а остаются в пределах одной квадратной платы - в результате мы имеем две идентичные схемы на одной плате, которые могут общаться по шине NI-15 - и туда же можно воткнуть третью плату сверху по диагонали...

_________________
:eugeek: https://twitter.com/Shaos1973


07 Sep 2009 10:35
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
Поближе познакомился с Atmega-8515 и подумалось мне что на её основе надо хавроську делать (на форуме кстати уже обсуждалось) - там есть встроенное общение с внешней памятью данных до 64К и почти прямой (и опять же встроенный) интерфейс NI-15! Правда частично сломается совместимость с оригинальной платой NedoPC-90 от SfS (с NI-15 по другому работать надо будет - хотя последняя версия AVROS это уже поддерживает через дефайны) и аналоговые входы исчезнут...

P.S. С атмегой-8535 пока остановился вот на этом (картинка кликабельна):

Image

В схеме использованы компоненты из моей либы:

http://nedopc.org/nedopc/files/shaos_lbr.zip

_________________
:eugeek: https://twitter.com/Shaos1973


12 Sep 2009 23:30
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17117
Location: Colorado
Post 
Топик закрыт, т.к. плата будет переработана под ATMEGA8515

Основной топик по теме теперь находится тут:

http://www.nedopc.org/forum/viewtopic.php?t=9141

_________________
:eugeek: https://twitter.com/Shaos1973


13 Sep 2009 13:03
Profile WWW
Display posts from previous:  Sort by  
This topic is locked, you cannot edit posts or make further replies.   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.