Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

смартфон както си трябва :)
http://mcu-bg.com/mcu_site/viewtopic.php?f=22&t=17310
Страница 2 от 3

Автор:  ToHu [ Пон Май 11, 2020 8:53 pm ]
Заглавие:  Re: смартфон както си трябва :)

Добре де, подбери някой монохромен LED модул който да го докара същата визия, изтумбването лесно ще го докараме :)

Автор:  Н'бабане Гт'муан'га [ Пон Май 11, 2020 9:15 pm ]
Заглавие:  Re: смартфон както си трябва :)

ToHu написа:
Добре де, подбери някой монохромен LED модул който да го докара същата визия, изтумбването лесно ще го докараме :)


Е аз нали така го бях замислил (виж в един от по-предните постове по темата)... Ама с кинескоп си има друга тръпка. Сигурно са два различни проекта...

Абе да направя призив към местните баш-майстори по софтуер. Някой няма ли желание да удари едно рамо и да напише/портне едно правчово емулаторче в някой пик32 или арм? Заедно с тоя кинескоп... чуден правец 8-нещо-си може да стане :D

Автор:  iss [ Пон Май 11, 2020 11:14 pm ]
Заглавие:  Re: смартфон както си трябва :)

Н'бабане Гт'муан'га написа:
... да напише/портне едно правчово емулаторче в някой пик32 или арм?...

Има доста налични емулатори, но повечето се ограничават само до емулация на 6502.
Има и за цяла 82-ка де :) :
https://damian.pecke.tt/2015/04/06/turn ... le-ii.html
https://www.hackster.io/news/aiie-a-por ... 6e94d0c427
https://maxstrauch.github.io/projects/b ... index.html

Автор:  TheHungry [ Пон Май 11, 2020 11:30 pm ]
Заглавие:  Re: смартфон както си трябва :)

Н'бабане Гт'муан'га написа:
ToHu написа:
Добре де, подбери някой монохромен LED модул който да го докара същата визия, изтумбването лесно ще го докараме :)


Е аз нали така го бях замислил (виж в един от по-предните постове по темата)... Ама с кинескоп си има друга тръпка. Сигурно са два различни проекта...

Абе да направя призив към местните баш-майстори по софтуер. Някой няма ли желание да удари едно рамо и да напише/портне едно правчово емулаторче в някой пик32 или арм? Заедно с тоя кинескоп... чуден правец 8-нещо-си може да стане :D


FPGA не може ли ?

Автор:  Bai Ui [ Вто Май 12, 2020 12:41 am ]
Заглавие:  Re: смартфон както си трябва :)

подкрепям идеята за FPGA, целият архаичен хардуер може да се натика в една евтина матрица включително управлението на кинескопа. Аз бях започнал един софт 8086 но тоя Z80 е къде къде по-елементарен. Дори може да подкараме оригиналният LDOS с танцуващият демон, ако го докараш на външен вид ще стане голям пранк.

Автор:  Н'бабане Гт'муан'га [ Вто Май 12, 2020 12:09 pm ]
Заглавие:  Re: смартфон както си трябва :)

Ами не знам... фпга-тата по принцип ме правят неспокоен. Парил съм се на няколко пъти с платки дето после нямам какво да им налея вътре. Аз вхдл не говоря. Опитвах на няколко пъти ама нещо не ми допадна...
Голям риск ще е от гледна точна на след-хардуерните етапи

Автор:  Bai Ui [ Вто Май 12, 2020 12:46 pm ]
Заглавие:  Re: смартфон както си трябва :)

Аз се позапалих по тоя проект, сега няма да ти крада идеята нито пък се бутам за джойнт венчър, така или иначе съм непостоянен и представлявам риск :-), по скоро ще създам един проект в open cores където да натикам един TRS-80 компютър в матрица, намерил съм схеми, не е нищо сложно. Но емулатор на PIC някак не го виждам, по скоро бих те посъветвал да ползваш разбъри или ардуино ако ще търкаляш емулатори.
Сега се сетих че имаше някакъв модул с матрица за повърхностен монтаж, показваше го тука, но дали ще може да го ползваш за софт-компютъра ще разбереш накрая като се компилира завършеният VHDL проект, тогава ще се знае какъв капацитет е необходим.

Автор:  Н'бабане Гт'муан'га [ Вто Май 12, 2020 12:55 pm ]
Заглавие:  Re: смартфон както си трябва :)

Bai Ui написа:
Аз се позапалих по тоя проект, сега няма да ти крада идеята нито пък се бутам за джойнт венчър, така или иначе съм непостоянен и представлявам риск :-), по скоро ще създам един проект в open cores където да натикам един TRS-80 компютър в матрица, намерил съм схеми, не е нищо сложно....


Давай го насам! TRS-80 е популярна платформа и ще стане добре.
Аз точно това имах предвид в предния пост. За мен е удоволствие да рутя платки; когато има процесорчета даже и софт им пиша понякога, ама с фпга задължително остава да разчитам да има нещо готово да се налее вътре, иначе платката остава паметник

Автор:  Bai Ui [ Вто Май 12, 2020 1:06 pm ]
Заглавие:  Re: смартфон както си трябва :)

Ами добре, захващам се с компонентите, ще прегледам и в open cores дали няма някой готов компонент да ми спести работа, няма да стане за ден-два, но ще стане добър проект, както спомена TRS-80 е популярна машина

Автор:  Bai Ui [ Сря Май 13, 2020 7:08 am ]
Заглавие:  Re: смартфон както си трябва :)

Има в open cores един Z80 проект но не ми хареса как е организиран, освен това е писан на Verilog а мен ме няма много там затова реших да създам мой на VHDL, вчера го регистрирах, ще бъде на отделен проект, после ще го включа като компонент в TRS-80, Почнах кода вчера, тоя процесор ще излезе по-сложен отколкото мислех, има недокументирани инструкции които трябва да включа за да няма чуденки после, общият брой на опкодовете е над 1300, така по груба преценка може да ми отнеме около 100 часа работата по тоя процесор. Иначе за TRS-80 си има всичко, сектата е огромна, пази се абсолютно всичко - операционни системи, бейсик интерпретатори, софтуер на касетки - във wav формат, ще го мислим после как ще го зареждаме. Ето го началото на кода, най-отгоре е списък с опкодовете, както споменах са над 1300, до тук съм декларирал около 40 :-)

Код:
-- Z80 soft core microprocessor
-- ver: 1.0 (initial)
-- Autor:
-- Started: 12/05/2020
-- Last modified: 12/05/2020
--
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Z80 is

Port ( CLK :      IN    STD_LOGIC;   
     RESET:       IN    STD_LOGIC
    ADDRESS_BUS: INOUT STD_LOGIC_VECTOR (15 downto 0);
    DATA_BUS:    INOUT STD_LOGIC_VECTOR (7 downto 0);
     BUSACK:      OUT   STD_LOGIC;
     MREQ:        INOUT STD_LOGIC;
     IORQ:        INOUT STD_LOGIC;
     RD:          INOUT STD_LOGIC;
     WR:          INOUT STD_LOGIC;
     HALT:        OUT   STD_LOGIC;
     M1:          OUT   STD_LOGIC;
     RFSH:        OUT   STD_LOGIC;
     BUSRQ:       OUT   STD_LOGIC;
     WAITT:       IN    STD_LOGIC;
     INT:         IN    STD_LOGIC;
     NMI:         IN    STD_LOGIC );
   
end Z80;

architecture Behavioral of Z80 is
-- biggest instruction - 4 bytes
-- longest instruction - 23 clock cycles
--------------- MAIN Instruction set opcodes
constant nop:           STD_LOGIC_VECTOR(7 downto 0):="00000000"; --0 bytes_1 clk_4
constant ld_bc:         STD_LOGIC_VECTOR(7 downto 0):="00000001"; --1 bytes_3 clk_10
constant ld_bc_a:       STD_LOGIC_VECTOR(7 downto 0):="00000010"; --2 bytes_1 clk_7
constant inc_bc:        STD_LOGIC_VECTOR(7 downto 0):="00000011"; --3 bytes_1 clk_6
constant inc_b:         STD_LOGIC_VECTOR(7 downto 0):="00000100"; --4 bytes_1 clk_4
constant dec_b:         STD_LOGIC_VECTOR(7 downto 0):="00000101"; --5 bytes_1 clk_4
constant ld_b:          STD_LOGIC_VECTOR(7 downto 0):="00000110"; --6 bytes_2 clk_7
constant rlca:          STD_LOGIC_VECTOR(7 downto 0):="00000111"; --7 bytes_1 clk_4
constant ex_af_af:      STD_LOGIC_VECTOR(7 downto 0):="00001000"; --8 bytes_1 clk_4
constant add_hl_bc:     STD_LOGIC_VECTOR(7 downto 0):="00001001"; --9 bytes_1 clk_11
constant ld_a_bc:       STD_LOGIC_VECTOR(7 downto 0):="00001010"; --10 bytes_1 clk_7
constant dec_bc:        STD_LOGIC_VECTOR(7 downto 0):="00001011"; --11 bytes_1 clk_6
constant inc_c:         STD_LOGIC_VECTOR(7 downto 0):="00001100"; --12 bytes_1 clk_4
constant dec_c:         STD_LOGIC_VECTOR(7 downto 0):="00001101"; --13 bytes_1 clk_4
constant ld_c:          STD_LOGIC_VECTOR(7 downto 0):="00001110"; --14 bytes_2 clk_7
constant rcca:          STD_LOGIC_VECTOR(7 downto 0):="00001111"; --15 bytes_1 clk_4
constant djnz:          STD_LOGIC_VECTOR(7 downto 0):="00010000"; --16 bytes_2 clk_13/8
constant ld_de:         STD_LOGIC_VECTOR(7 downto 0):="00010001"; --17 bytes_3 clk_10
constant ld_de_a:       STD_LOGIC_VECTOR(7 downto 0):="00010010"; --18 bytes_1 clk_7
constant inc_de:        STD_LOGIC_VECTOR(7 downto 0):="00010011"; --19 bytes_1 clk_6
constant inc_d:         STD_LOGIC_VECTOR(7 downto 0):="00010100"; --20 bytes_1 clk_4
constant dec_d:         STD_LOGIC_VECTOR(7 downto 0):="00010101"; --21 bytes_1 clk_4
constant ld_d:          STD_LOGIC_VECTOR(7 downto 0):="00010110"; --22 bytes_2 clk_7
constant rla:           STD_LOGIC_VECTOR(7 downto 0):="00010111"; --23 bytes_1 clk_4
constant jr:            STD_LOGIC_VECTOR(7 downto 0):="00011000"; --24 bytes_2 clk_12
constant add_h1_de:     STD_LOGIC_VECTOR(7 downto 0):="00011001"; --25 bytes_1 clk_11
constant ld_a_de:       STD_LOGIC_VECTOR(7 downto 0):="00011010"; --26 bytes_1 clk_7
constant dec_de:        STD_LOGIC_VECTOR(7 downto 0):="00011011"; --27 bytes_1 clk_6
constant inc_e:         STD_LOGIC_VECTOR(7 downto 0):="00011100"; --28 bytes_1 clk_4
constant dec_e:         STD_LOGIC_VECTOR(7 downto 0):="00011101"; --29 bytes_1 clk_4
constant ld_e:          STD_LOGIC_VECTOR(7 downto 0):="00011110"; --30 bytes_2 clk_7
constant rra:           STD_LOGIC_VECTOR(7 downto 0):="00011111"; --31 bytes_1 clk_4

constant jr_nz:         STD_LOGIC_VECTOR(7 downto 0):="00100000"; --32 bytes_2 clk_13/8
constant ld_h1:         STD_LOGIC_VECTOR(7 downto 0):="00100001"; --33 bytes_3 clk_10
constant ld_h1_1:       STD_LOGIC_VECTOR(7 downto 0):="00100010"; --34 bytes_1 clk_7
constant inc_h1:        STD_LOGIC_VECTOR(7 downto 0):="00100011"; --35 bytes_1 clk_6
constant inc_h:         STD_LOGIC_VECTOR(7 downto 0):="00100100"; --36 bytes_1 clk_4
constant dec_h:         STD_LOGIC_VECTOR(7 downto 0):="00100101"; --37 bytes_1 clk_4
constant ld_h:          STD_LOGIC_VECTOR(7 downto 0):="00100110"; --38 bytes_2 clk_7
constant daa:           STD_LOGIC_VECTOR(7 downto 0):="00100111"; --39 bytes_1 clk_4
constant jr_z:          STD_LOGIC_VECTOR(7 downto 0):="00101000"; --40 bytes_2 clk_12
constant add_h1_h1:     STD_LOGIC_VECTOR(7 downto 0):="00101001"; --41 bytes_1 clk_11
constant ld_h1_2:       STD_LOGIC_VECTOR(7 downto 0):="00101010"; --42 bytes_1 clk_7
constant dec_h1:        STD_LOGIC_VECTOR(7 downto 0):="00101011"; --43 bytes_1 clk_6
constant inc_l:         STD_LOGIC_VECTOR(7 downto 0):="00101100"; --44 bytes_1 clk_4
constant dec_l:         STD_LOGIC_VECTOR(7 downto 0):="00101101"; --45 bytes_1 clk_4
constant ld_l:          STD_LOGIC_VECTOR(7 downto 0):="00101110"; --46 bytes_2 clk_7
constant cpl:           STD_LOGIC_VECTOR(7 downto 0):="00101111"; --47 bytes_1 clk_4

signal ADDRESS:         STD_LOGIC_VECTOR(15 downto 0);
signal DATA_OUT:        STD_LOGIC_VECTOR(7 downto 0);
signal DATA_IN:         STD_LOGIC_VECTOR(7 downto 0);
signal REG_A:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_B:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_C:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_D:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_E:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_H:           STD_LOGIC_VECTOR(7 downto 0);
signal REG_L:           STD_LOGIC_VECTOR(7 downto 0);
signal BYTE:            STD_LOGIC_VECTOR(2 downto 0):="000";
signal OPCODE:          STD_LOGIC_VECTOR(7 downto 0);
signal CLK_COUNTER:     STD_LOGIC_VECTOR(7 downto 0);

--================================================================

begin

----------- DATA BUS 3-state driver
DATA_BUS <= DATA_OUT when (WR='1') ELSE "ZZZZZZZZ";
DATA_IN <= DATA_BUS;

----------- ADDRESS driver
ADDRESS_BUS <= ADDRESS;

-----------

----------- Opcodes Processing
Encoding: process (CLK) begin
if (CLK'event and CLK='1') then
case BYTE is
  when "000" =>
   OPCODE <= DATA_IN;
   case DATA_IN is
    when nop => NULL;
    when others => BYTE <= (others => '0');
   end case; --DATA_IN
  when "001" =>
  when "010" =>
  when "011" =>
  when "100" =>
   if (CLK_COUNTER=0) THEN BYTE <= (others => '0'); OPCODE <= (others => '0');
   else CLK_COUNTER <= CLK_COUNTER - 1;
   end if;
  when others => BYTE <= (others => '0');
end case; --BYTE
end if;
end process Encoding;

end Behavioral;

Автор:  Н'бабане Гт'муан'га [ Сря Май 13, 2020 10:48 am ]
Заглавие:  Re: смартфон както си трябва :)

Че никой друг досега ли не е правил Z80 ?? В opencores например?

Автор:  ToHu [ Сря Май 13, 2020 10:51 am ]
Заглавие:  Re: смартфон както си трябва :)

да е правил какво ? Имахме един продукт преди 100 години с Z80, не съм го разработвал аз но съм го дописвал, но тогава всичко беше чист ASM без файлови системи и подобни.

Автор:  Н'бабане Гт'муан'га [ Сря Май 13, 2020 11:37 am ]
Заглавие:  Re: смартфон както си трябва :)

ToHu написа:
да е правил какво ? Имахме един продукт преди 100 години с Z80, не съм го разработвал аз но съм го дописвал, но тогава всичко беше чист ASM без файлови системи и подобни.


Бе за чип ясно :D Нали за фпга ставаше въпрос последно...

Автор:  ToHu [ Сря Май 13, 2020 12:06 pm ]
Заглавие:  Re: смартфон както си трябва :)

Aaaaaa хмм май имаше, чакай сега да не се бъркам, ама на времето си играех с един кит и съм почти сигурен че имаше и z80, 8051 имаше със сигурност защото го пробваха, и powerPC имаше някакво ядро ако не ме лъже паметта, може да се погледне по IP на ксайлинкс, не знам обаче какви са политиките за използване за 8 битовите/

Автор:  Bai Ui [ Сря Май 13, 2020 1:51 pm ]
Заглавие:  Re: смартфон както си трябва :)

Н'бабане Гт'муан'га написа:
Че никой друг досега ли не е правил Z80 ?? В opencores например?


Bai Ui написа:
Има в open cores един Z80 проект но не ми хареса как е организиран, освен това е писан на Verilog а мен ме няма много там


ToHu написа:
Aaaaaa хмм май имаше, чакай сега да не се бъркам, ама на времето си играех с един кит и съм почти сигурен че имаше и z80, 8051 имаше със сигурност защото го пробваха, и powerPC имаше някакво ядро ако не ме лъже паметта, може да се погледне по IP на ксайлинкс, не знам обаче какви са политиките за използване за 8 битовите/


Някои ИП-та са затворени (проприетари), не може да им видиш или пипнеш кода и ако не работи добре или не може да го интегрираш както искаш тогава целият проект отива на кино. Търсил съм, надявах се да има нещо, което даже да използвам като темплейт за моят проект но няма. Което пък ще направи моят процесор популярен :-).

Страница 2 от 3 Часовете са според зоната UTC + 1 час [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/