
Jednak chyba spróbuję obsłużyć ten RAM, który znalazłem, bo teoretycznie powinien działać na 3,3 V. Gorzej, że jest adresowany po jednym bicie xD Więc trochę cykli na sam odczyt zmarnuję. Na razie go rozkminię i pewnie napiszę ten procek od nowa, bo na razie to tak na brudno pisałem, nie dzieliłem na moduły (no bo jednak HDL a zwykłe programowanie to się troszkę różni i nie mam jeszcze wyczucia jak to dobrze podzielić). No i tego ramu jest 32 kB, więc to i tak mnie zmusi do zmiany architektury nieco, bo pisałem pod 256 B, więc pewnie zmniejszę liczbę rejestrów, a dodam stos i procedury poza zwykłymi jumpami.

Jednak chyba spróbuję obsłużyć ten RAM, który znalazłem, bo teoretycznie powinien działać na 3,3 V. Gorzej, że jest adresowany po jednym bicie xD Więc trochę cykli na sam odczyt zmarnuję. Na razie go rozkminię i pewnie napiszę ten procek od nowa, bo na razie to tak na brudno pisałem, nie dzieliłem na moduły (no bo jednak HDL a zwykłe programowanie to się troszkę różni i nie mam jeszcze wyczucia jak to dobrze podzielić). No i tego ramu jest 32 kB, więc to i tak mnie zmusi do zmiany architektury nieco, bo pisałem pod 256 B, więc pewnie zmniejszę liczbę rejestrów, a dodam stos i procedury poza zwykłymi jumpami.

@sens: ok, doprowadzenie tego RAMu do działania okazało się dużo prostsze niż myślałem. Poszło za pierwszym razem. Może zrobię jakiś pośredniczący kontroler tego RAMu, żeby nie czytać po jednym bicie.

Jednak chyba spróbuję obsłużyć ten RAM, który znalazłem, bo teoretycznie powinien działać na 3,3 V. Gorzej, że jest adresowany po jednym bicie xD Więc trochę cykli na sam odczyt zmarnuję. Na razie go rozkminię i pewnie napiszę ten procek od nowa, bo na razie to tak na brudno pisałem, nie dzieliłem na moduły (no bo jednak HDL a zwykłe programowanie to się troszkę różni i nie mam jeszcze wyczucia jak to dobrze podzielić). No i tego ramu jest 32 kB, więc to i tak mnie zmusi do zmiany architektury nieco, bo pisałem pod 256 B, więc pewnie zmniejszę liczbę rejestrów, a dodam stos i procedury poza zwykłymi jumpami.

https://i.imgur.com/Gti3rhk.jpg
Mój CPU wygląda już coraz sensowniej. Już obsługuje instrukcje MOV, MVI, ADD, SUB, INC, DEC, HLT (to wszystko bazuje troszkę na zestawie instrukcji Intela 8080). Zrezygnowałem z mnożenia, bo boję się, że mi miejsca nie wystarczy na Spartanie.
Na płytce z FPGA zielone ledziki wskazują na stan magistrali danych, dip switch pozwala wybrać rejestr, którego stan w danej chwili jest pokazywany na ledach pod ledami ze stanem program countera.
Po lewej różne ledy od statusu procka (LCK - taki gówno-debouncing przycisków, FTC - flaga fetch, że już pobrał instrukcję/dane, EXE - flaga, że wykonał już daną instrukcję, flaga HLT - że procesor się zatrzymał, INS - czy obecny bajt na magistrali to dane czy instrukcja, ZF - zero flag).
Obecnie pracuję nad jumpami, żeby w końcu był kompletny w sensie Turinga xD

@sens: Tak na razie wyglądają opkody https://i.imgur.com/gLks5Er.png
Ale chyba poprzenoszę je tak, żeby zmieścić się do 0x3f, wtedy instrukcje będą zajmowały max 6 bitów, co mam nadzieję uprości dekodowanie i zwolni mi troszkę miejsca na inne ficzery

https://i.imgur.com/Gti3rhk.jpg
Mój CPU wygląda już coraz sensowniej. Już obsługuje instrukcje MOV, MVI, ADD, SUB, INC, DEC, HLT (to wszystko bazuje troszkę na zestawie instrukcji Intela 8080). Zrezygnowałem z mnożenia, bo boję się, że mi miejsca nie wystarczy na Spartanie.
Na płytce z FPGA zielone ledziki wskazują na stan magistrali danych, dip switch pozwala wybrać rejestr, którego stan w danej chwili jest pokazywany na ledach pod ledami ze stanem program countera.
Po lewej różne ledy od statusu procka (LCK - taki gówno-debouncing przycisków, FTC - flaga fetch, że już pobrał instrukcję/dane, EXE - flaga, że wykonał już daną instrukcję, flaga HLT - że procesor się zatrzymał, INS - czy obecny bajt na magistrali to dane czy instrukcja, ZF - zero flag).
Obecnie pracuję nad jumpami, żeby w końcu był kompletny w sensie Turinga xD

Wgl to wkurwiają mnie trochę nuworysze, co tam srają wypierdami, że uu dynamiczne typowanie to zło, hurr durr tylko statyczne typowanie xD Jeszcze niektórzy wgl piszą takie bzdury, że w Pythonie np. powinni wprowadzić przymusowe statyczne typy i dynamicznie typowane języki to się nie nadają do większych projektów. Pizdy takie, co za nich wszystko kompilator musi sprawdzać, a jakby napisali hello worlda w C to i tak by najebali 5 segfaultów i mieliby wycieki pamięci.

@ajdajzler: no co jak co, ale list comprehensions to jest złoto. Do pętli też nie wiem, co masz, przecież dużo wygodniej się iteruje po elementach kolekcji niż po indeksach. Co do dynamicznego typowania, to naprawdę nie jestem w stanie wskazać, kiedy mi ostatnio sprawiło jakiś problem, a piszę głównie w pytongu. Piszę też dużo w C i diametralnie różne są to języki i oba są zajebiste i nie widzę za bardzo sensu jebania po tym, że jeden jest dynamiczny i ma w kurwę dynamicznych feature'ów, a drugi jest małą nakładką na asemblera i wszystko trzeba w nim robić ręcznie. Oba się bardzo ładnie uzupełniają. Potrzebujesz ścisłej kontroli typów? Wybierz inny język xD

Wgl to wkurwiają mnie trochę nuworysze, co tam srają wypierdami, że uu dynamiczne typowanie to zło, hurr durr tylko statyczne typowanie xD Jeszcze niektórzy wgl piszą takie bzdury, że w Pythonie np. powinni wprowadzić przymusowe statyczne typy i dynamicznie typowane języki to się nie nadają do większych projektów. Pizdy takie, co za nich wszystko kompilator musi sprawdzać, a jakby napisali hello worlda w C to i tak by najebali 5 segfaultów i mieliby wycieki pamięci.

Ech, robiłem swój 8-bitowy procesor w verilogu na 4 rejestry, bo nie stać mnie na FPGA większe niż 1400 LUT i nawet całkiem nieźle mi to szło, a tu już siódma i do roboty trzeba iść, eh. Pewnie dopiero w weekend do tego wrócę. Jeszcze, żeby te schujałe środowiska do programowania tego były na cokolwiek innego niż windows. Brak otwartej platformy do syntezy to jest ból. Coś tam niby jest, ale i tak każdy producent ma swoje gówniane toolchainy rodem z jakiegoś borlanda.

Ech, robiłem swój 8-bitowy procesor w verilogu na 4 rejestry, bo nie stać mnie na FPGA większe niż 1400 LUT i nawet całkiem nieźle mi to szło, a tu już siódma i do roboty trzeba iść, eh. Pewnie dopiero w weekend do tego wrócę. Jeszcze, żeby te schujałe środowiska do programowania tego były na cokolwiek innego niż windows. Brak otwartej platformy do syntezy to jest ból. Coś tam niby jest, ale i tak każdy producent ma swoje gówniane toolchainy rodem z jakiegoś borlanda.

@sens: heh w sumie to 6-7 rejestrów, bo jeszcze jest program counter i dojdą flagi i być może stack pointer przecież.

Ech, robiłem swój 8-bitowy procesor w verilogu na 4 rejestry, bo nie stać mnie na FPGA większe niż 1400 LUT i nawet całkiem nieźle mi to szło, a tu już siódma i do roboty trzeba iść, eh. Pewnie dopiero w weekend do tego wrócę. Jeszcze, żeby te schujałe środowiska do programowania tego były na cokolwiek innego niż windows. Brak otwartej platformy do syntezy to jest ból. Coś tam niby jest, ale i tak każdy producent ma swoje gówniane toolchainy rodem z jakiegoś borlanda.

@sens: żeby było śmiesznej RAM symuluję mikrokontrolerem. Znalazłem jakieś antyczne kości, które teoretycznie by pasowały do tego projektu, ale są na 5V i byłoby więcej pierdolenia niż pożytku, bo na mcu mogę sobie od razu coś tam wrzucić, a tu musiałbym wymyślić sposób na ładowanie programu do pamięci, co i tak pewnie skończyłoby się użyciem mikrokontrolera.

Ech, robiłem swój 8-bitowy procesor w verilogu na 4 rejestry, bo nie stać mnie na FPGA większe niż 1400 LUT i nawet całkiem nieźle mi to szło, a tu już siódma i do roboty trzeba iść, eh. Pewnie dopiero w weekend do tego wrócę. Jeszcze, żeby te schujałe środowiska do programowania tego były na cokolwiek innego niż windows. Brak otwartej platformy do syntezy to jest ból. Coś tam niby jest, ale i tak każdy producent ma swoje gówniane toolchainy rodem z jakiegoś borlanda.

Jedno, co mnie wkurwia w macbookach to te zajebane porty usb-c. W sensie same w sobie nie są złe - są dwustronne, ładnie się wklikują, tylko kurde mało co ma taką wtyczkę, więc muszę używać przejściówek. A ponieważ nie widzi mi się płacić 160 zł za dobrą przejściówkę, to kupiłem sobie 4 za jakieś 15 zł. No i one się ruszają, wcale się ładnie nie wklikują, już jedna mi się wygięła, eh.

To były dwa ciężkie tygodnie. Był raport do napisania. W poniedziałek okazało się, że ASAP jest jeszcze jeden do piątku hehe. Raporty na kilkadziesiąt stron, zbieranie danych, robienie wykresów, kończenie bibliotek na ostatnią chwilę, siedzenie nad jakimiś gównianymi bugami z wypranym mózgiem o 2. w nocy, żeby zdążyć. Ale już tylko dwa wykresy do końca. Jeden raport już został pozytywnie przyjęty, drugi zaraz skończę :)

jezu to naprwadę tak jest że w polsce normą jest przepracowywanie ponad etat?
@ajdajzler: dziś w pracy byłem 3 godziny i realnie robiłem coś pożytecznego może przez 1,5. Zwykle siedzę w biurze koło sześciu, więc jestem w stanie psychicznie znieść taki zapierdol raz na pół roku.
Z tym że podejrzewam, że to mocno zależy od firmy i zakładam, że w większości jednak trzeba odjebać te 8 godzin dziennie, a w niektórych się robi jakieś chore nadgodziny.

To były dwa ciężkie tygodnie. Był raport do napisania. W poniedziałek okazało się, że ASAP jest jeszcze jeden do piątku hehe. Raporty na kilkadziesiąt stron, zbieranie danych, robienie wykresów, kończenie bibliotek na ostatnią chwilę, siedzenie nad jakimiś gównianymi bugami z wypranym mózgiem o 2. w nocy, żeby zdążyć. Ale już tylko dwa wykresy do końca. Jeden raport już został pozytywnie przyjęty, drugi zaraz skończę :)