亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? test.c

?? SMT365 has 1MBytes of internal memory to store program and fast access buffers (0x00000 -> 0xFFFF
?? C
字號:
//**************************************************************************************************************//
//                                SMT8036_SMT8046 TEST SOFTWARE                                                 //
//**************************************************************************************************************//
//                                                                                                              //
// NOTE1 : to get better performance, make sure that (check in Test.map)                                        //
//		1 - 'Buf' is allocated in internal memory ('Test idram')                                                    //
//		2 - the program runs from the internal memory ('Test Stack')                                                //
// NOTE2 : SMT365 has 1MBytes of internal memory to store program and fast access buffers (0x00000 -> 0xFFFFF). //
// NOTE3 : To display data captured, use 'Test.m' (MATLAB application)                                          //
//	   Add the currect directory into Matlab Path	                                                               //
//                                                                                                              //
//**************************************************************************************************************//
// HISTORY:                                                                                                     //
// Version: 1.2                                                                                                 //
// Date: 13/06/2003                                                                                             //
// Author: Philippe ROBERT                                                                                      //
// Comments: Update to be compatible with SMT370v3 firmware                                                     //
//                                                                                                              //
// Version: 1.3                                                                                                 //
// Date: 17/10/2005                                                                                             //
// Author: Emilie WHEATLEY                                                                                      //
// Comments: Update to make the code more generic. Software compatible with SMT374 firmware v2                  //
//**************************************************************************************************************//
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <SMT_SDB.h>
#include <link.h>
#include "Smt370.h"

/*** CUSTOMIZABLE ***********************************************************************************************/
#define SDB16BIT    0             // 0: 32-bit firmware, 1: 16-bit firmware(ONLY FOR SMT365!!!)
#define READBACK    1
#define PATTERNSIZE 16*1024       // bytes
#define SINERATIO   256
#define CAPTURENB   3
#define CAPTURESIZE 32*1024      // bytes
#define SDBREADA    0
#define SDBREADB    1            // Used only for 16-bit SDB
#define SDBWRITEA   2 
#define SDBWRITEB   3            // Used only for 16-bit SDB
/****************************************************************************************************************/

#define BUF_SIZE    2*CAPTURESIZE
#define INDEX(x)    ((x&0xF0000000)>>28)
#define COMPORT0	   0
#define PI 		       3.1415926535897932384626433832795
#define ERROR(x)    {printf("ERROR: %s", x); return 1;}

unsigned int SetDACConfig (void);
unsigned int GetDACConfig (void);
void         Delay        (unsigned int i);
unsigned int SetPatternGen(void);
unsigned int DoCapture    (void);
unsigned int CopyToFile   (const char *FileName, short *buffer, unsigned int size);
unsigned int ReadData     (SMT_SDB *Sdb, unsigned int size, unsigned int *buffer, const char *FileNameA, const char *FileNameB);

static SMT_SDB *SdbRdA, *SdbRdB, *SdbWrA, *SdbWrB;   
static int Buf[BUF_SIZE/sizeof(int)];		   
#pragma DATA_SECTION (Buf, "idram");

static char * Registers[] = {	
 "REG0_DAC - AD9777 registers 0x0 0x1 and 0x2",
	"REG1_DAC - AD9777 registers 0x3 0x4 and 0x5",
	"REG2_DAC - AD9777 registers 0x6 0x7 and 0x8",
	"REG3_DAC - AD9777 registers 0x9 0xA and 0xB",
	"REG4_DAC - AD9777 registers 0xC and 0xD    ",
	"REG5_DAC - SMT370 Clock Management         ",
	"REG6_DAC - ADC control                     ",
	"REG7_DAC - Pattern Generator control       ",
	"REG8_DAC - Not Available                   ",
	"REG9_DAC - Not Available                   ",
	"REGA_DAC - Not Available                   ",
	"REGB_DAC - Not Available                   ",
	"REGC_DAC - Not Available                   ",
	"REGD_DAC - SMT370 Global Reset             ", 
	"REGE_DAC - DAC read-back                   ",
	"REGF_DAC - Setting regisers                "
};

static int DacSet[] = 	{ 	
 REG0_DAC|SDIO_DIR(0)|MSB_FIRST(0)|SW_RESET(0)|SLEEP_MODE(0)|POWER_DOWN(0)|DAC_1R2R_MODE(0)|PLL_LOCK(1)|
	INTERPOLATION(3)|MODULATION(3)|ZERO_STUFFING(1)|MIX_MODE(0)|PHASE(0)|DCLK_PLLLOCK(1)|
	DATA_SIGN(0)|PORT_MODE(0)|DCLK_STRENGHT(0)|DCLK_INVERT(0)|ONEPORTCLK(0)|IQSEL(0)|Q_FIRST(0),

	REG1_DAC|PLL_RATIO(0)|PLL_MODE(1)|CHARGE_PUMP(0)|PLL_CHRG_CTL(0)|IDAC_FINE_GAIN(0xFF),
				
	REG2_DAC|IDAC_COARS_GAIN(0xF)|IDAC_OFFSET(0)|IDAC_DIR(0),
				
	REG3_DAC|QDAC_FINE_GAIN(0xFF)|QDAC_COARS_GAIN(0xF)|DAC_QDAC_OFFSET_MSB(0),
				
 REG4_DAC|QDAC_DIR(0)|DAC_QDAC_OFFSET_LSB(0)|VERSION_NUMBER(0),
				
	REG5_CLOCK|ADC_FRQ(FRQ_50MHZ)|DAC_FRQ(FRQ_50MHZ)|ADCA_CLOCK_SEL(0)|ADCB_CLOCK_SEL(0)|DAC_CLOCK_SEL(0),
				
	REG6_ADC|ADCA_DECIMAT_FACTOR(0)|ADCB_DECIMAT_FACTOR(0)|ADC_EXT_TRIG_LEVEL(0)|ADC_EXT_TRIG_ENABLE(0)|ADCA_MODE(3)|ADCB_MODE(3),
				
	REG7_DAC,
						
	REGF_CFG			     
};
	    	 	
#define DACCFG  	    DAC_EXT_TRIG_ENABLE(0)|DAC_EXT_TRIG_LEVEL(0)|DAC_CHA_SEL(1)|DAC_CHB_SEL(1)
#define ADC_RUNNING 	REG6_ADC|ADCA_DECIMAT_FACTOR(0)|ADCB_DECIMAT_FACTOR(0)|ADC_EXT_TRIG_LEVEL(0)|ADC_EXT_TRIG_ENABLE(0)|ADCA_MODE(3)|ADCB_MODE(3)	
#define ADC_STOPPED 	REG6_ADC|ADCA_DECIMAT_FACTOR(0)|ADCB_DECIMAT_FACTOR(0)|ADC_EXT_TRIG_LEVEL(0)|ADC_EXT_TRIG_ENABLE(0)|ADCA_MODE(0)|ADCB_MODE(0)
		   
static int DacGet[] = 	{ 	
 0,	// REG0_DAC,
	0,	// REG1_DAC,
	0, // REG2_DAC,
	0,	// REG3_DAC,
	0,	// REG4_DAC,
	0, // Clock Management,
	0, // ADC Control,
	0, // Pattern Generator Control
	0
};

int main()
{
	unsigned int i;
	
	printf("\n\n=================================\n");
	printf("| SMT8036_SMT8046 TEST SOFTWARE |\n");
	printf("=================================\n");
	printf("\n    / \\");	
#if SDB16BIT	
	printf("\n   / | \\   This test is for a DSP module programmed with a 16-bit SDB interface!");
	printf("\n  /  |  \\  For 32-bit SDB interface: Change the #define SDB16BIT in test.c and rebuild the application");
#else	
	printf("\n   / | \\   This test is for a DSP module programmed with a 32-bit SDB interface!");
	printf("\n  /  |  \\  For 16-bit SDB interface (365/365E ONLY!!!): Change the #define SDB16BIT in test.c and rebuild the application");
#endif	
	printf("\n /___o___\\\n\n");
	
	
	// SDB allocation 
	SdbRdA = SMT_SDB_Claim(SDBREADA);
	if (!SdbRdA) ERROR("Cannot claim SDB (SDBREADA)\n");		
	SdbWrA = SMT_SDB_Claim(SDBWRITEA);
	if (!SdbWrA) ERROR("Cannot claim SDB (SDBWRITEA)\n");
	
	if (SDB16BIT) {
 	SdbRdB = SMT_SDB_Claim(SDBREADB);
 	if (!SdbRdB) ERROR("Cannot claim SDB (SDBREADB)\n"); 	
 	SdbWrB = SMT_SDB_Claim(SDBWRITEB);
 	if (!SdbWrB) ERROR("Cannot claim SDB (SDBWRITEB)\n");
 }
		
	// Buffer allocation 
	if (!Buf) ERROR("Cannot allocate Buf\n");
	printf("Buffer address: 0X%08x\n\n", Buf);

	// SMT370 Global Reset
	printf("\n* Resetting SMT370 \n");
	link_out_word(REGD_RESET, COMPORT0);	// SMT370 Reset										

 // Configuring DAC and CLock synthesizers
	if (SetDACConfig()) return 1;
	
 #if READBACK
 // Reading Back DAC SPI registers
	if (GetDACConfig()) return 1;	
	#endif
			
 // Pattern Generator
 if (SetPatternGen()) return 1;
	
	// Capture
	if (DoCapture()) return 1;
	
	printf("\n* DONE\n\n");
	return 0;
}










unsigned int SetDACConfig(void)
{
	unsigned int i;
	
	printf("\n* Setting internal registers \n");	
	link_out_word(REGD_RESET, COMPORT0);
	Delay(100000); 
	for (i=0; i<sizeof(DacSet)/sizeof(int); i++) {
		printf("\t%s -> 0x%08X \n", Registers[INDEX(DacSet[i])], DacSet[i]);					
		link_out_word(DacSet[i], COMPORT0);	
		Delay(100000);
	}	
	return 0;	
}

unsigned int GetDACConfig(void)
{
	int i=0, v0,v1,v2;
	int BoardOption;		   
	
	printf("\n* Reading Back DAC SPI registers \n");
	printf("\tReading-back and checking %d Registers\n", sizeof(DacGet)/sizeof(int));
	
	// Send command
	link_out_word(REGE_DAC, COMPORT0);	  
	
	// Get Board ADC coupling option
	link_in_word(&BoardOption, COMPORT0);
	printf("\tBoard ADC input coupling : %0x \n", BoardOption);
	
	// Get three first entire register first
	for (i=1; i<4; i++) {
  link_in_word(&v0, COMPORT0);
	 DacGet[i+4] = v0;
	}
	
	// Get DAC registers        	
	for (i=4; i<(sizeof(DacGet)/sizeof(int)); i++) {	
		v0=v1=v2=0;
		link_in_word(&v0, COMPORT0);		
		link_in_word(&v1, COMPORT0);		
		if (i<(sizeof(DacGet)/sizeof(int)-1)) {    // HACK!!!! TAKE OUT !!!
			link_in_word(&v2, COMPORT0);		
		}
		DacGet[i-4] = ((v0&0xFF)<<16) | ((v1&0xFF)<<8) | ((v2&0xFF)<<0);
 } 
 
 // Print result
	for (i=0; i<sizeof(DacGet)/sizeof(int); i++) {				
		printf("\t%s ", Registers[INDEX(DacSet[i])]);					
		if (DacGet[i]!=(DacSet[i]&0x0FFFFFFF)) { 
			printf(" -> ERROR, is 0x%08X should be 0x%08x \n", DacGet[i], (DacSet[i]&0x0FFFFFFF));
		} else {	  
			printf(" -> OK \n");			
		}
 } 
 return 0;
}

void Delay(unsigned int i)
{
 volatile unsigned int j; 
 for(i=0;i<100000;i++){}	
}

unsigned int SetPatternGen(void)
{signed int I=0;
	signed int Q=0;
	int c;
	int d;
   FILE *fid;
  FILE *fid1;
 int *Pattern = 0;	
 unsigned int i;
 fid=fopen("real.bin","rb");  
 fid1=fopen("image.bin","rb");   
   if((fid==NULL)||(fid1==NULL))                  
   {                              
    printf("open file error\n");	
   }  
 printf("\n* Loading Pattern Generator with a sine\n");	
 
	// Generating Buffer
	Pattern = (int *)memalign(128, PATTERNSIZE*2);	//以字節為單位分配內存,每個采樣點用16位表示 ,即2個字節	
 if (!Pattern) ERROR("Cannot allocate Pattern\n");  
	/*for (i=0;i<PATTERNSIZE*2/4;i++) {
	 *(Pattern+i)=((int)(31*1024*(sin(2*PI*(2*i)/(PATTERNSIZE/SINERATIO))))) + (((int)(31*1024*(sin(2*PI*(2*i+1)/(PATTERNSIZE/SINERATIO)))))<<16);	
	}*/
	for (i=0;i<PATTERNSIZE*2/4;i++) {
		fread(&c,4,1,fid);
		I=c;
		fread(&d,4,1,fid1);
		Q=d;
		//printf("I=%d,",I);
		//printf("Q=%d\n",Q);
	 *(Pattern+i)=((int)(31*1024*I)) + (((int)(31*1024*Q))<<16);	
	}
	printf("\tAddress Pattern: 0X%08x\n", Pattern);
	printf("\tPattern Size: %d (bytes)\n", PATTERNSIZE);		
 printf("\tSine Ratio: %d\n", SINERATIO);										
		
	// Load Pattern Size		
	link_out_word(REG7_DAC | DACCFG | PAT_LD_SIZE | ((PATTERNSIZE/2)&0xFFFFF), COMPORT0);	
	
	// Send data over SHBB
	if (SDB16BIT) {
		SMT_SDB_Control(SdbWrA, SDB_CLROF);	
		SMT_SDB_Control(SdbWrB, SDB_CLROF);	
		SMT_SDB_Write(SdbWrA, PATTERNSIZE, Pattern);		// size in bytes 16-bits first channel - limitation to size input DAC channel in FPGA
		SMT_SDB_Write(SdbWrB, PATTERNSIZE, Pattern);		// size in bytes 16-bits second channel
	} else {
	 SMT_SDB_Control(SdbWrA, SDB_CLROF);	
	 SMT_SDB_Write(SdbWrA, 2*PATTERNSIZE, Pattern);	// size in bytes					
	}
		
 // Start Pattern Generator
	printf("\n* Starting Pattern Generator\n");			
	link_out_word(REG7_DAC | DACCFG | PAT_START, COMPORT0);		 
	
	if (Pattern) free(Pattern);
	
	return 0;
}

unsigned int CopyToFile(const char *FileName, short *buffer, unsigned int size)
{
 FILE *file;
 unsigned int i;
 
	file = fopen(FileName,"w");
	if (!file) ERROR("Cannot open file\n");
 for (i=0; i<size/4; i++)	fprintf(file, "%d\n",buffer[i]);
	fclose(file); 
	
	return 0; 							
}		

unsigned int DoCapture(void)
{
	unsigned int j=0;																			
	char FileNameA[64];
	char FileNameB[64];
		
	printf("\n* Capturing data \n");			
	printf("\tCapture Size: %d 16-bit samples\n", CAPTURESIZE/2); 
 printf("\tNumber of Capture: %d\n\n", CAPTURENB);

	link_out_word(ADC_RUNNING, COMPORT0);
		 
	for (j=0 ; j<CAPTURENB ; j++) {
		printf("\tCapturing %d \n", j);		
		sprintf(FileNameA, "CAPTUREA%d.txt", j);
  sprintf(FileNameB, "CAPTUREB%d.txt", j);  	
		if (SDB16BIT) {
			if (ReadData(SdbRdA, CAPTURESIZE, (unsigned int*)Buf, FileNameA, 0)) return 1; // Channel A			
			if (ReadData(SdbRdB, CAPTURESIZE, (unsigned int*)Buf, FileNameB, 0)) return 1; // Channel B
		}	else {
		 if (ReadData(SdbRdA, CAPTURESIZE*2, (unsigned int*)Buf, FileNameA, FileNameB)) return 1;		
  }	
	}	
	return 0;
}

unsigned int ReadData(SMT_SDB *Sdb, unsigned int size, unsigned int *buffer, const char *FileNameA, const char *FileNameB)
{
 unsigned int i; 
 
 SMT_SDB_Control(Sdb, SDB_CLRIF);	// Clear input fifo prior to read operation			 						   								
	SMT_SDB_Read(Sdb, size, buffer); // size in byte - Each sample is 2 byte-wide	 			 
	
	if (!FileNameB) {
	 CopyToFile(FileNameA, (short *)buffer, size);
	} else {
	 short *tmp = (short *)malloc(size/2);
  if (!tmp) ERROR("ERROR: Cannot allocate temporary buffer\n");		
	
	 // Copy data to file
 	for (i=0; i<(size/4); i++)	tmp[i] = (buffer[i]>>0)&0xFFFF;
 	CopyToFile(FileNameA, tmp, size/2);  
  for (i=0; i<(size/4); i++)	tmp[i] = (buffer[i]>>16)&0xFFFF;
  CopyToFile(FileNameB, tmp, size/2); 
  
  if (tmp) free(tmp);
 }
 
 return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久先锋影音av| 精品国产免费人成在线观看| 国产一区二区三区黄视频 | 日韩码欧中文字| 国产丝袜欧美中文另类| 久久一二三国产| 久久久电影一区二区三区| 精品伦理精品一区| 国产欧美一区二区三区沐欲 | 国产午夜三级一区二区三| 久久一留热品黄| 中文一区一区三区高中清不卡| 欧美激情一区二区三区不卡| 综合久久综合久久| 一区二区免费在线播放| 亚洲va在线va天堂| 久久精品国产澳门| 国产精品一区二区三区网站| 高清日韩电视剧大全免费| 99久久综合99久久综合网站| 欧美图区在线视频| 7777精品伊人久久久大香线蕉最新版| 日韩一区二区三区视频在线观看| 日韩免费性生活视频播放| 久久青草欧美一区二区三区| 中文字幕在线不卡一区二区三区| 亚洲在线视频网站| 美女网站视频久久| 成人精品视频一区| 欧洲精品一区二区| 日韩精品一区二区三区中文精品| 日本一区二区三区电影| 一区二区三区产品免费精品久久75| 天堂av在线一区| 丁香激情综合国产| 欧美日韩国产精品成人| 国产欧美日韩精品在线| 亚洲精品国产品国语在线app| 美女国产一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 色婷婷国产精品| 2023国产精品自拍| 亚洲综合图片区| 丁香啪啪综合成人亚洲小说| 欧美日韩一区中文字幕| 欧美韩国日本不卡| 青青草精品视频| 色婷婷av一区二区三区之一色屋| 2021国产精品久久精品| 亚洲精品乱码久久久久久久久 | 国产精品系列在线播放| 欧美日韩一级片在线观看| 国产欧美日韩不卡免费| 裸体一区二区三区| 日本久久一区二区| 国产精品人成在线观看免费| 精品一区二区三区免费播放| 欧美日韩性生活| 成人欧美一区二区三区1314 | 国产视频一区在线观看| 麻豆久久久久久久| 欧美人xxxx| 亚洲国产欧美日韩另类综合| 91在线视频18| 国产精品二区一区二区aⅴ污介绍| 久久精品二区亚洲w码| 欧美日韩美女一区二区| 一二三四区精品视频| 91小视频在线| 最新欧美精品一区二区三区| 不卡一卡二卡三乱码免费网站| 久久综合给合久久狠狠狠97色69| 日本不卡一区二区三区高清视频| 欧美日韩国产a| 午夜电影网亚洲视频| 91福利社在线观看| 亚洲激情校园春色| 91丨九色丨国产丨porny| 亚洲特黄一级片| av成人动漫在线观看| 亚洲欧洲三级电影| 99久久免费精品高清特色大片| 国产精品免费aⅴ片在线观看| 国产一区 二区 三区一级| www欧美成人18+| 丁香网亚洲国际| 亚洲欧美另类小说| 欧美色视频在线观看| 偷偷要91色婷婷| 日韩限制级电影在线观看| 久久99久久久欧美国产| 精品国产乱码久久久久久久| 丁香激情综合国产| 亚洲乱码精品一二三四区日韩在线| 成人av网在线| 亚洲一级电影视频| 欧美精品色综合| 国产麻豆91精品| 国产精品高潮呻吟久久| 欧美最猛性xxxxx直播| 午夜精品久久久久久久久| 日韩三级在线观看| 不卡一区二区在线| 亚洲成av人片一区二区| 精品精品国产高清a毛片牛牛| 成人综合日日夜夜| 亚洲大片精品永久免费| 欧美www视频| 97久久超碰国产精品| 日韩国产在线一| 国产人伦精品一区二区| 欧美日韩亚洲综合在线| 韩国精品主播一区二区在线观看 | 亚洲成人免费在线| 精品国产乱码久久久久久影片| 99久久777色| 日韩精品三区四区| 国产女人aaa级久久久级| 欧美吻胸吃奶大尺度电影| 国产精品综合久久| 性做久久久久久久免费看| 久久久国产综合精品女国产盗摄| 欧美亚洲国产一区二区三区va| 久久国产欧美日韩精品| 亚洲美女视频一区| 久久久精品tv| 欧美电影免费观看高清完整版在线观看 | 久久久久久久国产精品影院| 在线观看一区不卡| 成人在线综合网站| 蜜桃视频一区二区三区在线观看| 国产精品理伦片| 精品国产成人系列| 欧美性大战xxxxx久久久| 99久久婷婷国产综合精品电影| 精品一区二区综合| 午夜精品久久久久久久久久久 | 国产老女人精品毛片久久| 天天影视网天天综合色在线播放| 欧美激情综合在线| 亚洲精品一区二区精华| 欧美男男青年gay1069videost| 色噜噜狠狠一区二区三区果冻| 国产成人精品午夜视频免费| 美女视频免费一区| 日韩经典一区二区| 亚洲第一成年网| 一区二区不卡在线播放| 亚洲精品成人少妇| 亚洲同性同志一二三专区| 中文字幕制服丝袜一区二区三区 | 精品少妇一区二区三区免费观看| 欧美三级在线看| 日本精品一级二级| 欧美少妇一区二区| 一本大道综合伊人精品热热| 色综合久久中文综合久久牛| 成人sese在线| 欧美三级电影在线观看| 日本道色综合久久| 欧美色中文字幕| 欧美性色综合网| 欧美一区二区视频观看视频| 欧美另类z0zxhd电影| 91精品一区二区三区在线观看| 欧美肥妇bbw| 久久伊人中文字幕| 国产午夜亚洲精品不卡| 国产精品久久久久久久午夜片| 国产精品福利一区二区| 亚洲卡通欧美制服中文| 亚洲国产美女搞黄色| 日本欧美韩国一区三区| 国模娜娜一区二区三区| 国产福利精品导航| 91免费观看国产| 欧美日韩中字一区| 精品成人私密视频| 中文字幕第一区综合| 亚洲精品中文在线影院| 婷婷久久综合九色综合绿巨人 | 亚洲一区在线看| 免费在线看成人av| 国产黑丝在线一区二区三区| 97se亚洲国产综合在线| 91精品欧美综合在线观看最新| 国产午夜亚洲精品理论片色戒| 一区二区三区国产豹纹内裤在线| 日韩精品亚洲一区| 国产盗摄女厕一区二区三区| 欧美网站大全在线观看| 久久综合九色综合97婷婷女人 | 国产女人18水真多18精品一级做 | 国产一区二区视频在线| k8久久久一区二区三区 | 国产91对白在线观看九色| 日本久久精品电影| 久久久久国产精品免费免费搜索| 亚洲免费av观看| 九九久久精品视频|