Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - Shaos

1
Tools of the trade / Re: Wire bonders
MOSIS prices are confidential, but you can always request an automatic quote from their website and then figure out pricing ;)

In my case it was cheapest option - 0.5um CMOS 2x2 mm * 40 with partial packaging into DIP40 :)

P.S. The only problem is they don't bother even do DRC (at least with MOSIS scalable CMOS publicly available rules) - so it's 100% your responsibility that your layouts are doable (they only check automatically for density rule because low density of metal layers and polysilicon may hurt neighboring designs on the same silicon wafer).

P.P.S. Antenna rule violations may burn only your transistors during manufacturing (not neighboring designs) so they don't check it either...
2
Tools of the trade / Re: Wire bonders
BTW my 1st batch of CMOS chips was manufactured and mostly working ;)

Currently I'm preparing "silicon proven" public domain library of CMOS building blocks for Magic open source software that I used to design this chip...
3
Tools of the trade / Wire bonders
Anybody worked with wire bonding machines? Any pros and cons? I have a desire to buy one (it could be found under $10K) to make custom wire bonding for myself and other hobbyists or small businesses (packaging silicon dies into IC packages)

P.S. I'm currently working on my own CMOS chip to be produced by MOSIS and see that IC packaging is an issue (too expensive to be practical for low qty manufacturing)
5
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
Also I tested it with battery power - circuit eats about 40 mA
CR2025 is dropping voltage below 2V less than in 1 minute even though it should be 160 mAh
But pack of 2 AA alkaline batteries are working well - with 1700 mAh it should last about 42 hours theoretically...
6
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
I rewrote XORLib a little to make video buffer unsigned char* instead of int* with switching DMA+SPI from 32-bits to 8-bits operations - it's strange, but it became a little faster and now this video memory representation is compatible with composite mode CGA ;)

This is simple circuit is required to generate black and white NTSC video with XORLib:



Capacitor 10 uF should still be there and must be ceramic!

For color NTSC video internal resonator is not good enough, so it has to be external crystal 14.31818 MHz with 2 additional capacitors:



Then you can add reset button and up to 8 buttons of controls and also it could be 2 audio outputs (not yet tested)...

P.S. PICKit3 connector:
1 - MCLR (pin 1)
2 - 3.3V (pin 13)
3 - GND (pin 8)
4 - PGED1 (pin 4)
5 - PGEC1 (pin 5)
6 - Not connected

P.S. On April 27th I simplified circuits a little (by removing resistor and capacitor from AVSS and AVDD - schematics above are modified already) and tested them on a breadboard without and with the crystal (schematics now reflected actual values of components):
7
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
Another demo - rotating color bars in 160x200 with 60 FPS :)
Code: [Select]
/* coloroto.c - A.A.Shabarshin (April 2015) */

#include "xorlib.h"

/* Lets keep it in RAM */
unsigned char sinus[90] = { 0 , 4 , 8 , 13 , 17 , 22 , 26 , 31 , 35 , 40 , 44 , 48 , 53 ,
  57 , 61 , 66 , 70 , 74 , 79 , 83 , 87 , 91 , 95 , 100 , 104 , 108 , 112 ,
  116 , 120 , 124 , 128 , 131 , 135 , 139 , 143 , 146 , 150 , 154 , 157 ,
  161 , 164 , 167 , 171 , 174 , 177 , 181 , 184 , 187 , 190 , 193 , 196 ,
  198 , 201 , 204 , 207 , 209 , 212 , 214 , 217 , 219 , 221 , 223 , 226 ,
  228 , 230 , 232 , 233 , 235 , 237 , 238 , 240 , 242 , 243 , 244 , 246 ,
  247 , 248 , 249 , 250 , 251 , 252 , 252 , 253 , 254 , 254 , 255 , 255 ,
  255 , 255 , 255 };

/* Macros for faster calculations */
#define SIN(x) ((x<90)?sinus[x]:((x<180)?sinus[179-x]:((x<270)?(-sinus[x-180]):(-sinus[359-x]))))
#define COS(x) ((x<90)?sinus[89-x]:((x<180)?(-sinus[x-90]):((x<270)?(-sinus[269-x]):sinus[x-270])))

int div10[160]; /* to make fast division by 10 */

int main()
{
 register int x,b,c,r,a=0;
 int y,*p,s=60;
 unsigned long f;
 
 xoinit(XOMODE_160x200_COL15); /* gray colors 5 and 10 are identical */

/*
 0 - Default composite mode colors
 1 - Similar to CGA composite mode colors
 2 - Similar to Tandy composite mode colors
 3 - Similar to PCjr composite mode colors
*/
 xopalette(1);

 /* fill array for faster division by 10 */
 for(c=0;c<160;c++) div10[c] = c/10;
 
/*
 X' = X*COS(a) - Y*SIN(a) + X0
 Y' = X*SIN(a) + Y*COS(a) + Y0
*/
 while(1)
 {
  /* it takes about full frame (1/60 sec) with -O1 option: */
  for(y=0;y<200;y++) /* go through every horizontal line */
  {
  p = xodirectline(y); /* get pointer to the videomemory of line Y */
  if(!p) break;
  b = 80 - (((y-100)*SIN(a))>>9);
  for(x=0;x<160;x++) /* go through every pixel in this line */
  {
    /* we need only X' to get color, so we will ignore Y' for now */
    c = (((x-80)*COS(a))>>8) + b;
    if(c<0 || c>=160) c = 5; /* lets be gray outside of the color chart */
    else c = div10[c]; /* calculate color value - it has to be from 0 to 15 */
    r = (!(x&7))?c:((r<<4)|c); /* append integer with next pixel */
    if((x&7)==7) p[x>>3] = r; /* copy assembled integer into video memory */
  }
  }
  if(++a==360) a = 0; /* rotate and check that it is in the range */
#if 1
  /* wait some number of frames in the beginning and then no wait */
  if(s>1)
  {
    f = xoframes() + (255-sinus[89-s--]);
    while(xoframes() < f);
  }
#endif
 }

 return 0;
}

http://https://www.youtube.com/watch?v=8ZoB1-8BEgk
9
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
OK, now https://github.com/shaos/xorlib has everything to start playing with - all platform specific code is hidden inside xorlib.c and programmer may use a simple API to communicate with the library (pixels and lines are working only as 1-bit for now). Both 8MHz and 14.31818MHz setups may render 320x200 and 640x200 graphics, but color modes are available only with 14.31818MHz crystal (internals of the library are checking macro PIC32NTSCQ to enable modes with color burst).

Simplest program is HelloWorld of course :)
Code: [Select]
/* hello.c - A.A.Shabarshin (April 2015) */

#include "xorlib.h"

int main()
{
 xoprintf("Hello, World!");
 return 0;
}
So as you can see 1st thing that user must do is to include "xorlib.h". Then it has to be xoprintf or xoinit (to setup some specific video mode) - see a little bit more complicated program that generates color bars as mentioned on the previous page:
Code: [Select]
/* colors.h - A.A.Shabarshin (April 2015) */

#include "xorlib.h"

int main()
{

 int i,y,*p;

 xoinit(XOMODE_160x200_COL15); /* gray colors 5 and 10 are identical */

/*
 0 - Default composite mode colors
 1 - Similar to CGA composite mode colors
 2 - Similar to Tandy composite mode colors
 3 - Similar to PCjr composite mode colors
*/
 xopalette(0);

 for(y=0;y<200;y++)
 {
  p = xodirectline(y);
  if(y<2||y>=198)
  {  /* white frame */
      for(i=0;i<20;i++) p[i] = 0xFFFFFFFF;
      continue;
  }
  p[0] = 0xF0000000;
  p[1] = 0x00111111;
  p[2] = 0x11112222;
  p[3] = 0x22222233;
  p[4] = 0x33333333;
  p[5] = 0x44444444;
  p[6] = 0x44555555;
  p[7] = 0x55556666;
  p[8] = 0x66666677;
  p[9] = 0x77777777;
  p[10] = 0x88888888;
  p[11] = 0x88999999;
  p[12] = 0x9999AAAA;
  p[13] = 0xAAAAAABB;
  p[14] = 0xBBBBBBBB;
  p[15] = 0xCCCCCCCC;
  p[16] = 0xCCDDDDDD;
  p[17] = 0xDDDDEEEE;
  p[18] = 0xEEEEEEFF;
  p[19] = 0xFFFFFFFF;
 }

 return 0;
}

P.S. On April 15 mode 256x200 (and 128x200) was removed from the XORLib...

P.P.S. On April 17 mode XOMODE_160x200_COL16 was renamed to XOMODE_160x200_COL15 because in reality it's only 15 colors (2 greys are identical).
12
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
[quote author="Shaos"]Finally I got 16 solid colors without holes and glowing - source code also attached[/quote]

Interesting thing that by moving color burst I got color charts (for colors generated by patterns 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110 and 1111) very similar to CGA composite mode:
[attachment=3]
similar to PCjr composite mode:
[attachment=2]
and even similar to Tandy 1000 composite mode:
[attachment=1]
See reference color charts:
[attachment=0]
14
Project logs / Re: nedoCPU-32 - board for PIC32 in DIP28
Finally I got 16 solid colors without holes and glowing - source code also attached

[attachment=2]
[attachment=1]

P.S. Calculated color values with mapping to EGA colors:
Code: [Select]
0  - 4   4   12   #04040C H=... S=67  V=5   0000  [0] Black
1  - 1  19  159  #01139F H=233 S=99  V=62  0001  [1] Blue
2  - 70  2  172  #4602AC H=264 S=99  V=67  0010  [5] Magenta
3  - 1  86  255  #0156FF H=220 S=100 V=100 0011  [9] Bright Blue
4  - 102 15  15  #660F0F H=0  S=85  V=40  0100  [4] Red
5  - 122 133 137  #7A8589 H=... S=11  V=54  0101  [7] White (Light Gray)
6  - 249 49  131  #F93183 H=335 S=80  V=98  0110 [12] Bright Red
7  - 219 118 254  #DB76FE H=285 S=54  V=100 0111 [13] Bright Magenta
8  - 0  99  34  #006322 H=141 S=100 V=39  1000  [2] Green
9  - 1  207 133  #01CF85 H=158 S=100 V=81  1001  [3] Cyan
10 - 127 133 125  #7F857D H=... S=6  V=52  1010  [8] Gray
11 - 15  188 253  #0FBCFD H=196 S=94  V=99  1011 [11] Bright Cyan
12 - 138 185 54  #8AB936 H=82  S=71  V=73  1100  [6] Brown (Dark Yellow)
13 - 102 253 90  #66FD5A H=116 S=64  V=99  1101 [10] Bright Green
14 - 253 182 74  #FDB64A H=36  S=71  V=99  1110 [14] Yellow
15 - 220 217 202  #DCD9CA H=... S=8  V=86  1111 [15] Bright White

( ! ) Fatal error: Uncaught exception 'Elk_Exception' with message 'Please try again. If you come back to this error screen, report the error to an administrator.' in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
( ! ) Elk_Exception: Please try again. If you come back to this error screen, report the error to an administrator. in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
Call Stack
#TimeMemoryFunctionLocation
10.01592454768session_write_close ( )...(null):0
20.01622586368ElkArte\sources\subs\SessionHandler\DatabaseHandler->write( )...(null):0
30.01622587144Database_MySQL->query( ).../DatabaseHandler.php:119
40.06152725888Database_MySQL->error( ).../Db-mysql.class.php:273