МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Предложения новых проектов для Марсоходов.

Предложения новых проектов для Марсоходов. 3 года 3 мес. назад #6291

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17

alman пишет:

Chaosorg пишет: Давайте предлагать в этой теме идеи новых проектов для марсоходов, в которых проявлялось бы практическое преимущество FPGA.


Практическое преимущество FPGA это простота отладки и создания прототипа.

прототипа чего именно? вот в этой теме и перечисляем. Кроме того, есть еще преимущества FPGA - возможность обновлять устройство и возможность снижать стоимость устройства для неласковых проектов, где нецелесообразно то, о чем Вы пишите далее

alman пишет:

Chaosorg пишет: :) пишите - буду обновлять шапку темы

Предлагаю начать проект "пластина Марсохода" - multi-project wafer с проектами для Марсоходов.

Ни один из энтузиастов-любителей не имеет возможности реализовать свою схематику в виде микросхемы. Идея в том, чтобы поделить кремниевую пластину между проектами. В таком случае риски и стоимость делятся между всеми участниками проекта. Причём, я не предлагаю сегодня или завтра начинать производство. Предлагаю быть готовым к такому раскладу в ближайшие годы.


Я так понимаю, что подобная такая тема будет просто выборкой проектов со схожими интерфейсами из растущего здесь списка? Наверное стоит подождать пока он разрастется. Те проекты, что есть сейчас, если популярны, то уже реализованы кем-то и более рентабельно на чипах с минимально достаточной площадью, где ему не нужны никакие соседи.

FPGA успешно решает задачу удешевления такой платы как Марсоход, на которой один человек будет делать SoC, а другой осциллограф, а третий Spectrum, причем все они будут иногда закачивать туда и что-то еще. Черта стоимости, после которой становится выгодно иметь любительский осциллограф, который иногда позволяет играть в ретро игры, уже пересечена.

В этой теме предлагаю ограничить аппаратные изменения относительно уже существующих плат марсоходов только необходимостью новых шилдов, для которых, кстати, есть отдельная тема, которая не принесла особой пока пользы из-за отсутствия какого-то итогового списка "кто что хочет", как мне кажется. После разрастания темы свыше некоего объема ее перестают читать сверху донизу.

шапку обновил marsohod.org/forum/voprosy-o-plate-marso...ov?limitstart=0#6231

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chaosorg.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6340

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
commons.wikimedia.org/wiki/File:N-body_Simulation.ogv

Попробовать упрощенное моделирование 2-мерной задачи на ПЛИС (с выводом на монитор), и сравнить с ПК.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6371

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Leka пишет: упрощенное моделирование 2-мерной задачи

Арифметика простая, написал на Си для ПК (простая графика с OpenGL), и целый день разбирался, почему всегда 4 "планеты" из сотни крутятся несколько иначе... Оказалось - забыл подключить <math.h> ...
Подключил, "планеты" прикольно разлетаются (неупругое столкновение еще не написал).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6375

  • Chaosorg
  • Chaosorg аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 311
  • Спасибо получено: 17
наверное, раз math, то там не только сложения, но и умножения как минимум, а может и корень?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6376

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Умножения есть, конечно, но это не страшно, если хватит встроенных умножителей.
Хуже, что есть корень (точнее, надо считать y=x**-1.5), и надо будет делать длинный конвейер.
Но другие задачи моделирования физики еще сложнее для реализации в ПЛИС, поэтому хочу пока эту попробовать. Кстати, скачал и поигрался с Algodoo. Вот такое бы в ПЛИС реализовать...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6426

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
"Планеты" быстро надоели, поэтому поэкспериментировал на ПК со симуляцией "земной" 2d физики, с прицелом на реализацию в ПЛИС. Основа - упруго деформируемые тела, представленные множеством "шариков", соединенных "пружинками". Для приемлемого быстродействия общее число "шариков" д/б ограничено в пределах нескольких тысяч, иначе не хватит ресурсов ПЛИС. Сейчас отлаживаю программу на Си, потом уже оценю сложность переноса на ПЛИС...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6427

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Leka пишет: поэкспериментировал на ПК

Кстати, в каком виде результаты выкладывать?
*.exe смысла не имеет из-за соображений безопасности.
Исходники Си? Но у всех разные библиотеки и тп.
У меня, например, для графики VC98 (от Ynicky) + openGL (уже забыл, как на комп попал).
Пример для "планет":
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>
#define NMAX 1000
#define PMAX 10000
int N=10;
int K=3;
int T=1;
int P=1000;
int Width=1000, Height=800;
double K1,K2,K3,V1;
double R[NMAX], VX[NMAX], VY[NMAX], XX[NMAX], YY[NMAX];
double X[PMAX], Y[PMAX]; 
int L[NMAX], Z[NMAX];
int T2;

void nbodyinit( ) {
static int i;
	K1=1.0*K;
	T2=T*K*K;
	V1=1/sqrt(K1);	
	R[0]=3.0; 
	VX[0]=0;
	VY[0]=0;		
	XX[0]=0;
	YY[0]=0;
	L[0]=0;	
	Z[0]=1;	
	for(i=1;i<N;i++) {
		R[i]=(rand()%1000+1)*0.001; 
		VX[i]=(rand()%1000+1)*0.0003*V1;
		VY[i]=(rand()%1000+1)*0.0003*V1;		
		XX[i]=(rand()%400-200)*K1;
		YY[i]=(rand()%400-200)*K1;
		if(XX[i]<0) VY[i]=-VY[i];	
		if(YY[i]>0) VX[i]=-VX[i];
		L[i]=i; 		
		Z[i]=1;		
	}
}

void nbodystep( ) {
static double x,y,ai,aj,r1,r2,m,mi,mj;	
static int i, j;
	for(i=0;i<(N-1);i++) for(j=i+1;j<N;j++) {	
		x=XX[j]-XX[i];
		y=YY[j]-YY[i];		
		r1=R[i]+R[j];		
		r2=x*x+y*y;
		if(Z[i] && Z[j]) {
			if( r2 > r1*r1 ) {
				r1=1/sqrt(r2);
				ai=R[j]*r1; ai=ai*ai*ai;
				VX[i]+=ai*x;
				VY[i]+=ai*y;
				aj=R[i]*r1; aj=aj*aj*aj; 
				VX[j]-=aj*x;
				VY[j]-=aj*y;				
			} else { 
				L[j]=L[i]; 			
				Z[j]=2; 
			}
		}	
	}
	for(i=0;i<N;i++) if(Z[i]) { 
		XX[i]+=VX[i];
		YY[i]+=VY[i];	
	}
	for(i=N-1;i>=0;i--) if(Z[i]==2) { 
		j=L[i];
		mi=R[i]; mi=mi*mi*mi;
		mj=R[j]; mj=mj*mj*mj;
		m=mi+mj;
		VX[j]=(VX[i]*mi+VX[j]*mj)/m;
		VY[j]=(VY[i]*mi+VY[j]*mj)/m;			
		XX[j]=(XX[i]*mi+XX[j]*mj)/m;
		YY[j]=(YY[i]*mi+YY[j]*mj)/m;		
		R[j]=pow(m,1.0/3.0);		
		Z[i]=0;				
	}
}

void idle( void ) {
	nbodystep( );	
	glutPostRedisplay( );
}

void Display( void ) {
	static int i, t, p;	
	static double k,x,y;
	glClearColor( 0, 0, 0, 1 );
	glClear( GL_COLOR_BUFFER_BIT );
	glEnable(GL_POINT_SMOOTH);
	glColor3f( 0.5, 0.5, 0.5 );
	glPointSize( 1 );	
	for(i=0;i<P;i++) {
		glBegin( GL_POINTS );
		glVertex2f( X[i], Y[i] );
		glEnd( );			
	}
	t=(t+1)%T2;
	k=1/K1;
	glColor3f( 1, 1, 0 );
	for(i=0;i<N;i++) {
		if(i == 1) glColor3f( 0, 1, 0 );	
		if(Z[i]) { 
			glPointSize( 2.0+2.0*R[i] );
			glBegin( GL_POINTS );
			x=XX[i]*k+(Width/2); y=YY[i]*k+(Height/2);
			glVertex2f( x, y );
			if((t==0)&&(x>0)&&(x<Width)&&(y>0)&&(y<Height))		
				{ p=(p+1)%P; X[p]=x; Y[p]=y; }
			glEnd( );		
		}
	}			
	glFlush( );
}

void Reshape( int w, int h ) {
	static int i;
	Width = w; Height = h;
	glViewport( 0, 0, w, h );
	glMatrixMode( GL_PROJECTION );
	glLoadIdentity( );
	glOrtho( 0, w, 0, h, -1, 1 );
	for(i=0;i<P;i++) { X[i]=0; Y[i]=0; }
}

void Keyboard( unsigned char key, int x, int y ) {
	const char ESCAPE = '\033';
	if( key == ESCAPE ) exit( 0 ) ;
}

void main( int argc, char* argv[ ] ) {
	static int i,m;
	i=argc; while(i--) {
		if(argv[i][0]=='n') sscanf(argv[i],"n%d", &N);
		if(argv[i][0]=='k') sscanf(argv[i],"k%d", &K);
		if(argv[i][0]=='t') sscanf(argv[i],"t%d", &T);
		if(argv[i][0]=='p') sscanf(argv[i],"p%d", &P);
	}	
	printf("N=%d\n",N);
	printf("K=%d\n",K);	
	printf("T=%d\n",T);
	printf("P=%d\n",P);
	nbodyinit( );
	glutInit( &argc, argv );
	glutInitDisplayMode( GLUT_RGB );
	glutInitWindowSize( Width , Height );
	glutInitWindowPosition( 50, 50 );		
	glutCreateWindow( "Test" );
	glutDisplayFunc( Display );
	glutReshapeFunc( Reshape );
	glutKeyboardFunc( Keyboard );
	glutIdleFunc( idle );
	glutMainLoop( );
}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6428

А где <GL/glut.h>?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6429

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
glut.h от openGL, его надо как-то установить в систему, включая glut32.dll и тп.
Как - забыл, попробую вечером вспомнить, либо по инструкции с opengl.org.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Предложения новых проектов для Марсоходов. 3 года 2 мес. назад #6430

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
grafika.me/node/96
Тут описано, например. Еще на на сайте opengl.org.
Но скомпилированная библиотека годится только для старой ОС (на win10, например, созданные в winXP программы не работают правильно - квадратные "точки" вместо круглых, и тп).

Вроде как glut давно уже не поддерживается, и замена - freeglut...

freeglut вроде как удобнее (меньше файлов):
www.transmissionzero.co.uk/software/freeglut-devel/
попробовал вариант для MSVC, работает. В zip-архиве есть инструкция.

В исходнике "планет" "glut.h" надо заменить на "freeglut.h", больше в программе ничего менять не надо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.
Время создания страницы: 0.204 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Вопросы о плате Марсоход Предложения новых проектов для Марсоходов.