visitors:
4 guests

  

DKStation

 -- Poppeman @ 1084982160
 
 

watch
 
link
 
edit
 
referrers
 
[edited 3 times; latest by Poppeman on 1085198400 -- highlight modified text]
left-click to view full-sized 264x284 image
last modified on 1166229076
left-click to view full-sized 640x480 image
last modified on 1166229076
left-click to view full-sized 300x400 image
last modified on 1166229076
left-click to view full-sized 263x282 image
last modified on 1166229076
Even though me and DrPetter have been a bit inactive, it doesn't mean we haven't done anything


Used four Xilinx 95108 and six Xilinx 9572 CPLD's + loads of other minor stuff.

Some specifications:
8-bit based
Very very weird RISC design

8MHz system clock (about 1.25 MIPS)
16kB program EPROM (used 32kB EPROMs though and had a switch to toggle between high/low part of EPROM -> two programs/EPROM)
8kB RAM
8kB Video-RAM (4kB * 2, double buffered graphics)
128x128 graphics, 4 greys (which can be set to 16 different intensities)
4 sound channels (square, sawtooth, triangle, noise)
2 TAC-2 joysticks for the ultimate retro feeling

+anything I forgot

We (and one more) have been developing a console as a school project. It was totally overkill (we could have done an ordinary remote control if we wanted) but we did it because it was fun. The first image is a screenshot from the emulator we developed the software on. It is displaying some rasterbars behind an image. Some interesting things about that is that the rasterbars has twice as high resolution as the image, and all in all there's 16 colors when it can actually only display 4 at a time. The second and third are actual photos of the beauty (running an older version of the copper bars demo)

The last shot is also from the emulator and is actually the only playable game that was completed, made by DrPetter. _Very_ hard though


Here's the emulator (updated with an open file dialog), assembler, "tool", two trackers and a few examples. Download

Add a comment to DKStation
Or use this simplified quick-reply form. You do not need to register to post comments. Just make up any name. You should also enter something in the password field so you can edit your comment later.
Name:   Password (optional)
  Comment: 
 
View Page: 1 · 2
 View DrPetter's Profile

Registered: 1043891160
Comments: 508
Posts: 13
Timezone: GMT (Sweden)
Gateway: skrivare.liu.se
DrPetter
19 May 2004 6:39 pm
#1
To clarify a bit: We didn't use any "real" cpu or anything like that, it's all programmable logic devices coded in vhdl (plus a bunch of 74xx-chips to handle basic logic and stuff).
When they're all programmed though, they act as an 8-bit computer with cpu, alu, rom, ram, video, audio and all that. (of course the memory is made up of standard chips... EPROM and SRAM)
Some development tools were also crafted, including an emulator, macro assembler and tracker


There are high res images of an early version here:
wip2_front.jpg
wip2_back.jpg

A few chips are missing in those pictures, most notably the video system.
The final version is way more swamped (as is barely seen in the low-res images in the main post).

(Poppeman: "channels", not "channles", I'll kill you!
)
edited on 19 May 2004 6:42 pm 
 View Poppeman's Profile

Registered: 1045096140
Comments: 138
Posts: 3
Timezone: GMT (Sweden)
Gateway: hu.liu.se
Poppeman
19 May 2004 10:02 pm
#2
There is no "channles"! This is a lie from the infidel DrPetter.
 
 View CGameProgrammer's Profile

Registered: 1044255000
Comments: 1044
Posts: 8
Timezone: GMT
Gateway: 24.225.XXX.XXX
CGameProgrammer
20 May 2004 1:43 am
#3
That's awesome... building your own CPU is cool enough, but you even made a console. I don't like working with hardware myself. Designing circuits in a simulation program is fine, but I hate doing the actual wiring. But I can't imagine how much work went into the whole console, like the bytecode stuff and whatnot. But then I don't have any idea what VHDL is. Can you explain what you did?
 
 View Poppeman's Profile

Registered: 1045096140
Comments: 138
Posts: 3
Timezone: GMT (Sweden)
Gateway: hu.liu.se
Poppeman
20 May 2004 8:19 am
#4
VHDL is what you program the CPLD's with (just like verilog). It stands for VHSIC Hardware Description Language, and VHSIC stands for Very High Speed Integrated Circuit. Note that you can actually do slow stuff in VHDL if you want


Some example code:
quote:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity irdekoder_ver1 is
Port ( data, clk, rst : in std_logic;
q : out std_logic_vector(3 downto 0));
end irdekoder_ver1;

architecture dekoder_ver1 of irdekoder_ver1 is
signal count : std_logic_vector(3 downto 0);
signal state, databit : std_logic_vector(1 downto 0);
signal shiftreg: std_logic_vector(2 downto 0);
begin
decoder:process (clk)
begin
if rising_edge(clk) then
count <= count + 1;
if rst = '1' or (state = "00" and data='0') then
count <= "0000";
end if;
if rst = '1' then
state <= "00";
q <= "0000";
elsif state = "00" then
state <= '0' & data;
elsif state = "01" then
if count = "0111" then
state <= data & '0';
databit <= "00";
end if;
elsif state="10" and count="0111" then
if databit = "11" then
state <= "00";
q <= data & shiftreg(2) & shiftreg(1) & shiftreg(0);
else
shiftreg <= data & shiftreg(2) & shiftreg(1);
databit <= databit + 1;
end if;
end if;
end if;
end process decoder;
end dekoder_ver1;

That piece of VHDL is used for an IR-reciever. We wrote the VHDL for all the CPLD's, wired them up, etc. No pre-made CPU or anything were used. Loads of wiring (as can be seen in the third shot) .... Was fun for the first few minutes


DrPetter also made an assembler, emulator, tracker and a generic tool for converting images and stuff to a more DKStation-friendly format.
edited on 20 May 2004 8:20 am 
 View Poppeman's Profile

Registered: 1045096140
Comments: 138
Posts: 3
Timezone: GMT (Sweden)
Gateway: hu.liu.se
Poppeman
20 May 2004 8:26 am
#5
Yikes, the indentation was messed up and I can't seem to edit that post. Pretty version of that VHDL is here
 
 View nerka's Profile

Registered: 1073813367
Comments: 62
Posts: 2
Timezone: GMT
Gateway: gw.fastlink.lt
nerka
20 May 2004 10:02 am
#6
oh my god!
I tried making a simple thing (don't know how to call it) with two diodes (little lights
), which you connect to a radio and the diods blink along with the music, at school but I didn't understand what I was doing so I made a wooden spoon instead
 
 Registered: 1061920927
Comments: 23
Posts: 0
Timezone: GMT
Gateway: 62.209.XXX.XXX
Ped
20 May 2004 1:19 pm
#7
speechless ... I have big respect from wiring, but also doing assembler/tracker/emulator and also few games is something I'm not anymore up to... it's not like my knowledge is not on par with such task... it's like "hell, this must take several months or year of my time, I'm not going to make it" ... and than I really don't make it.

My full respect goes DrPetter (and others of course too) for pushing that hard. I think "pushing the limits" will be not at all overestimated. (IMHO)
 
 View CGameProgrammer's Profile

Registered: 1044255000
Comments: 1044
Posts: 8
Timezone: GMT
Gateway: 24.225.XXX.XXX
CGameProgrammer
20 May 2004 5:42 pm
#8
Ah, I've never used or even seen a hardware description language. Interesting. BTW you didn't close your quote tag, you had two opening-quote tags instead (you forget the slash for the second). That messed up the formatting and also prevented it from being edited... due to the weird way the edit-comment page works. Anyway I've fixed it.
 
 View Poppeman's Profile

Registered: 1045096140
Comments: 138
Posts: 3
Timezone: GMT (Sweden)
Gateway: hu.liu.se
Poppeman
20 May 2004 6:00 pm
#9
CGP: Actually, I still can't edit that post. Feel free to kill the ugly quote entirely (I have it linked in the post after).

Ped: Actually, we started wiring and writing VHDL in late april. We were very active in the beginning though. We didn't make a few games though.... Only one was working on the prototype in the end (my DDR-clone stopped working and the third member didn't quite finish his tetris clone).

We decided to not make it more complicated than we needed, so it is not micro-programmed at all. All instructions are hard-coded and are pretty low level. There's no ordinary return stack (up to 3 return adress can be stored inside one of the CPLDs) which made it possible to "hide" the program counter entirely from the CPU (less wires, less logic, etc). What it lacks in finesse it makes up in few cycles/instruction

If we were to make it "neatly" with micro-coded instructions, return stack, etc.... Yuck


We'll try to toss up some downloadable stuff, but right now neither of us have any motivation to make them user-friendly enough.
edited on 20 May 2004 6:01 pm 
 View DrPetter's Profile

Registered: 1043891160
Comments: 508
Posts: 13
Timezone: GMT (Sweden)
Gateway: skrivare.liu.se
DrPetter
20 May 2004 6:41 pm
#10
Thanks for the appreciation guys. We did spend a lot of time on this, although not that many weeks... the first two weeks we spent like 10-12 hours a day wiring/coding, and later on staying in the lab from noon to midnight searching for hardware glitches was not out of the ordinary. We even neglected eating on some days

Most of the time out of the lab was usually made up of coding tools and/or thinking about the project, so I guess it was pretty all-consuming

Going through with a project like this on your spare time - spending a few months doing it - would probably be more healthy, but since we had our dead-line, that wasn't an option.
It was great fun though, it's not every day that you get free access to $10.000's worth of equipment and components and given the choice to make anything you want with it

There are some mp3 samples of the music that got written for the machine here:
mp3:s
(tnn is the third group member)
Only hejhopp7 and tetris are "perfectly" emulated, the others are played back in an early version of the tracker which had a higher audio quality than the hardware (16 bits per sample instead of 5).
edited on 20 May 2004 6:44 pm 
View Page: 1 · 2


This page has been viewed 2122 times by 253 unique visitors.

SQL database query time: 1.34 - PHP code execution time: 0.86 - Client-side load time: - Total load time:

Website design, programming, and original graphics are copyright © 2003-2005 Edward Ballard Resnick.
Uploaded images are not the property of this website but of their owners.